API LLM pour développeurs — Guide d'intégration 2026 | APIMaster.ai
Guide développeur pour les API LLM : authentification, streaming, appel de fonctions, embeddings, RAG, patterns async et gestion des coûts. Fonctionne avec Claude, GPT et DeepSeek via APIMaster.
API LLM pour développeurs : Guide complet d'intégration
Ce guide couvre tout ce qu'un développeur doit savoir pour intégrer les API LLM dans des applications de production : authentification, streaming, utilisation d'outils, embeddings, patterns RAG et gestion des coûts. Tous les exemples utilisent le format compatible OpenAI et fonctionnent avec APIMaster.ai.
Configuration
from openai import OpenAI
client = OpenAI(
api_key="YOUR_APIMASTER_KEY",
base_url="https://apimaster.ai/v1",
)
Modèles de base
1. Chat de base
def ask(prompt: str, model: str = "claude-sonnet-4-6") -> str:
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
return response.choices[0].message.content
2. Prompt système + Conversation
class Conversation:
def __init__(self, system: str, model: str = "claude-sonnet-4-6"):
self.model = model
self.messages = [{"role": "system", "content": system}]
def send(self, user_msg: str) -> str:
self.messages.append({"role": "user", "content": user_msg})
resp = client.chat.completions.create(
model=self.model,
messages=self.messages,
)
reply = resp.choices[0].message.content
self.messages.append({"role": "assistant", "content": reply})
return reply
bot = Conversation("You are an expert Python developer.")
print(bot.send("What is the GIL?"))
print(bot.send("How do I work around it?"))
3. Streaming
def stream(prompt: str, model: str = "gpt-5.4"):
with client.chat.completions.stream(
model=model,
messages=[{"role": "user", "content": prompt}],
) as s:
for text in s.text_stream:
yield text
for chunk in stream("Explain async/await in Python"):
print(chunk, end="", flush=True)
4. Sortie structurée
from pydantic import BaseModel
from typing import List
class ExtractedData(BaseModel):
entities: List[str]
sentiment: str
summary: str
import json
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": f"Extract data and return JSON matching this schema: {ExtractedData.schema()}"},
{"role": "user", "content": "Apple reported record revenue. CEO Tim Cook called it exceptional."},
],
response_format={"type": "json_object"},
)
data = ExtractedData(**json.loads(response.choices[0].message.content))
print(data.entities) # ["Apple", "Tim Cook"]
print(data.sentiment) # "positive"
5. Utilisation d'outils / Appel de fonctions
import json
tools = [
{
"type": "function",
"function": {
"name": "execute_sql",
"description": "Run a read-only SQL query",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string"},
"database": {"type": "string", "enum": ["users", "orders", "products"]},
},
"required": ["query", "database"],
},
},
}
]
def handle_tool_call(tool_name: str, args: dict) -> str:
# Your implementation
return json.dumps({"result": "mock data"})
def agent_loop(user_msg: str):
messages = [{"role": "user", "content": user_msg}]
while True:
resp = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=tools,
)
if resp.choices[0].finish_reason != "tool_calls":
return resp.choices[0].message.content
# Process tool calls
messages.append(resp.choices[0].message)
for tc in resp.choices[0].message.tool_calls:
result = handle_tool_call(tc.function.name, json.loads(tc.function.arguments))
messages.append({"role": "tool", "tool_call_id": tc.id, "content": result})
6. Embeddings
def embed(texts: list[str]) -> list[list[float]]:
response = client.embeddings.create(
model="text-embedding-3-small",
input=texts,
)
return [item.embedding for item in response.data]
# Semantic similarity
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
vecs = embed(["Python is great", "I love Python", "Java is verbose"])
print(cosine_similarity(vecs[0], vecs[1])) # High: ~0.95
print(cosine_similarity(vecs[0], vecs[2])) # Lower: ~0.70
7. RAG (Génération augmentée par récupération)
from typing import List
def rag_query(user_question: str, knowledge_base: List[str]) -> str:
# Step 1: Embed the question
q_embedding = embed([user_question])[0]
doc_embeddings = embed(knowledge_base)
# Step 2: Find most relevant docs
similarities = [cosine_similarity(q_embedding, d) for d in doc_embeddings]
top_indices = sorted(range(len(similarities)), key=lambda i: similarities[i], reverse=True)[:3]
context = "\n\n".join(knowledge_base[i] for i in top_indices)
# Step 3: Generate answer with context
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "system", "content": f"Answer using only this context:\n\n{context}"},
{"role": "user", "content": user_question},
],
)
return response.choices[0].message.content
8. Async pour haut débit
import asyncio
from openai import AsyncOpenAI
async_client = AsyncOpenAI(
api_key="YOUR_APIMASTER_KEY",
base_url="https://apimaster.ai/v1",
)
async def process_batch(prompts: list[str]) -> list[str]:
tasks = [
async_client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": p}],
max_tokens=100,
)
for p in prompts
]
responses = await asyncio.gather(*tasks)
return [r.choices[0].message.content for r in responses]
# Process 50 prompts concurrently
results = asyncio.run(process_batch(my_prompts))
Checklist de production
- Clés API dans les variables d'environnement, pas dans le code source
- Logique de réessai avec backoff exponentiel pour les erreurs 429/500
-
max_tokensdéfini pour éviter des coûts incontrôlés - Streaming pour les réponses utilisateur >2 secondes
- Journalisation des requêtes avec comptage de tokens pour le suivi des coûts
- Limiteur de débit pour rester dans les limites du fournisseur
Choisir le bon modèle
| Cas d'utilisation | Modèle | Niveau de coût |
|---|---|---|
| Prototypage | deepseek-v4-flash ou gpt-4o-mini | Très faible |
| Chatbot de production | claude-haiku-4-5 | Faible |
| Assistant de code | deepseek-v4-flash ou claude-sonnet-4-6 | Faible–Moyen |
| Analyse complexe | claude-sonnet-4-6 | Moyen |
| Recherche/raisonnement | claude-opus-4-8 ou o3 | Élevé |
Foire aux questions
Qu'est-ce qu'une API LLM ?
Une API LLM est une interface HTTP qui permet à votre code d'envoyer des prompts textuels et de recevoir des réponses générées par IA. Vous envoyez un tableau messages ; l'API renvoie une complétion. La plupart utilisent le format Chat Completions d'OpenAI.
Comment choisir entre les fournisseurs d'API LLM ? Considérez la capacité du modèle (benchmarks), le coût par token, la latence et la fiabilité. Pour la plupart des cas d'utilisation, DeepSeek V4 Flash (codage à faible coût), Claude Sonnet (écriture/analyse) ou GPT-4o (multimodal) couvrent les besoins courants. APIMaster vous permet de changer de fournisseur avec une seule ligne.
Qu'est-ce qu'une API compatible OpenAI ?
Un endpoint qui implémente le même format /v1/chat/completions qu'OpenAI, vous permettant d'utiliser la bibliothèque Python openai ou tout outil compatible OpenAI avec des modèles non OpenAI.
Comment gérer les erreurs d'API LLM en production ?
Capturez RateLimitError (réessayez avec backoff), APIConnectionError (réessayez) et InvalidRequestError (corrigez le prompt). Utilisez des timeouts et des circuit breakers pour la résilience en production.
Puis-je utiliser une seule clé API pour plusieurs fournisseurs LLM ?
Oui—APIMaster fournit une clé unique et un endpoint pour GPT, Claude, DeepSeek et Gemini. Changez de modèle en modifiant le paramètre model. Pas besoin de clés ou SDK spécifiques au fournisseur.