72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
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)
|