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)