Date : 14/02/2026
Status : TERMINE
Projets : ai-orchestrator, ulias-org
Commits : 80c546a (ai-orchestrator), 4af3857 (ulias-org)
Integrer l'API Anthropic Claude dans ai-orchestrator comme provider LLM cloud pour les agents ulias-org qui font du tool-use complexe. Garder le local (Ollama) pour les taches legeres. Tracker les couts en temps reel.
TOOLS_CONFIG : gpu_id=-1, port=0, pas de VRAM, toujours "running"TOOLS_SCHEMAS : job_types chat (Messages API) et batch (Batch API 50% moins cher)CLOUD_TOOLS = {"anthropic"} pour bypass GPU slot allocation_convert_ollama_to_anthropic() : transforme messages/tools Ollama en format Anthropic Messages APIsystem separe avec cache_control: {"type": "ephemeral"}role: "tool") -> blocs tool_result dans un message usertool_usecache_control sur le dernier tool definition pour cacher toutes les definitions_convert_anthropic_to_ollama() : transforme la reponse Anthropic en format Ollama-compatiblecontent[].type="tool_use" -> tool_calls[].function.{name, arguments}tokens_input, tokens_output, cache_read_tokens, cache_creation_tokensexecute_anthropic_job() : appel Messages API via httpx, timeout 120sexecute_anthropic_batch_job() : soumission Batch API + poll toutes les 30s (max 2h)ai_jobs :cost_usd NUMERIC(10,6) : cout en dollarsprovider TEXT : "local" ou "anthropic"tokens_input INTEGER, tokens_output INTEGERcache_read_tokens INTEGER, cache_creation_tokens INTEGERcalculate_job_cost() : calcul par providerANTHROPIC_PRICING = {
"claude-sonnet-4-5-20250929": {"input": 3.0, "output": 15.0, "cache_read": 0.30, "cache_creation": 3.75, "batch_discount": 0.5},
"claude-haiku-4-5-20251001": {"input": 0.80, "output": 4.0, "cache_read": 0.08, "cache_creation": 1.0, "batch_discount": 0.5},
}
check_anthropic_budget() : verifie le cout mensuel avant chaque appelANTHROPIC_BUDGET_USD, defaut 120$)GET /api/costs/live : couts aujourd'hui + ce mois par provider, budget restant, alerteGET /api/costs/summary?year=2026&month=2 : detail par provider (jobs, cout, tokens in/out, cache)CLOUD_TOOLS bypass dans job_worker() : dispatch immediat sans GPU slotprocess_single_job() : skip GPU pre-check, tool loading, VRAM measurement pour cloud toolsconf.prod.gouroubleu.yml : env vars ANTHROPIC_API_KEY (vide) et ANTHROPIC_BUDGET_USD=120LLMOptions.provider?: 'local' | 'anthropic' dans client.tsAgentDefinition.provider?: 'local' | 'anthropic' dans registry.tsAgentConfig.provider?: 'local' | 'anthropic' dans agent-runner/index.tsllmChat() : si provider=anthropic, utilise tool_id: 'anthropic' et skip num_ctxbuildAgentConfig() dans Director passe le provider du registry au runnerAgents avec tools complexes = provider: 'anthropic' :
Agents sans tools ou taches simples :
service_role_key Supabase retire du prompt storage-dev (remplace par reference $SUPABASE_SERVICE_KEY env var)ALTER TABLE ai_jobs ADD COLUMN IF NOT EXISTS cost_usd NUMERIC(10,6) DEFAULT 0;
ALTER TABLE ai_jobs ADD COLUMN IF NOT EXISTS provider TEXT DEFAULT 'local';
ALTER TABLE ai_jobs ADD COLUMN IF NOT EXISTS tokens_input INTEGER DEFAULT 0;
ALTER TABLE ai_jobs ADD COLUMN IF NOT EXISTS tokens_output INTEGER DEFAULT 0;
ALTER TABLE ai_jobs ADD COLUMN IF NOT EXISTS cache_read_tokens INTEGER DEFAULT 0;
ALTER TABLE ai_jobs ADD COLUMN IF NOT EXISTS cache_creation_tokens INTEGER DEFAULT 0;
| Test | Resultat |
|---|---|
GET /api/costs/live |
OK - retourne today/month par provider, budget, alerte |
GET /api/costs/summary?year=2026&month=2 |
OK - 304k jobs locaux, 0$ anthropic |
Tool "anthropic" dans /api/tools |
OK - enregistre, gpu_id=-1, port=0 |
Schema /api/tools/schemas/anthropic |
OK - chat + batch job_types |
| ulias-org health | OK - 31 agents, healthy |
| AI-orchestrator health | OK - healthy apres redeploy |
Pour activer Anthropic :
conf.prod.gouroubleu.yml : ANTHROPIC_API_KEY: "sk-ant-..."/api/costs/live| Fichier | Lignes |
|---|---|
ai-orchestrator/app/main.py |
+592 -24 |
ai-orchestrator/conf.prod.gouroubleu.yml |
+2 |
ulias-org/packages/server/src/tools/client.ts |
+22 -10 |
ulias-org/packages/server/src/agents/registry.ts |
+17 -8 |
ulias-org/packages/server/src/agent-runner/index.ts |
+2 |
ulias-org/packages/server/src/director/index.ts |
+1 |
DB ai_jobs |
+6 colonnes |