Requisitos#
Python 3.11 o más reciente. No se requieren paquetes adicionales. Establezca WEIGHTSAPI_API_KEY con su propia clave. El acceso a IA requiere inicio de sesión, una recarga confirmada de al menos USD 100, una clave API autorizada y suficiente crédito disponible para la solicitud. Cada recarga posterior también tiene un mínimo de USD 100; los saldos restantes más pequeños siguen siendo utilizables cuando cubren la solicitud. El crédito requiere verificación de la transacción. Verifique el estado del servicio para conocer la disponibilidad del modelo antes de enviar tráfico.
Ejecute la receta#
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"])
Antes de producción#
Limite la concurrencia y los reintentos, valide las salidas y gestione los errores antes de exponer el flujo de trabajo a los usuarios.