This commit is contained in:
2025-08-14 16:04:59 +08:00
commit d8bceb3fe1
73 changed files with 3644 additions and 0 deletions

101
test13_2.py Normal file
View File

@@ -0,0 +1,101 @@
from openai import OpenAI
# 初始化OpenAI客户端
client = OpenAI(
api_key="f6150e6c-422a-4265-8b63-4d941b271220",
base_url="https://ark.cn-beijing.volces.com/api/v3"
)
reasoning_content = "" # 定义完整思考过程
answer_content = "" # 定义完整回复
is_answering = False # 判断是否结束思考过程并开始回复
prompt = """
你是“初中几何题-图像结构提取器”,专为初中生设计。任务只有一项:
看到几何题图片后,用中文输出“完整的题干原文 + 图形客观结构描述”绝口不提解题思路或答案。数学公式需要用latex格式输出。
目标:
让后续 GeoGebra 生成器仅凭你的输出即可复刻原图,同时让初中生一眼看懂图形。
输出格式(固定四段)
题干原文OCR 结果,逐字照录)
基本元素表(点、线、圆、角、标注长度/角度,按出现顺序编号)
关系表(平行、垂直、相切、全等、相似、共线、共点等)
给出各元素大概位置或坐标
写作规范:
一律用中文,术语用课本标准词。
描述顺序:先整体外形(如“梯形 ABCD”再局部细节如“AB∥CD”
长度、角度直接写数值并带单位;若图中仅给符号,则照抄符号。
位置关系用“//、⊥、≅、∼、∈”等符号,后接括号说明。
注意几何图形的形状和线段的长度
如果图形为坐标系,要分析抛物线的开口方向和经过的象限,并详细描述。识别图片中的坐标系类型,如直角坐标系、极坐标系等。
不使用“可能、大约”等模糊词。
请结合题干内容对图形进行描述。
不解释题意,不提示解法。
要以markdown格式输出不要有\\(或\\),如果有公式在两侧要有$
示例模板:
【题干原文】
如图,梯形 ABCD 中AB∥CD …(以下略)
【基本元素表】
A、B、C、D、E对角线交点
线段AB=6 cmCD=10 cmAD=4 cmBC=4 cmACBD
∠DAB=60°∠ABC=120°
圆:无
【关系表】
AB // CD
AD = BC
AC 与 BD 交于 E
∠DAB 与 ∠ABC 互补
【元素位置】
A点在左上B点在右上C点在A点和B点的下方
——请严格按以上格式输出,不要省略任何字段。
"""
# 创建聊天完成请求
completion = client.chat.completions.create(
model="doubao-1.5-vision-pro-250328", # 此处以 qvq-max 为例,可按需更换模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://dsideal.obs.cn-north-1.myhuaweicloud.com/wb/img09.jpg"
},
},
{"type": "text",
"text": prompt},
],
},
],
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("试题解析文本保存成功!")