97 lines
3.8 KiB
Python
97 lines
3.8 KiB
Python
|
import json
|
|||
|
|
|||
|
import requests
|
|||
|
|
|||
|
reasoning_content = "" # 定义完整思考过程
|
|||
|
answer_content = "" # 定义完整回复
|
|||
|
is_answering = False # 判断是否结束思考过程并开始回复
|
|||
|
|
|||
|
"""
|
|||
|
【1】GLM会有错误的信息输出,比如说:
|
|||
|
等腰直角三角形△DEF(由线段DE绕点E顺时针旋转45°得到线段EF后形成的三角形,满足DE=EF且夹角∠DEF=45°,是旋转生成的辅助主体小三角形)。
|
|||
|
这很明显是错误的,因为顶角是 45°的等边三角形不是等腰直角三角形!
|
|||
|
|
|||
|
【2】响应速度
|
|||
|
对于阿里QVQ秒回的响应速度,此模型响应的速度在10秒以上。
|
|||
|
"""
|
|||
|
|
|||
|
prompt = """
|
|||
|
你是一个严谨的数学可视化描述专家,需要对初中几何图形进行结构化解析。请严格按照以下格式输出,确保不遗漏关键几何信息:
|
|||
|
|
|||
|
# 几何图形解析报告
|
|||
|
|
|||
|
## 1. 主体元素清单(按包含关系排序)
|
|||
|
- [主要图形类型]:[具体特征描述](如:直角等腰三角形ABC,∠C=90°,AC=BC)
|
|||
|
- [次要图形类型]:[具体特征描述](位于[父图形名称]的[位置描述])
|
|||
|
(注:所有几何类型判断需满足:①题目明确给出的直接特征 ②可通过SSS/SAS/ASA等定理严格推导的隐含特征)
|
|||
|
|
|||
|
## 2. 基准边选择优先级
|
|||
|
- 从左向右,从下向上,第一个看到的点做为坐标原点,此点向右水平的边视为X轴。
|
|||
|
|
|||
|
## 3. 坐标验证机制
|
|||
|
必须包含以下校验步骤:
|
|||
|
1. 计算所有边的长度(使用两点间距离公式:√[(x2-x1)²+(y2-y1)²])
|
|||
|
2. 输出边长比较表:[边标识]:[长度数值](如:AB:5, AC:4, BC:3)
|
|||
|
3. 明确说明基准边选择依据:"选择AB边作为基准,因其长度5为最长(AC=4, BC=3)"
|
|||
|
|
|||
|
## 4. 特殊图形处理
|
|||
|
- 直角三角形:强制校验斜边是否为最长边(c²=a²+b²)
|
|||
|
- 等腰/等边三角形:标注对称轴与基准边关系
|
|||
|
|
|||
|
## 5. 辅助元素详细说明
|
|||
|
- [元素类型]:[数量]个,分别为[具体标识],作用是[几何功能描述]
|
|||
|
- 特殊点:[点标识]([几何意义],如:△ABC的重心/外心/垂足)
|
|||
|
- 连接线:[线段标识](连接[起点]与[终点],是否为中线/垂线/角平分线)
|
|||
|
|
|||
|
## 6. 关键几何关系验证
|
|||
|
- 全等关系:△[标识] ≌ △[标识](依据[判定定理])
|
|||
|
- 相似关系:△[标识] ~ △[标识](相似比为[数值])
|
|||
|
- 位置约束:[图形A]在[图形B]的[方位描述],相距[距离描述]
|
|||
|
"""
|
|||
|
|
|||
|
from Config.Config import GLM_API_KEY, GLM_MODEL_NAME, GLM_BASE_URL
|
|||
|
|
|||
|
url = GLM_BASE_URL
|
|||
|
headers = {
|
|||
|
"Authorization": "Bearer " + GLM_API_KEY,
|
|||
|
"Content-Type": "application/json"
|
|||
|
}
|
|||
|
data = {
|
|||
|
"model": GLM_MODEL_NAME,
|
|||
|
"messages": [
|
|||
|
{
|
|||
|
"role": "user",
|
|||
|
"content":
|
|||
|
[
|
|||
|
{
|
|||
|
"type": "text",
|
|||
|
"text": prompt
|
|||
|
},
|
|||
|
{
|
|||
|
"type": "image_url",
|
|||
|
"image_url": {
|
|||
|
"url": "https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/Backup/23.jpg"
|
|||
|
}
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"stream": True # 启用流式调用
|
|||
|
}
|
|||
|
|
|||
|
with requests.post(url, headers=headers, json=data, stream=True) as response:
|
|||
|
for chunk in response.iter_lines():
|
|||
|
if chunk:
|
|||
|
decoded = chunk.decode('utf-8')
|
|||
|
if decoded.startswith('[DONE]'):
|
|||
|
print("完成!")
|
|||
|
break
|
|||
|
try:
|
|||
|
decoded = decoded[5:]
|
|||
|
json_data = json.loads(decoded)
|
|||
|
content = json_data["choices"][0]["delta"]['content']
|
|||
|
if content and len(content) > 0:
|
|||
|
print(content, end="")
|
|||
|
except Exception as e:
|
|||
|
print(e)
|