المتطلبات#
بايثون 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)
documents = [
{"id":"S1","text":"A KV cache reuses attention keys and values from previous tokens."},
{"id":"S2","text":"Prefill processes the prompt; decode generates new output tokens."},
{"id":"S3","text":"Longer contexts increase KV cache memory usage."}]
question = "How does caching affect generation?"
terms = set(question.lower().split())
ranked = sorted(documents, key=lambda d: len(terms & set(d["text"].lower().split())), reverse=True)[:2]
context = "\n".join("["+d["id"]+"] "+d["text"] for d in ranked)
r = chat([{"role":"system","content":"Answer only from the sources. Cite [S1], [S2], etc. Say when evidence is missing."},
{"role":"user","content":context+"\nQuestion: "+question}])
print(r["choices"][0]["message"]["content"])
print("Retrieved sources:", [d["id"] for d in ranked])
قبل الإنتاج#
يستخدم هذا المثال الصغير الترتيب المعجمي ومصادر عينات مدمجة بحيث يعمل بشكل مستقل. استبدل المجموعة النصية والترتيب بنظام الاسترجاع الخاص بك، وتحقق من أن الاستشهادات تدعم كل ادعاء فعليًا.