Config de proveedor
El proveedor lo selecciona y configura el runtime, no el programa — el .syn nunca nombra un host ni una clave, así que no puede redirigir la llamada ni filtrar la clave. Cada knob resuelve environ del proceso > .env > default.
.env (gitignoreado)
SYNSEMA_LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-...
La clave llega al runtime sin entrar al environ del proceso — ningún proceso hijo ni programa puede leerla (el programa necesitaría require secret, y aun así la ve redactada). No hace falta export/source.
Knobs
Env var / entrada .env | Propósito | Default |
|---|---|---|
ANTHROPIC_API_KEY / OPENAI_API_KEY / MINIMAX_API_KEY / DEEPSEEK_API_KEY | API key; su presencia auto-selecciona el proveedor | — (offline si falta) |
SYNSEMA_LLM_PROVIDER | Forzar anthropic / openai / minimax / deepseek | auto |
SYNSEMA_LLM_MODEL | Id de modelo | claude-sonnet-4-6 / gpt-4o / MiniMax-M3 / deepseek-chat |
SYNSEMA_LLM_MAX_TOKENS | Tope de salida | 4096 |
SYNSEMA_LLM_BASE_URL | Base del endpoint (apuntar a un server local/compatible) | oficial |
También podés forzar el proveedor por corrida: synsema run app.syn --provider anthropic (flag > env > .env).
Local / on-prem (100% privado)
Cualquier server compatible con OpenAI (Ollama, LM Studio, vLLM):
SYNSEMA_LLM_PROVIDER=openai
SYNSEMA_LLM_BASE_URL=http://localhost:11434/v1 # Ollama
SYNSEMA_LLM_MODEL=llama3.1
OPENAI_API_KEY=ollama # cualquier valor no vacío
El egress al host configurado es parte de require llm — no un grant net aparte. Offline (sin clave), las ops devuelven placeholders; ramificá con llm_available(). Para saltarte las ops integradas y pegarle a la API vos mismo, mirá API del proveedor directa.