weightsapi.INFERENZAConsole
Navigazione
Un agente che chiama uno strumento

Un agente che chiama uno strumento

Una chiamata di funzione delimitata e con elenco consentito, più una risposta di follow-up.

Requisiti#

Python 3.11 o successivo. Nessun pacchetto aggiuntivo. Imposta WEIGHTSAPI_API_KEY con la tua chiave. L'accesso AI richiede accesso, una ricarica confermata di almeno 100 USD, una chiave API autorizzata e credito disponibile sufficiente per la richiesta. Anche ogni ricarica successiva ha un minimo di 100 USD; saldi residui inferiori restano utilizzabili quando coprono la richiesta. Il credito richiede la verifica della transazione. Controlla lo stato del servizio per la disponibilità dei modelli prima di inviare traffico.

Esegui la ricetta#

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)
tools = [{"type":"function","function":{"name":"get_stock","description":"Look up product inventory.",
    "parameters":{"type":"object","properties":{"sku":{"type":"string"}},"required":["sku"],"additionalProperties":False}}}]
messages = [{"role":"user","content":"How many keyboards are in stock? SKU keyboard."}]
first = chat(messages, tools=tools)["choices"][0]["message"]
messages.append(first)
for call in first.get("tool_calls", []):
    if call["function"]["name"] != "get_stock": raise ValueError("Unknown tool")
    args = json.loads(call["function"]["arguments"])
    if set(args) != {"sku"} or not isinstance(args["sku"], str): raise ValueError("Invalid arguments")
    result = {"sku":args["sku"],"quantity":{"keyboard":12}.get(args["sku"],0)}
    messages.append({"role":"tool","tool_call_id":call["id"],"content":json.dumps(result)})
print(chat(messages)["choices"][0]["message"]["content"])

Prima della produzione#

Limita la concorrenza e i tentativi, convalida gli output e gestisci gli errori prima di esporre il flusso di lavoro agli utenti.