GPU para frameworks de agentes
Dé a un agente de LangChain, LlamaIndex, OpenAI Agents SDK o Claude Agent SDK herramientas GPU con topes de costo estrictos, y detenga sus sesiones al salir.
Cuatro pequeños paquetes de Python dan a un agente las herramientas GPU de Node Lodge: listar máquinas, consultar el saldo, lanzar una sesión, seguirla y detenerla. Comparten un toolkit que guarda sus topes de costo y detiene cada sesión lanzada por el agente cuando su código termina con él.
| Paquete | Framework |
|---|---|
nodelodge-langchain |
LangChain |
nodelodge-llamaindex |
LlamaIndex |
nodelodge-agents[openai] |
OpenAI Agents SDK |
nodelodge-agents[claude] |
Claude Agent SDK |
Para los agentes que hablan MCP de forma nativa, como Claude Desktop o Claude Code, use el servidor MCP.
Los topes
from nodelodge.agent_tools import GpuToolkit
with GpuToolkit(max_cost_usd_per_session=5, max_total_usd=20) as toolkit:
... # give the toolkit's tools to your agent
# every session the agent launched is stopped here
max_cost_usd_per_sessiones obligatorio. Un lanzamiento por encima se rechaza antes de enviar nada a Node Lodge.max_total_usdlimita la suma de los presupuestos de las sesiones que lanza este toolkit.- Node Lodge aplica además los límites de la clave de API: dé al agente su propia clave, con Spending limits, en Keys.
- Salir del bloque
with, llamar atoolkit.close()o el fin del proceso de Python detiene cada sesión que lanzó el toolkit. - Un rechazo (un tope, su crédito, un límite de la clave, una entrada no válida) llega al modelo como un error con su motivo, para que se detenga y se lo indique en lugar de reintentar con más.
La clave proviene de NODELODGE_API_KEY, la clave SSH de ~/.ssh/id_ed25519.pub, y la dirección autorizada a conectarse es su dirección IPv4 pública. Cada una puede pasarse a GpuToolkit en su lugar.
LangChain
from langchain.agents import create_agent
from nodelodge_langchain import nodelodge_tools
with GpuToolkit(max_cost_usd_per_session=5) as toolkit:
agent = create_agent("anthropic:claude-sonnet-5-5", tools=nodelodge_tools(toolkit))
agent.invoke({"messages": [{"role": "user", "content": "Launch the cheapest GPU with 48 GB of VRAM."}]})
LlamaIndex
from llama_index.core.agent.workflow import FunctionAgent
from nodelodge_llamaindex import nodelodge_tools
with GpuToolkit(max_cost_usd_per_session=5) as toolkit:
agent = FunctionAgent(tools=nodelodge_tools(toolkit), llm=llm)
await agent.run("Launch the cheapest GPU with 48 GB of VRAM.")
OpenAI Agents SDK
from agents import Agent, Runner
from nodelodge_agents import openai_agents_tools
with GpuToolkit(max_cost_usd_per_session=5) as toolkit:
agent = Agent(name="gpu-ops", tools=openai_agents_tools(toolkit))
result = await Runner.run(agent, "Launch the cheapest GPU with 48 GB of VRAM.")
Lanzar y detener una sesión pausan la ejecución hasta su aprobación (result.interruptions en el SDK). Pase require_approval=False para que el agente actúe solo, dentro de los topes.
Claude Agent SDK
from claude_agent_sdk import ClaudeAgentOptions, query
from nodelodge_agents import claude_allowed_tools, claude_mcp_server
with GpuToolkit(max_cost_usd_per_session=5) as toolkit:
options = ClaudeAgentOptions(
mcp_servers={"nodelodge": claude_mcp_server(toolkit)},
allowed_tools=claude_allowed_tools(["list_offers", "get_balance", "get_session", "list_sessions"]),
)
async for message in query(prompt="Launch the cheapest GPU with 48 GB of VRAM.", options=options):
print(message)
Las herramientas se ejecutan en su proceso como un servidor MCP integrado. Aprobar de antemano solo las herramientas de lectura, como arriba, deja el lanzamiento y la detención sujetos a la solicitud de permiso del SDK.
Herramientas
| Herramienta | Qué hace |
|---|---|
list_offers |
Máquinas reservables ahora, de la más barata a la más cara, con GPU, VRAM, precio por hora y ubicación. |
get_balance |
Crédito disponible para una nueva sesión y lo que el toolkit aún puede gastar. |
launch_session |
Inicia una máquina con un presupuesto. max_cost_usd es obligatorio, se reserva sobre su crédito y el toolkit lo limita. La facturación sigue el tiempo real en marcha, nunca más allá. |
get_session |
Estado, costo acumulado, el paso de arranque mientras la máquina arranca (launch_step) y el comando ssh cuando está en marcha. |
stop_session |
Detiene una sesión: la facturación se detiene y la máquina y su disco se eliminan. |
raise_session_budget |
Aumenta el presupuesto de una sesión en curso, dentro de los topes del toolkit y los límites de la clave. |
list_sessions |
Sesiones activas o finalizadas. |