997842115 hace 3 semanas
padre
commit
dc3a94611d
Se han modificado 7 ficheros con 37 adiciones y 50 borrados
  1. 4 8
      dianceng.py
  2. 4 10
      extra.py
  3. 4 8
      fallback.py
  4. 4 8
      mianceng.py
  5. 11 0
      qwen32b.py
  6. 8 14
      tasks.py
  7. 2 2
      tasks2.py

+ 4 - 8
dianceng.py

@@ -46,18 +46,14 @@ answer3='''
 2、50厚C30细石混凝土,内配φ4@100双向钢筋网片,面层压光,设4mx4m分格缝(钢筋断开),缝宽15,内填嵌膏缝油
 3、10厚1:3石灰砂浆隔离层
 '''
+from qwen32b import call32b
 def dianceng(A, aiclient, qwclient):
-    completion = qwclient.chat.completions.create(
-        model="Qwen/Qwen3-32B",
-        messages=[
+    messages=[
             {"role": "system", "content": "You are a helpful assistant."},
             {"role": "user", "content": "垫层是一种放置在地面或其他表面下方的材料层,其主要功能是增加支撑力、减少冲击或防止渗透。常见的垫层材料包括砂、碎石、泥土和聚合物等,具体选择取决于应用需求。垫层在建筑领域的应用广泛,包括路面、停车场、建筑物地基等,能够改善基层和土基的工作条件,防止水分渗透和冻土层形成。"},
             {"role": "user", "content": "给定一段文字: " + A +   "\n 该段文字描述了包括一道或多道工序的散水、坡道的施工工作内容。其中有可能包括了垫层施工工序。请你阅读这段文字,判断是否存在垫层的工作内容。如果没有,请原封不动的返回给定的文字;如果有,请在垫层的工序上注明“垫层”两个字,其余则原封不动,并返回。 例如,给定一段文字:" + example1 +"\n请返回:" + answer1 + "\n 再例如,给定一段文字: " + example2 + "\n请返回: " + answer2},
-        ],
-        #extra_body={"thinking": {"type": "disabled"}},
-        extra_body={"enable_thinking": False},
-    )
-    json_string = completion.choices[0].message.content
+        ]
+    json_string = call32b(messages)
     print(json_string)
     completion = aiclient.chat.completions.create(
         model="glm-4.5-flash",

+ 4 - 10
extra.py

@@ -1,7 +1,7 @@
 import time
 from config import simplemodel
 from menchuangfallback import menchuangfallback
-
+from qwen32b import call32b
 
 example1='''
 1、包水管 做法详见图纸设计及相关图集规范
@@ -160,17 +160,11 @@ def need_extra(
     if '高强螺栓' in data['mc']:
         return True
     time.sleep(1)
-    completion = qwclient.chat.completions.create(
-        model="Qwen/Qwen3-32B",
-        #model="THUDM/GLM-4-9B-0414",
-        messages=[
+    messages=[
             {"role": "system", "content": "You are a helpful assistant."},
         {"role": "user", "content": "问题描述:  给定一段工作内容描述,内容为" + data['mc'] +data['tz'] + "。请判断内容是否属于打桩、压桩。请回答是或者否"},
-        ],
-        #extra_body={"thinking": {"type": "disabled"}},
-        extra_body={"enable_thinking":  False},
-    )
-    json_string = completion.choices[0].message.content
+        ]
+    json_string = call32b(messages)
     print(json_string)
     if "是" in json_string:
         return True

+ 4 - 8
fallback.py

@@ -1,6 +1,7 @@
 from menchuangfallback import menchuangfallback
 from template import xuanxiang
 from config import simplemodel
+from qwen32b import call32b
 def fallback(A, B, aiclient, qwclient, sfclient, menchuang_collection, model):
     if B['bianma'].startswith("0109"):
         if B['bianma'].startswith("010902") and '非固化' in B['tz'] and '沥青防水涂料' in B['tz']:##屋面防水
@@ -27,16 +28,11 @@ def fallback(A, B, aiclient, qwclient, sfclient, menchuang_collection, model):
     for i in range(len(A)):
         options.append("给定定额选项" + letters[i]+",内容为"+A[i])
 
-    completion = qwclient.chat.completions.create(
-        model="Qwen/Qwen3-32B",
-        messages=[
+    messages=[
             {"role": "system", "content": "You are a helpful assistant."},
             {"role": "user", "content": "问题描述: 给定一条工程量清单: " + B['label'] + " " + B['mc'] + " " + B['tz'] +   ",清单描述了包括一道或多道工序的工作内容" + ",".join(options) + "。请筛选出恰当的定额选项,使得定额选项匹配上清单所描述的工作内容。如果清单描述有多道工作内容,则你可能需要筛选出多个选项。选项中可能有意思相同或相近的选项,对于相同或相近的一组选项,你要挑选出其中最恰当的选项,排除掉其余的选项,以防止重复套定额。请返回一个数组。例如,如果处理完后剩余A,B,C三个选项,请返回[A,B,C]"},
-        ],
-        #extra_body={"thinking": {"type": "disabled"}},
-        extra_body={"enable_thinking": False},
-    )
-    json_string = completion.choices[0].message.content
+        ]
+    json_string = call32b(messages)
     print(json_string)
     
     completion = sfclient.chat.completions.create(

+ 4 - 8
mianceng.py

@@ -32,17 +32,13 @@ answer2='''
 2、50厚C30细石混凝土,内配φ4@100双向钢筋网片,面层压光,设4mx4m分格缝(钢筋断开),缝宽15,内填嵌膏缝油
 3、10厚1:3石灰砂浆隔离层
 '''
+from qwen32b import call32b
 def mianceng(A, aiclient, qwclient):
-    completion = qwclient.chat.completions.create(
-        model="Qwen/Qwen3-32B",
-        messages=[
+    messages=[
             {"role": "system", "content": "You are a helpful assistant."},
             {"role": "user", "content": "散水、坡道往往使用细石混凝土作面层。给定一段文字: " + A +   "\n 该段文字描述了包括一道或多道工序的散水、坡道的施工工作内容。其中有可能包括了面层施工工序。请你阅读这段文字,判断是否存在面层的工作内容。如果没有,请原封不动的返回给定的文字;如果有,请在面层的工序上注明“面层”两个字,其余则原封不动,并返回。 例如,给定一段文字:" + example1 +"\n请返回:" + answer1 + "\n  "},
-        ],
-        #extra_body={"thinking": {"type": "disabled"}},
-        extra_body={"enable_thinking": False},
-    )
-    json_string = completion.choices[0].message.content
+        ]
+    json_string = call32b(messages)
     print(json_string)
     completion = aiclient.chat.completions.create(
         model="glm-4.5-air",

+ 11 - 0
qwen32b.py

@@ -0,0 +1,11 @@
+import json
+import requests
+import random
+def call32b(messages):
+
+    url = random.choice(['http://0.0.0.0:8100/ask/', 'http://0.0.0.0:8101/ask/'])
+    response = requests.post(url, json={
+          'content': json.dumps(messages),
+            })
+    json_string = response.text
+    return json_string

+ 8 - 14
tasks.py

@@ -5,6 +5,8 @@ from buchong import buchong
 from fuzhu_util import fuzhu_util
 from f_youqi import f_youqi
 import re
+import random
+from qwen32b call32b
 from config import simplemodel
 from template import expression
 from fallback import fallback
@@ -334,20 +336,11 @@ def callzaidw(A,B):
 
 
 def callzai(A,B,C):
-    completion = qwclient.chat.completions.create(
-        # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
-        #model="glm-4.5-flash",
-        model="Qwen/Qwen3-32B",
-        messages=[
+    messages=[
             {"role": "system", "content": "You are a helpful assistant."},
             {"role": "user", "content": " 给定一条主定额,内容为" + A + ",记作A,再给定一条配套定额,内容为" + B + ",记作B。可以通过简单的组合,来表达对应的工作内容的数量,比如A+B可以表达,主定额的工作量加上配套定额的工作量;再比如,A+B*2可以表达, 主定额的工作量加上两倍的配套定额的工作量;再比如,A+B*(-2)可以表达, 主定额减去两倍的配套定额的工作量;再比如,A可以表示,不使用配套定额,仅表示主定额的工作量。现在给你一条工程量清单,内容为" + C + ",该条清单包含了主定额描述的工作内容,但是数量并不一定一致。请你找到清单中对应的描述(不需要考虑龙骨类型是否完全一致,不需要考虑混凝土强度等级是否完全一致,需要区分面层和找平找坡层),辨识出工作数量(砂浆保护层厚度跟砂浆找平层厚度不可合并),并组合A与B,表示出清单描述的对应工作数量。请给出分析过程,并请最终输出类似A+B、A+B*2、A-B*2的格式,不要输出A+2*B、A-2*B的格式。如果清单里相应工作量的描述不明确,请输出A作为答案 "},
         ],
-        # Qwen3模型通过enable_thinking参数控制思考过程(开源版默认True,商业版默认False)
-        # 使用Qwen3开源版模型时,若未启用流式输出,请将下行取消注释,否则会报错
-        extra_body={"enable_thinking": False},
-        #extra_body={"thinking": {"type": "disabled"}},
-    )
-    json_string = completion.choices[0].message.content
+    json_string = call32b(messages)
     print(json_string)
     if len(json_string) < 4:
         return "result:" + json_string
@@ -637,6 +630,7 @@ def clarify(data):
 from redis.exceptions import TimeoutError
 @celery_app.task(autoretry_for=(TimeoutError,))
 def process_data(data:dict)-> dict:
+    clone = json.loads(json.dumps(data))
     placeholder, kuailiao = clarify(data)
     label = data['mc'] + ' ' + data['tz']
     if data['bianma'].startswith("0117"):
@@ -1007,12 +1001,12 @@ def process_data(data:dict)-> dict:
         print(data['bh'])
         print(data['name'])
         qd=anzhuangjsj(data['name'], data['bh'], dbcollection)
-        response = requests.post("http://localhost:3000/api/transform", json={'bianma': data['bianma'], 'mc': data['mc'], 'tz': data['tz'], 'dw': data['dw'], 'sl': data['sl'], 'n': data['n'], "extra": extra_info, 'result':qd, 'fuzhu': [], 'replace': replace, 'fy': fy})
+        response = requests.post("http://localhost:3000/api/transform", json={'bianma': data['bianma'], 'mc': clone['mc'], 'tz': clone['tz'], 'dw': data['dw'], 'sl': data['sl'], 'n': data['n'], "extra": extra_info, 'result':qd, 'fuzhu': [], 'replace': replace, 'fy': fy})
         return {"result": response.json()}
     if '高强螺栓' in extra_info:
-        response = requests.post("http://localhost:3000/api/transform", json={'bianma': data['bianma'], 'mc': data['mc'], 'tz': data['tz'], 'dw': data['dw'], 'sl': data['sl'], 'n': data['n'], "extra": extra_info, 'result': [], 'fuzhu': fuzhu_selected, 'replace': replace, 'fy': '{}'})
+        response = requests.post("http://localhost:3000/api/transform", json={'bianma': data['bianma'], 'mc': clone['mc'], 'tz': clone['tz'], 'dw': data['dw'], 'sl': data['sl'], 'n': data['n'], "extra": extra_info, 'result': [], 'fuzhu': fuzhu_selected, 'replace': replace, 'fy': '{}'})
         return {"result": response.json()}
     else:
-        response = requests.post("http://localhost:3000/api/transform", json={'bianma': data['bianma'], 'mc': data['mc'], 'tz': data['tz'], 'dw': data['dw'], 'sl': data['sl'], 'n': data['n'], "extra": extra_info, 'result': result, 'fuzhu': fuzhu_selected, 'replace': replace, 'fy': fy})
+        response = requests.post("http://localhost:3000/api/transform", json={'bianma': data['bianma'], 'mc': clone['mc'], 'tz': clone['tz'], 'dw': data['dw'], 'sl': data['sl'], 'n': data['n'], "extra": extra_info, 'result': result, 'fuzhu': fuzhu_selected, 'replace': replace, 'fy': fy})
         return {"result": response.json()}
         

+ 2 - 2
tasks2.py

@@ -50,7 +50,7 @@ def process_data(data:dict)-> dict:
           'mc': qd_['名称'],
           'tz': qd_['项目特征'],
           'dw': qd_['单位'],
-          'sl': qd_['数量'],
+          'sl': str(qd_['数量']),
           'n': maxN,
           'label': label,
           'name': data['name'],
@@ -100,7 +100,7 @@ def process_data(data:dict)-> dict:
           'mc': qd_['名称'],
           'tz': qd_['项目特征'],
           'dw': qd_['单位'],
-          'sl': qd_['数量'],
+          'sl': str(qd_['数量']),
           'n': maxN,
           'label': label,
           'name': data['name'],