Files
ERP/tests/test_live_deepseek.py

72 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import json
import urllib.request
api_key = "sk-a671eab15be846d494bf0839070a3b32"
url = "https://api.deepseek.com/chat/completions"
prompt = """تو دستیار تدارکات یک ERP فارسی هستی. ورودی تو پیام صوتی/متنی کاربر است.
یک JSON و فقط JSON برگردان (بدون توضیح اضافه) با این شکل:
{
"intent": "register_quote",
"patch": {
"supplier_name": "نام تأمین‌کننده",
"project_name": "نام پروژه",
"project_names": ["نام پروژه"],
"is_official": true,
"notes": "یادداشت‌ها",
"expiry_date": "YYYY-MM-DD",
"items": [
{
"material_name": "فقط نام کلی کالا",
"brand_name": "نام کارخانه یا برند",
"specs": ["مشخصه ۱", "مشخصه ۲"],
"quantity": 5000,
"unit_name": "کیلوگرم",
"unit_price": 28500,
"notes": ""
}
],
"payment_terms": [
{
"label": "شرایط پرداخت",
"milestones": [
{"due_date": "YYYY-MM-DD", "amount": 50000000}
]
}
]
},
"confidence": 0.95
}
قوانین:
- برای کالاها: material_name فقط نام کلی کالا باشد (مانند «میلگرد» یا «لوله»)؛ کارخانه یا برند در brand_name؛ و مشخصات فنی (مثل سایز یا گرید) در آرایه specs قرار گیرد.
- برای شرایط پرداخت: در صورت ذکر اقساط/موعد و مبالغ، در milestones: [{"due_date": "YYYY-MM-DD", "amount": number}] قرار بده.
"""
user_msg = "استعلام قیمت از شرکت فولاد مبارکه برای ۵ تن میلگرد A3 سایز ۱۴ به قیمت هر کیلو ۲۸۵۰۰ تومن، تحویل پای کارگاه برج آسمان، پرداخت در دو مرحله ۵۰ میلیون نقد و مابقی تا آخر ماه"
payload = {
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": prompt},
{"role": "user", "content": user_msg}
],
"response_format": {"type": "json_object"}
}
data = json.dumps(payload).encode("utf-8")
req = urllib.request.Request(url, data=data, headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
})
try:
resp = urllib.request.urlopen(req)
res_data = json.loads(resp.read().decode("utf-8"))
content = res_data["choices"][0]["message"]["content"]
with open("tests/deepseek_output.json", "w", encoding="utf-8") as out_f:
out_f.write(content)
print("DEEPSEEK SUCCESS! Saved to tests/deepseek_output.json")
print("KEYS IN EXTRACTED JSON:", list(json.loads(content).get("patch", {}).keys()))
except Exception as e:
print("DEEPSEEK ERROR:", e)