Aller au contenu principal

Extraits d'API pour la production

Intermédiaire

Des structures éprouvées pour développer sur l'API. Adaptez-les et renforcez-les pour votre stack.

Un wrapper d'appel résilient (relances + backoff)​

import time, random, anthropic
client = anthropic.Anthropic()

def ask(messages, model="claude-sonnet-5", max_tokens=1024, system=None):
for attempt in range(5):
try:
return client.messages.create(
model=model, max_tokens=max_tokens,
system=system or anthropic.NOT_GIVEN, messages=messages,
)
except (anthropic.RateLimitError, anthropic.APIStatusError) as e:
if attempt == 4:
raise
time.sleep(min(2 ** attempt + random.random(), 30))

(Les SDK relancent aussi les erreurs transitoires par défaut — connaissez le comportement de votre client avant d'empiler vos propres relances. Voir Erreurs et limites de débit.)

Chat en streaming​

with client.messages.stream(model="claude-sonnet-5", max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Boucle d'utilisation d'outils (squelette)​

messages = [{"role": "user", "content": "What's the weather in Rome?"}]
while True:
resp = client.messages.create(model="claude-sonnet-5", max_tokens=1024,
tools=TOOLS, messages=messages)
if resp.stop_reason != "tool_use":
break
messages.append({"role": "assistant", "content": resp.content})
results = [run_tool(b) for b in resp.content if b.type == "tool_use"]
messages.append({"role": "user", "content": results}) # tool_result blocks
Renforcement

Limitez les itérations et le coût, validez les entrées des outils et gardez les secrets dans des variables d'environnement. Pour un usage autonome, lisez Sécuriser les agents.

Suite​