Files
dsProject/dsLightRag/GeoGeBra/T1_Glm.py
2025-08-14 15:45:08 +08:00

97 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)