Exigences#
Python 3.11 ou plus récent. Aucun paquet supplémentaire. Définissez WEIGHTSAPI_API_KEY sur votre propre clé. L'accès à l'IA nécessite une connexion, un rechargement confirmé d'au moins 100 USD, une clé API autorisée et suffisamment de crédit disponible pour la requête. Chaque rechargement ultérieur a également un minimum de 100 USD ; les soldes restants plus petits restent utilisables lorsqu'ils couvrent la requête. Le crédit nécessite une vérification de transaction. Vérifiez le statut du service pour la disponibilité des modèles avant d'envoyer du trafic.
Exécuter la recette#
import os, json, urllib.request
BASE = os.environ.get("WEIGHTSAPI_BASE_URL", "https://weightsapi.com/v1")
KEY = os.environ["WEIGHTSAPI_API_KEY"]
def chat(messages, model="Qwen/Qwen3-32B", **options):
payload = dict(model=model, messages=messages, max_tokens=512, **options)
req = urllib.request.Request(BASE+"/chat/completions", json.dumps(payload).encode(),
{"Authorization": "Bearer "+KEY, "Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=120) as response:
return json.load(response)
documents = [
{"id":"S1","text":"A KV cache reuses attention keys and values from previous tokens."},
{"id":"S2","text":"Prefill processes the prompt; decode generates new output tokens."},
{"id":"S3","text":"Longer contexts increase KV cache memory usage."}]
question = "How does caching affect generation?"
terms = set(question.lower().split())
ranked = sorted(documents, key=lambda d: len(terms & set(d["text"].lower().split())), reverse=True)[:2]
context = "\n".join("["+d["id"]+"] "+d["text"] for d in ranked)
r = chat([{"role":"system","content":"Answer only from the sources. Cite [S1], [S2], etc. Say when evidence is missing."},
{"role":"user","content":context+"\nQuestion: "+question}])
print(r["choices"][0]["message"]["content"])
print("Retrieved sources:", [d["id"] for d in ranked])
Avant la mise en production#
Ce petit exemple utilise un classement lexical et des sources d'exemple intégrées, ce qui lui permet de fonctionner de manière autonome. Remplacez le corpus et le classement par votre propre récupérateur, et vérifiez que les citations soutiennent réellement chaque affirmation.