Capability LLM¶
Configuration du modèle utilisé par les interpréteurs d'intention et agents.
Objectif¶
llm configure le modèle utilisé par les adapters d'intelligence applicative:
interpréteur d'intention, agent LangGraph, classification, extraction ou aide à
la décision.
Le LLM reste un adapter outbound. Il peut proposer une action, structurer une intention ou produire une réponse, mais l'écriture en base passe toujours par un use case métier explicite.
Adapters¶
| Adapter | Usage |
|---|---|
lmstudio |
modèle local OpenAI-compatible |
openai |
modèle OpenAI |
anthropic |
modèle Claude |
Commandes¶
LM Studio local:
| Bash | |
|---|---|
OpenAI:
| Bash | |
|---|---|
Anthropic:
| Bash | |
|---|---|
Configuration¶
LM Studio génère une configuration OpenAI-compatible:
| YAML | |
|---|---|
Le model_name doit être l'identifiant exact retourné par LM Studio:
| Bash | |
|---|---|
Ne pas inventer un alias comme local-model si LM Studio ne le déclare pas.
OpenAI garde la clé dans .env via un mapping de secret:
| YAML | |
|---|---|
| Text Only | |
|---|---|
Anthropic suit le même principe:
| YAML | |
|---|---|
| Text Only | |
|---|---|
Usage applicatif¶
Injecter le LLM dans un adapter outbound dédié, puis exposer au domaine une
interface stable comme LLMPort. Le use case garde la décision finale.
Exemple de règle:
| Python | |
|---|---|
Éviter le chemin inverse où le prompt appelle directement le repository.
Streaming Structuré¶
LLMPort.stream_structured() expose un flux exploitable sans exposer PydanticAI
dans le domaine. Le flux émet des événements progress, des snapshots
structured_chunk, puis un structured_final.
PydanticAI émet des snapshots cumulés, pas des deltas. Le dernier événement
structured_final reste la sortie métier à utiliser pour décider et appeler les
use cases.
Test Local Minimal¶
Avant de brancher l'agent, prouver que le modèle local répond:
| Bash | |
|---|---|
Puis prouver que le client Python utilisé par Arclith sait parler à cet endpoint:
| Bash | |
|---|---|
Depuis Docker, remplacer souvent 127.0.0.1 par host.docker.internal, car localhost désigne le
conteneur.
Règles¶
Le LLM interprète ou assiste. Il n'écrit pas directement dans la persistance.
Le provider doit rester interchangeable. Ne pas exposer un type SDK OpenAI, Anthropic ou Pydantic AI dans le domaine.
La clé API doit venir d'un secret ou de l'environnement, jamais d'un fichier versionné avec une vraie valeur.
Les tests unitaires des use cases ne doivent pas dépendre du réseau. Utiliser un
fake de LLMPort pour les cas déterministes.
Documenter le model_name réellement utilisé par environnement, car les
résultats et les coûts changent avec le modèle.
Validation¶
LM Studio:
| Bash | |
|---|---|
Chat Completions local:
| Bash | |
|---|---|
Tests:
| Bash | |
|---|---|
Vérifier au minimum:
| Cas | Résultat attendu |
|---|---|
provider OpenAI-compatible sans base_url |
erreur de configuration |
| secret absent pour OpenAI ou Anthropic | erreur explicite |
| fake LLM en test unitaire | aucun appel réseau |
| agent hors ligne | LANGSMITH_TRACING=false et réponse via l'API LangGraph locale |
| agent avec observabilité active | traces visibles dans LangSmith |
Suite¶
Lire aussi: