weightsapi.ИНФЕРЕНЦИЯКонсоль
Навигация
Агент, который вызывает инструмент

Агент, который вызывает инструмент

Ограниченный вызов функции из белого списка и последующий ответ.

Требования#

Python 3.11 или новее. Без дополнительных пакетов. Установите WEIGHTSAPI_API_KEY на ваш собственный ключ. Для доступа к ИИ требуется вход, одно подтвержденное пополнение на сумму не менее 100 USD, авторизованный ключ API и достаточный доступный кредит для запроса. Каждое последующее пополнение также имеет минимум 100 USD; меньшие остатки остаются пригодными для использования, если они покрывают запрос. Кредит требует проверки транзакции. Проверьте статус сервиса на доступность модели перед отправкой трафика.

Запустите рецепт#

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"])

Перед промышленной эксплуатацией#

Ограничьте параллелизм и повторные попытки, проверяйте выводы и обрабатывайте ошибки, прежде чем предоставлять рабочий процесс пользователям.