Вимоги#
Python 3.11 або новіше. Без додаткових пакетів. Встановіть WEIGHTSAPI_API_KEY на ваш власний ключ. Доступ до ШІ вимагає входу, одного підтвердженого поповнення на суму не менше 100 доларів США, авторизованого ключа API та достатнього доступного кредиту для запиту. Кожне наступне поповнення також має мінімум 100 доларів США; менші залишки залишаються придатними, якщо вони покривають запит. Кредит вимагає перевірки транзакції. Перевірте статус сервісу щодо доступності моделей перед надсиланням трафіку.
Запустіть рецепт#
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"])
Перед використанням у виробництві#
Обмежте конкурентність і повторні спроби, валідуйте вихідні дані та обробляйте помилки, перш ніж надавати робочий процес користувачам.