Skip to main content

Cortex Agent SDK

SDK async para construir agentes con una API pequeña y control explícito del loop, las tools, el historial y el ciclo de vida.

Cortex Agent SDK está en alfa. La API puede cambiar antes de la versión 0.1.0.

Requisitos

  • Python >=3.13.
  • Una credencial del provider elegido.

Instalación

Para OpenAI Responses:

uv add "cortex-agent-sdk[openai]"

También puede instalarse con pip:

python -m pip install "cortex-agent-sdk[openai]"

El core instala únicamente Pydantic y JSON Schema. Los providers y transportes se habilitan mediante extras opcionales:

  • openai: engine de OpenAI Responses.
  • gateway: conexión mediante un endpoint compatible con OpenAI Responses.
  • redis: sesiones persistentes en Redis.
  • postgres: sesiones persistentes en PostgreSQL.
  • all: todas las integraciones disponibles.

Uso mínimo

El SDK oficial de OpenAI lee OPENAI_API_KEY del entorno.

import asyncio

from cortex_agent_sdk import Agent
from cortex_agent_sdk.openai import OpenAIEngine, OpenAIOptions


async def main() -> None:
    options = OpenAIOptions(max_output_tokens=128, reasoning_effort="low")
    async with Agent(OpenAIEngine("gpt-5.6-luna", options=options)) as agent:
        result = await agent.run("Responde únicamente: hola")
    print(result.text)


asyncio.run(main())

Gateway compatible

OpenAIEngine también acepta un endpoint que conserve el protocolo de OpenAI Responses:

import os

from cortex_agent_sdk.gateway import OpenAICompatibleGateway
from cortex_agent_sdk.openai import OpenAIEngine


gateway = OpenAICompatibleGateway(
    url=os.environ["CORTEX_GATEWAY_URL"],
    api_key=os.environ["CORTEX_GATEWAY_API_KEY"],
)
engine = OpenAIEngine("your-model", gateway=gateway)

Tools

Una función async decorada puede exponerse al modelo como respuesta final:

import asyncio

from cortex_agent_sdk import Agent, final_answer
from cortex_agent_sdk.openai import OpenAIEngine


@final_answer
async def sumar(a: int, b: int) -> str:
    """Suma dos enteros."""
    return str(a + b)


async def main() -> None:
    instructions = "Para sumar, usa siempre la herramienta sumar."
    async with Agent(
        OpenAIEngine("gpt-5.6-luna"),
        instructions=instructions,
        tools=(sumar,),
    ) as agent:
        result = await agent.run("Suma 20 y 22.")
    print(result.text)


asyncio.run(main())

Capacidades del alfa

  • Loop async acotado.
  • Tools async con schema inferido o explícito.
  • Historial y sesiones en memoria, Redis o PostgreSQL.
  • Hooks locales.
  • Timeouts para providers y tools.
  • Respuesta tipada con texto, usage, razón de salida y respuesta raw.
  • OpenAI Responses directo o mediante un gateway compatible.

Google conserva un namespace estable para la evolución multiproveedor, pero todavía no incluye un engine funcional. Anthropic y streaming están fuera de este alfa.

Sesiones persistentes

Redis y PostgreSQL implementan el mismo contrato de sesiones que el store en memoria. El historial queda aislado por session_id, ligado al provider y modelo originales, y protegido con lease renovable, fencing token y compare-and-swap.

Redis no requiere inicialización de schema:

import os

from cortex_agent_sdk import Agent
from cortex_agent_sdk.openai import OpenAIEngine
from cortex_agent_sdk.redis import RedisSessionStore


store = RedisSessionStore(os.environ["REDIS_URL"])
agent = Agent(
    OpenAIEngine("gpt-5.6-luna"),
    session_store=store,
    own_session_store=True,
)
result = await agent.run("Hola", session_id="producto:tenant:usuario")
await agent.aclose()

PostgreSQL exige crear su tabla de forma explícita una vez:

import os

from cortex_agent_sdk.postgres import PostgresSessionStore


store = PostgresSessionStore(os.environ["POSTGRES_URL"])
await store.setup()

Una tarea periódica puede ejecutar await store.cleanup_expired() para vaciar historiales vencidos que nunca volvieron a solicitarse. El row mínimo permanece para conservar el fencing counter.

Agent.aclose() hace un cierre ordenado: deja de aceptar turnos nuevos, espera los turnos activos y después cierra los recursos que posee. El límite se configura con AgentOptions.shutdown_timeout_seconds. Si vence, el SDK no cancela el turno ni cierra conexiones; regresa RUNTIME_CIERRE_TIMEOUT para que la aplicación pueda reintentar el cierre.

Una sesión dañada o deliberadamente descartada se elimina mediante await agent.reset_session(session_id).

Licencia

Apache License 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cortex_agent_sdk-0.0.2.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cortex_agent_sdk-0.0.2-py3-none-any.whl (43.9 kB view details)

Uploaded Python 3

File details

Details for the file cortex_agent_sdk-0.0.2.tar.gz.

File metadata

  • Download URL: cortex_agent_sdk-0.0.2.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cortex_agent_sdk-0.0.2.tar.gz
Algorithm Hash digest
SHA256 6e24f273c41be3afc15b711968470badb9d2caba381fde9b3439c0b8b48f52ae
MD5 353370a06a3c8e7284daf699722a1619
BLAKE2b-256 7ce2228708df2de4292970a622f8add028b1ad818541eeeec8a7ef1e076ec985

See more details on using hashes here.

File details

Details for the file cortex_agent_sdk-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: cortex_agent_sdk-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 43.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cortex_agent_sdk-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b984a97db59374cd2d5112c0ecf4eb9c82c0790326eca38eb38d7a96a9972ce1
MD5 3ff928330b819e8b6b2a612f61803d84
BLAKE2b-256 b3e58c1393ff79c9b8f16eaef59e4caccda1c5a964a73426425d735473a5a228

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page