weightsapi.INFÉRENCEConsole
Navigation
Sortie structurée validée

Sortie structurée validée

Un schéma strict plus une validation indépendante.

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)
schema = {"type":"object","properties":{"language":{"type":"string"},"summary":{"type":"string"}},
          "required":["language","summary"],"additionalProperties":False}
r = chat([{"role":"user","content":"Summarize: Bonjour, je construis une API."}],
    response_format={"type":"json_schema","json_schema":{"name":"summary","strict":True,"schema":schema}})
choice = r["choices"][0]
if choice["finish_reason"] != "stop": raise ValueError("Incomplete output")
value = json.loads(choice["message"]["content"])
if set(value) != {"language","summary"} or not all(isinstance(v,str) for v in value.values()):
    raise ValueError("Schema validation failed")
print(value)

Avant la mise en production#

Limitez la concurrence et les nouvelles tentatives, validez les sorties et gérez les erreurs avant d'exposer le flux de travail aux utilisateurs.