Guía — Proveedores de modelo personalizados
Alcance
Este documento resume los pasos y criterios para implementar proveedores de modelo personalizados en el SDK de Strands Agents dentro de Shell Sentinel. Sirve como checklist interno y complemento de la documentación oficial.
Requisitos previos
- Conocer la jerarquía
strands.models.Model(revisa ejemplos comoBedrockModel). - Comprender los tipos
Messages,StreamEventyToolSpec. - Cliente Python para el servicio LLM propietario (sincrónico o asíncrono).
- Configuración declarativa en
conf/y credenciales vía variables de entorno.
Flujo de implementación
-
Definir configuración: crea una
ModelConfigtipada con los parámetros admitidos y expónget_config/update_config. -
Inicializar el cliente: resuelve credenciales desde el entorno seguro,
instancia el cliente remoto y registra logging (
smart_ai_sys_admin.agent). -
Implementar
stream(...):- Convierte
messages,tool_specsysystem_promptal formato que espera el servicio externo. - Adapta la respuesta al protocolo
StreamEvent(eventosmessageStart,contentBlockDelta,messageStop, etc.). - Gestiona errores de ventana de contexto, timeouts y autenticación con trazas útiles.
- Si el SDK es sincrónico, usa
asyncio.to_threadpara no bloquear el event loop.
- Convierte
-
Soportar herramientas: reutiliza
streamenstructured_output(...), convierte modelos Pydantic aToolSpecy valida la respuesta. -
Registrar el proveedor: expón la clase dentro de
smart_ai_sys_admin.agenty añade la configuración correspondiente enconf/agent.conf.
Consideraciones adicionales
- Usa logging con nivel
DEBUGpara facilitar el troubleshooting. - Documenta cualquier nuevo parámetro en los manuales de usuario cuando afecte al operario.
- No hardcodees tokens ni endpoints; emplea variables de entorno y archivos en
conf/. - Prepara pruebas de humo o scripts manuales antes de integrar el proveedor en la TUI.
Caso práctico: LM Studio
- Servidor local compatible con la API de OpenAI (
/v1/*); configurabase_url,api_keyymodel_id. - Arranca con
lms server start; ajustaclient_argspara controlar timeouts. -
La REST API nativa (
/api/v0/*) expone métricas; úsala para telemetría y cálculo de límites (max_context_length).
Caso práctico: Cerebras
- Integra
cerebras_cloud_sdkdentro de un modelo personalizado con streaming SSE. - Configura
model_id,params,client_argsyapi_key_envenproviders.cerebras. - Convierte
ChatChunkResponseen eventos nativos, exponiendometadatacon uso y tiempos. - Para salidas estructuradas, genera un
ToolSpecy parseatool_call.function.arguments.
Referencias externas
- Documentación oficial: Strands Agents
-
Código de ejemplo (
BedrockModel): Repositorio oficial