Python SDK
Cliente oficial de Claix en Python
Endpoint
pip install claix-aiclaix-ai es el SDK Python tipado de la API de inteligencia documental de Claix (OpenAPI 1.8.2). El import sigue siendo from claix import ClaixClient. Sirve para extracción, Modo agente, documentos persistidos y espacios de conocimiento — o para enchufar el mismo cliente en LangChain, LangGraph, CrewAI y LlamaIndex.
Requiere Python ≥ 3.10. La autenticación es la misma API key que REST, MCP y A2A: cabecera x-api-key, o variable de entorno CLAIX_API_KEY.
El mismo cliente también está en TypeScript: npm install claix-ai, con tools para LangChain.js, CrewAI y LlamaIndex.TS.
1. Código, paquete y docs relacionadas
- GitHub · Gaelproodoos/claix-python — código, issues y ejemplos
- PyPI · claix-ai — paquete instalable (nombre de import: claix)
- TypeScript SDK — npm install claix-ai, el mismo mapa de llamadas
- npm · claix-ai — paquete del SDK de TypeScript
- GitHub · Gaelproodoos/claix-typescript — código del SDK de TypeScript
- Especificación OpenAPI — contrato HTTP que envuelve el SDK
- Protocolo A2A — superficie JSON-RPC si no usas Python
- Servidor MCP — IDEs y automatizaciones sin un proceso Python
2. Instalación
pip install claix-ai pip install 'claix-ai[langchain]' pip install 'claix-ai[crewai]' pip install 'claix-ai[llamaindex]' pip install 'claix-ai[all]'
El extra base trae httpx y Pydantic v2. Los extras de framework añaden los adapters documentados en esta sección.
3. Autenticación
Recomendado — variable de entorno:
export CLAIX_API_KEY=ck_...
O pasa api_key= a ClaixClient / AsyncClaixClient. El cliente envía x-api-key en cada petición (la API también acepta Bearer). Timeout por defecto 120s, con reintentos en 429, 502, 503, 504 y errores de transporte.
4. Inicio rápido
from claix import ClaixClient
client = ClaixClient() # lee CLAIX_API_KEY
result = client.extract.pdf("invoice.pdf", schema_id="3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f")
print(result.data)Cliente asíncrono:
from claix import AsyncClaixClient
async with AsyncClaixClient() as client:
doc = await client.extract.pdf("invoice.pdf", schema_id="...")
answers = await client.context.ask(doc.document_id, ["¿Cuál es el total?"])5. Mapa de métodos (OpenAPI 1.8.2)
| Método SDK | HTTP |
|---|---|
| client.extract.pdf(..., is_agent_mode=False) | POST /api/pdf-json o POST /agent/pdf-json |
| client.extract.excel(...) | POST /api/excel-json o POST /agent/excel-json |
| client.extract.document(...) | POST /api/doc-json o POST /agent/doc-json |
| client.extract.image(...) | POST /api/img-json o POST /agent/img-json |
| client.extract.text(content, schema_id, ...) | POST /api/txt-json o POST /agent/txt-json |
| client.extract.audio(...) | POST /api/audio-json o POST /agent/audio-json |
| client.extract.json_to_excel(schema_id=..., data=...) | POST /api/json-excel |
| client.context.get(document_id) | GET /get-document/{id} |
| client.context.ask(document_id, questions) | POST /document-context/{id} (máx. 5 × 400 caracteres) |
| client.context.delete(document_id) | DELETE /delete-document/{id} |
| client.context.replace(document_id, new_content_document_id) | POST /replace-document |
| client.spaces.create(name) | POST /create-space |
| client.spaces.add(document_id, space_id) | POST /add-space |
| client.spaces.ask(space_id, questions) | POST /space-context/{id} |
| client.spaces.remove_document(document_id) | DELETE /remove-document-from-space/{id} |
| client.spaces.delete(space_id) | DELETE /delete-space/{id} |
| client.schemas.list() | GET /api/schemas |
| client.schemas.get(schema_id) | GET /api/get-schema/{schema_id} |
| client.schemas.create(...) | POST /api/create-schema |
| client.schemas.update(schema_id, ...) | PUT /api/update-schema/{schema_id} |
| client.schemas.delete(schema_id) | POST /api/delete-schema |
Las preguntas se envían como { question, format } (string, int, boolean, timestamp o array). Un string suelto se manda como format: "string". ia_response sigue el format pedido, o null si falta evidencia. Si la verificación de fuente está activada en consulta a documentos o a espacio de conocimiento, cada ítem pasa a {value, source}. Extracción y modo agente incluyen log_id; con verificación de fuente en el schema cada campo es {value, source}.
6. Errores
Todos heredan de ClaixError y exponen status_code más el payload {error, detalle}: ClaixAuthenticationError (401), ClaixNotFoundError (404), ClaixValidationError (400/413/422), ClaixRateLimitError (429), ClaixTimeoutError, ClaixConnectionError, ClaixAPIError (5xx).