Skip to main content

Cortex Agent SDK

Cortex agrega sesiones Memory y Redis a agentes multiprovider construidos directamente con Pydantic AI.

No implementa otro loop, otra capa de tools ni otra API de agentes. Pydantic AI conserva el control de providers, modelos, tools, tipado, RunContext, hooks, límites, approvals, outputs, usage e historial. Cortex sólo cubre la pieza que Pydantic AI no incluye: persistencia conversacional con un turno activo por sesión.

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

Requisitos

  • Python >=3.13.
  • Pydantic AI >=2.27,<3, con Google y OpenAI instalados por Cortex.

Instalación

Google, OpenAI y sesiones en memoria:

uv add cortex-agent-sdk

Google, OpenAI y Redis:

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

La instalación base incluye Google y OpenAI, además de los endpoints compatibles con OpenAI. Otros providers pueden agregarse desde los extras oficiales de Pydantic AI cuando un producto realmente los necesite. Cortex no implementa adapters paralelos.

Uso

El agente es el Agent nativo de Pydantic AI. El store entrega el historial bajo exclusión y lo guarda cuando session.replace(...) marca un resultado completo.

import asyncio

from pydantic_ai import Agent

from cortex_agent_sdk.sessions import MemorySessionStore


async def main() -> None:
    agent = Agent("openai-responses:gpt-5.6-luna")
    sessions = MemorySessionStore()

    async with agent, sessions:
        async with sessions.turn("usuario:42") as session:
            result = await agent.run(
                "Recuerda que mi color favorito es verde.",
                message_history=session.messages,
                conversation_id=session.session_id,
            )
            session.replace(result.all_messages())

    print(result.output)


asyncio.run(main())

replace() es explícito por diseño:

  • Si no se llama, el store no modifica el historial.
  • Si el bloque termina con una excepción, el store no guarda el reemplazo.
  • Si guardar falla, la excepción se propaga.

Redis

from cortex_agent_sdk.redis import RedisSessionStore

sessions = RedisSessionStore(
    "redis://localhost:6379/0",
    key_prefix="mi-producto:sesiones:v1",
    ttl_seconds=86_400,
)

Redis mantiene un lease renovable durante todo el turno. Mientras conserva el lease, dos procesos no pueden usar la misma sesión al mismo tiempo y las sesiones distintas siguen siendo concurrentes. Si la renovación falla, Cortex interrumpe el turno propietario y no guarda como owner obsoleto. El historial se serializa con ModelMessagesTypeAdapter, el formato público de Pydantic AI.

Al cambiar desde el runtime anterior, usa un prefix nuevo. Los formatos no son compatibles y Cortex no intenta convertir el historial legacy.

Endpoint compatible con OpenAI

Pydantic AI puede conectarse directamente. Para un endpoint que no debe reintentar peticiones, configura el provider una vez:

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIResponsesModel
from pydantic_ai.providers.openai import OpenAIProvider

provider = OpenAIProvider(
    base_url="https://example.com/v1",
    api_key="...",
)
provider.client.max_retries = 0
model = OpenAIResponsesModel("gpt-5.6-luna", provider=provider)
agent = Agent(model)

El context manager de Agent administra el transporte del provider.

Migración desde el runtime anterior

Antes Ahora
cortex_agent_sdk.Agent pydantic_ai.Agent
OpenAIEngine OpenAIResponsesModel + OpenAIProvider
OpenAICompatibleGateway OpenAIProvider(base_url=..., api_key=...)
OpenAIOptions OpenAIResponsesModelSettings y argumentos de Agent.run
@tool e Injected tools nativas + RunContext[Deps]
ToolBinding FunctionToolset o tools preparadas por run
AgentHooks pydantic_ai.capabilities.Hooks
turn_finished Hooks(after_run=...)
history_transform Hooks(before_model_request=...)
fallback_answer política local del producto sobre AgentRunResult
AgentOptions UsageLimits, settings del modelo y argumentos de Agent
AgentResult.text AgentRunResult.output
SessionStore.acquire SessionStore.turn + Session.replace
agent.reset_session(id) store.reset(id)

No se ofrece una capa de compatibilidad. Mantenerla volvería a duplicar la API y el runtime de Pydantic AI.

Superficie pública

  • cortex_agent_sdk.sessions.Session
  • cortex_agent_sdk.sessions.SessionStore
  • cortex_agent_sdk.sessions.MemorySessionStore
  • cortex_agent_sdk.redis.RedisSessionStore
  • cortex_agent_sdk.errores.AppError
  • cortex_agent_sdk.errores.CodigoError
  • cortex_agent_sdk.errores.Severidad

El loop, tools, hooks, approvals, modelos y resultados se importan desde pydantic_ai.

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.2.1.tar.gz (12.2 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.2.1-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cortex_agent_sdk-0.2.1.tar.gz
  • Upload date:
  • Size: 12.2 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.2.1.tar.gz
Algorithm Hash digest
SHA256 f09cccc305e48e7a38e570f384de83aa5d2ee3ff825592b7c2350b6421863a67
MD5 4f232958eb851902f35991ba511673b8
BLAKE2b-256 dfcbdb323dad830afd5e080f2c930efca90b3f6eeb859afffa083d79fc76e5a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cortex_agent_sdk-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 16.1 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.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8630f57a860a668f36e6a52d451f62365000921d7f8b2f666c0bd1fa45f6b814
MD5 086f752c9a2e79ae227344fc8c09d7b9
BLAKE2b-256 0e3b42fbb281d050cf834913bac5d1692f2ac21939313141dda0b2bb948980eb

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