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.Sessioncortex_agent_sdk.sessions.SessionStorecortex_agent_sdk.sessions.MemorySessionStorecortex_agent_sdk.redis.RedisSessionStorecortex_agent_sdk.errores.AppErrorcortex_agent_sdk.errores.CodigoErrorcortex_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f09cccc305e48e7a38e570f384de83aa5d2ee3ff825592b7c2350b6421863a67
|
|
| MD5 |
4f232958eb851902f35991ba511673b8
|
|
| BLAKE2b-256 |
dfcbdb323dad830afd5e080f2c930efca90b3f6eeb859afffa083d79fc76e5a3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8630f57a860a668f36e6a52d451f62365000921d7f8b2f666c0bd1fa45f6b814
|
|
| MD5 |
086f752c9a2e79ae227344fc8c09d7b9
|
|
| BLAKE2b-256 |
0e3b42fbb281d050cf834913bac5d1692f2ac21939313141dda0b2bb948980eb
|