From b48d5cc8345edff49bce6bdb210b4766bf5f69c9 Mon Sep 17 00:00:00 2001 From: Xiaofeng <1169646434@qq.com> Date: Wed, 21 May 2025 18:10:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A8=E7=90=86=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/expertproducts/views.py | 38 ++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/apps/expertproducts/views.py b/apps/expertproducts/views.py index e192c58..dc725b0 100644 --- a/apps/expertproducts/views.py +++ b/apps/expertproducts/views.py @@ -281,17 +281,23 @@ class NegotiationViewSet(viewsets.ModelViewSet): # 6. 调用大模型 try: - response = client.chat( - model="deepseek-r1:70b", - messages=messages, - ) - ai_response, current_status_json = self.filter_ai_response(response['message']['content']) + vllm_url = "http://localhost:9090/v1/chat/completions" + payload = { + # "model": "Qwen2.5-14B-Instruct", + "messages": messages, + "temperature": 0.2, + "max_tokens": 2048 + } + resp = requests.post(vllm_url, json=payload) + resp.raise_for_status() + response_json = resp.json() + ai_content = response_json['choices'][0]['message']['content'] + ai_response, current_status_json = self.filter_ai_response(ai_content) if negotiation.status == 'draft_ready': - if current_status_json['is_resend_email']: + if current_status_json and current_status_json.get('is_resend_email'): self._send_contract_to_email(negotiation) - # print("response: ", response['message']['content']) except Exception as e: return Response({"error": f"AI服务错误: {str(e)}"}, status=500) @@ -762,11 +768,19 @@ class CreatorSQLSearchAPI(APIView): """ # 2. 让大模型生成SQL - response = client.chat( - model="qwen2.5:32b", - messages=[{'role': 'user', 'content': prompt}], - ) - sql = self._extract_sql(response['message']['content']) + vllm_url = "http://localhost:9090/v1/chat/completions" + payload = { + # "model": "Qwen2.5-14B-Instruct", + "messages": [ + {"role": "user", "content": prompt} + ], + "temperature": 0.2, + "max_tokens": 2048 + } + resp = requests.post(vllm_url, json=payload) + resp.raise_for_status() + response_json = resp.json() + sql = self._extract_sql(response_json['choices'][0]['message']['content']) # 3. 校验SQL(只允许select,防止注入) if not sql.strip().lower().startswith('select'):