Aller au contenu

LLM & Intelligence Artificielle

Architecture du routage LLM et intégration IA.

Routage Intelligent

graph TD
    A[User Input] --> B[PII Detector]
    B --> C{Score > 0.7?}
    C -->|Oui| D[Ollama Local]
    C -->|Non| E[Claude Cloud]
    D --> F[Response]
    E --> F

Détection PII

Patterns détectés automatiquement:

Type Pattern Poids
Email user@domain.com 0.8
Téléphone FR +33 6 12 34 56 78 0.9
Carte bancaire 4111 1111 1111 1111 1.0
IBAN FR76 3000 6000... 1.0

Mots-clés sensibles:

  • password, mot de passe
  • api_key, token, secret
  • bank, salary, medical

Providers LLM

Ollama (Local)

OLLAMA_BASE_URL = "http://localhost:11434"
OLLAMA_DEFAULT_MODEL = "llama3"  # ou phi3, mistral

Modèles recommandés:

Modèle RAM Usage
llama3 8 GB Général
phi3 4 GB Léger, rapide
mistral 8 GB Bon en français

Claude (Anthropic)

ANTHROPIC_API_KEY = "sk-ant-api03-..."
# Modèles: claude-3-sonnet, claude-3-opus

GPT-4 (OpenAI)

OPENAI_API_KEY = "sk-proj-..."
# Modèles: gpt-4-turbo, gpt-4o

Pipeline RAG

graph LR
    A[Document] --> B[Chunking]
    B --> C[Embedding]
    C --> D[(pgvector)]
    E[Query] --> F[Embed Query]
    F --> G[Similarity Search]
    D --> G
    G --> H[Top-K Chunks]
    H --> I[LLM Context]
    I --> J[Response]

Chunking Strategy

  • Taille: 512 tokens
  • Overlap: 50 tokens
  • Séparateurs: \n\n, \n, .

Embeddings

EMBEDDING_MODEL = "text-embedding-ada-002"
EMBEDDING_DIMENSION = 1536

LangChain Agents

from langchain.agents import AgentExecutor

tools = [
    WebSearchTool(),
    CalculatorTool(),
    DocumentSearchTool()
]

agent = AgentExecutor(
    agent=create_react_agent(llm, tools),
    tools=tools,
    max_iterations=5
)

Métriques LLM

LLM_REQUESTS = Counter(
    'jarvis_llm_requests_total',
    'Total LLM requests',
    ['provider', 'model']
)

LLM_TOKENS = Counter(
    'jarvis_llm_tokens_total',
    'Total tokens used',
    ['provider', 'direction']
)