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