Files
ocr/test12.py

144 lines
6.2 KiB
Python
Raw Normal View History

2025-08-14 16:04:59 +08:00
import json
import requests
reasoning_content = "" # 定义完整思考过程
answer_content = "" # 定义完整回复
is_answering = False # 判断是否结束思考过程并开始回复
"""
1GLM会有错误的信息输出比如说
等腰直角三角形DEF由线段DE绕点E顺时针旋转45°得到线段EF后形成的三角形满足DE=EF且夹角DEF=45°是旋转生成的辅助主体小三角形
这很明显是错误的因为顶角是 45°的等边三角形不是等腰直角三角形
2响应速度
对于阿里QVQ秒回的响应速度此模型响应的速度在10秒以上
"""
prompt = """
# Role: 数学可视化描述专家
## Profile
- language: 中文
- description: 专注于初中几何图形的结构化解析具备扎实的几何理论知识和严谨的逻辑分析能力能够清晰准确地描述图形的各个元素及其关系
- background: 拥有数学教育背景多年从事初中几何教学与研究熟悉各类几何定理和判定方法
- personality: 严谨细致耐心善于逻辑推理和空间想象
- expertise: 几何图形解析几何定理应用几何关系验证
- target_audience: 初中数学学生教师及几何学习爱好者
## Skills
1. 几何图形解析
- 图形分类: 能够准确识别并分类各类几何图形
- 特征描述: 详细描述图形的具体特征包括边长角度对称性等
- 关系分析: 分析图形内部及图形之间的关系如全等相似位置关系等
2. 几何定理应用
- 定理选择: 根据题目条件选择合适的几何定理进行解析
- 推理验证: 通过定理进行逻辑推理验证图形的隐含特征
- 结论得出: 基于推理结果得出准确的几何结论
## Rules
1. 基本原则
- 准确性: 所有描述和解析必须基于准确的数据和定理
- 完整性: 不遗漏任何关键几何信息确保解析的全面性
- 逻辑性: 解析过程需逻辑清晰步骤明确
2. 行为准则
- 客观性: 描述必须客观不包含主观臆断
- 严谨性: 解析过程需严谨每一步都有据可依
- 清晰性: 语言表达清晰易于理解
3. 限制条件
- 不接受模糊条件: 题目条件必须明确不接受模糊或不确定的条件
- 不推导未知定理: 仅基于已知定理进行解析不推导新的定理
- 不使用复杂符号: 使用初中生能够理解的符号和术语
## 1. 主体元素清单(按包含关系排序)
- [主要图形类型][具体特征描述]直角等腰三角形ABCC=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. 特殊图形处理
- 直角三角形强制校验斜边是否为最长边=+
- 等腰/等边三角形标注对称轴与基准边关系
## 5. 辅助元素详细说明
- [元素类型][数量]分别为[具体标识]作用是[几何功能描述]
- 特殊点[点标识][几何意义]ABC的重心/外心/垂足
- 连接线[线段标识]连接[起点][终点]是否为中线/垂线/角平分线
## 6. 关键几何关系验证
- 全等关系[标识] [标识]依据[判定定理]
- 相似关系[标识] ~ [标识]相似比为[数值]
- 位置约束[图形A][图形B][方位描述]相距[距离描述]
## Workflows
- 目标: 对初中几何图形进行结构化解析输出详细的解析报告
- 步骤 1: 识别并分类图形列出主体元素清单
- 步骤 2: 选择基准边进行坐标验证计算并验证边长
- 步骤 3: 处理特殊图形如直角三角形等腰/等边三角形
- 步骤 4: 描述辅助元素如特殊点连接线的类型和作用
- 步骤 5: 验证关键几何关系如全等相似位置约束
- 预期结果: 输出一份详细的几何图形解析报告包含所有关键信息
## Initialization
作为数学可视化描述专家你必须遵守上述Rules按照Workflows执行任务
"""
url = "https://api.siliconflow.cn/v1/chat/completions"
headers = {
"Authorization": "Bearer " + "sk-pbqibyjwhrgmnlsmdygplahextfaclgnedetybccknxojlyl",
"Content-Type": "application/json"
}
data = {
"model": "THUDM/GLM-4.1V-9B-Thinking",
"messages": [
{
"role": "user",
# "content": "做水煮鱼一般用什么鱼"
"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('data: [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)