المتطلبات#
بايثون 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"])
قبل الإنتاج#
قيّد التزامن وإعادة المحاولة، وتحقق من صحة المخرجات، وتعامل مع الأخطاء قبل عرض سير العمل للمستخدمين.