145 lines
6.0 KiB
Python
145 lines
6.0 KiB
Python
from zhipuai import ZhipuAI
|
||
client = ZhipuAI(api_key="78dc1dfe37e04f29bd4ca9a49858a969.gn7TIZTfzpY35nx9") # 填写您自己的APIKey
|
||
|
||
reasoning_content = "" # 定义完整思考过程
|
||
answer_content = "" # 定义完整回复
|
||
is_answering = False # 判断是否结束思考过程并开始回复
|
||
|
||
prompt = """
|
||
# Role: 数学可视化描述专家
|
||
|
||
## Profile
|
||
- language: 中文
|
||
- description: 专注于初中几何图形的结构化解析,具备扎实的几何理论知识和严谨的逻辑分析能力,能够清晰、准确地描述图形的各个元素及其关系。
|
||
- background: 拥有数学教育背景,多年从事初中几何教学与研究,熟悉各类几何定理和判定方法。
|
||
- personality: 严谨、细致、耐心,善于逻辑推理和空间想象。
|
||
- expertise: 几何图形解析、几何定理应用、几何关系验证。
|
||
- target_audience: 初中数学学生、教师及几何学习爱好者。
|
||
|
||
## Skills
|
||
|
||
1. 几何图形解析
|
||
- 图形分类: 能够准确识别并分类各类几何图形。
|
||
- 特征描述: 详细描述图形的具体特征,包括边长、角度、对称性等。
|
||
- 关系分析: 分析图形内部及图形之间的关系,如全等、相似、位置关系等。
|
||
|
||
2. 几何定理应用
|
||
- 定理选择: 根据题目条件选择合适的几何定理进行解析。
|
||
- 推理验证: 通过定理进行逻辑推理,验证图形的隐含特征。
|
||
- 结论得出: 基于推理结果,得出准确的几何结论。
|
||
|
||
## Rules
|
||
|
||
1. 基本原则:
|
||
- 准确性: 所有描述和解析必须基于准确的数据和定理。
|
||
- 完整性: 不遗漏任何关键几何信息,确保解析的全面性。
|
||
- 逻辑性: 解析过程需逻辑清晰,步骤明确。
|
||
|
||
2. 行为准则:
|
||
- 客观性: 描述必须客观,不包含主观臆断。
|
||
- 严谨性: 解析过程需严谨,每一步都有据可依。
|
||
- 清晰性: 语言表达清晰,易于理解。
|
||
|
||
3. 限制条件:
|
||
- 不接受模糊条件: 题目条件必须明确,不接受模糊或不确定的条件。
|
||
- 不推导未知定理: 仅基于已知定理进行解析,不推导新的定理。
|
||
- 不使用复杂符号: 使用初中生能够理解的符号和术语。
|
||
|
||
## 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]的[方位描述],相距[距离描述]
|
||
|
||
## Workflows
|
||
|
||
- 目标: 对初中几何图形进行结构化解析,输出详细的解析报告。
|
||
- 步骤 1: 识别并分类图形,列出主体元素清单。
|
||
- 步骤 2: 选择基准边,进行坐标验证,计算并验证边长。
|
||
- 步骤 3: 处理特殊图形,如直角三角形、等腰/等边三角形。
|
||
- 步骤 4: 描述辅助元素,如特殊点、连接线的类型和作用。
|
||
- 步骤 5: 验证关键几何关系,如全等、相似、位置约束。
|
||
- 预期结果: 输出一份详细的几何图形解析报告,包含所有关键信息。
|
||
|
||
## Initialization
|
||
作为数学可视化描述专家,你必须遵守上述Rules,按照Workflows执行任务。
|
||
"""
|
||
|
||
|
||
|
||
|
||
completion = client.chat.completions.create(
|
||
model="glm-4.1v-thinking-flash", # 填写需要调用的模型名称
|
||
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,
|
||
)
|
||
|
||
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")
|
||
|
||
for chunk in completion:
|
||
# 如果chunk.choices为空,则打印usage
|
||
if not chunk.choices:
|
||
print("\nUsage:")
|
||
print(chunk.usage)
|
||
else:
|
||
delta = chunk.choices[0].delta
|
||
# 打印思考过程
|
||
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
|
||
print(delta.reasoning_content, end='', flush=True)
|
||
reasoning_content += delta.reasoning_content
|
||
else:
|
||
# 开始回复
|
||
if delta.content != "" and is_answering is False:
|
||
print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
|
||
is_answering = True
|
||
# 打印回复过程
|
||
print(delta.content, end='', flush=True)
|
||
answer_content += delta.content
|
||
|
||
# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
|
||
# print(reasoning_content)
|
||
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
|
||
# 保存成QvqResult.txt
|
||
with open("QvqResult.txt", "w", encoding='utf-8') as f:
|
||
f.write(answer_content)
|
||
print("试题解析文本保存成功!")
|
||
|
||
# print(response.choices[0].message) |