feat(agent): integrate procurement AI agent with Bale bot, real-time draft sync, and git history bundle
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user