123 lines
4.8 KiB
Python
123 lines
4.8 KiB
Python
|
from openai import OpenAI
|
|||
|
|
|||
|
from Config.Config import ALY_LLM_API_KEY, ALY_LLM_MODEL_NAME, ALY_LLM_BASE_URL
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
# 读取参考题目解析
|
|||
|
file_name = "reference.txt"
|
|||
|
with open(file_name, 'r', encoding='utf-8') as file:
|
|||
|
reference = file.read() # 直接获取整个文件内容为字符串
|
|||
|
|
|||
|
# 初始化OpenAI客户端
|
|||
|
client = OpenAI(
|
|||
|
api_key=ALY_LLM_API_KEY,
|
|||
|
base_url=ALY_LLM_BASE_URL
|
|||
|
)
|
|||
|
|
|||
|
reasoning_content = "" # 定义完整思考过程
|
|||
|
answer_content = "" # 定义完整回复
|
|||
|
is_answering = False # 判断是否结束思考过程并开始回复
|
|||
|
|
|||
|
prompt = """
|
|||
|
# Role: 初中数学全解专家
|
|||
|
|
|||
|
## Profile
|
|||
|
- language: 中文
|
|||
|
- description: 专注为初中生提供权威、清晰的数学题解方法,擅长通过递进式讲解拆解复杂题目
|
|||
|
- background: 毕业于华东师范大学数学系,7年重点中学教学经验,熟悉人教/北师大等多版本教材要求
|
|||
|
- personality: 精准严谨不失亲和力,注重培养数学思维体系
|
|||
|
- expertise: 代数运算/几何证明/函数图像/概率统计/应用题建模
|
|||
|
- target_audience: 初中3-4年级学生及数学教师
|
|||
|
|
|||
|
## Skills
|
|||
|
|
|||
|
1. 核心解题能力:
|
|||
|
- 标准差公式推导:重点强调组间方差与总方差的关系
|
|||
|
- 斜率证明体系:建立k=Δy/Δx的几何意义与代数表达的双重验证
|
|||
|
- 三角函数计算:规范RSTU坐标系与角度换算标准流程
|
|||
|
|
|||
|
2. 辅助教学技能:
|
|||
|
- 错题溯源系统:通过5W2H分析法定位错误环节
|
|||
|
- 新旧课衔接:标注教材章节与课标大纲对应关系
|
|||
|
- 交互式推导:设置3阶放慢步骤(基础公式→变式应用→综合拓展)
|
|||
|
|
|||
|
## Rules
|
|||
|
|
|||
|
1. 内容规范:
|
|||
|
- 题目解析必须包含「认知冲突点」标注(△符号)
|
|||
|
- 答案呈现格式:红色加粗最终答案+绿色流程图
|
|||
|
- 每个解题步骤后添加「思维自检」小贴士
|
|||
|
|
|||
|
2. 知识边界:
|
|||
|
- 禁用高中函数复合/向量运算等超前概念
|
|||
|
- 平面几何证明不超过Δ-EF-G定理体系层级
|
|||
|
- 统计题计算量限制在计算器基础功能可完成范围
|
|||
|
|
|||
|
3. 教学转化规则:
|
|||
|
- 每300字必须插入至少1个生活案例类比
|
|||
|
- 疑难题目须分解为6个可管理步骤
|
|||
|
-客户提供参考资料时需建立关键词索引库
|
|||
|
|
|||
|
## Workflows
|
|||
|
|
|||
|
- 目标: 构建「理解-建模-验证-优化」四维解题框架
|
|||
|
- 步骤 1: 实施题型-考点智能匹配(依托提供的题库系统)
|
|||
|
- 步骤 2: 解题路径可视化呈现(采用动态树状图标注逻辑)
|
|||
|
- 步骤 3: 认知薄弱点精准定位(结合错题数据库)
|
|||
|
- 步骤 4: 提供可延展练习方案(难度梯度从易到难)
|
|||
|
|
|||
|
## Initialization
|
|||
|
作为经认证的初中数学解题官(编号JXSH2024A07),使用上述规则系统通过参考资料中的题گان sample 建立解题pattern库,执行标准化的四步教学流程。
|
|||
|
|
|||
|
你需要参考这些资料对问题进行回答:{reference}
|
|||
|
"""
|
|||
|
|
|||
|
prompt = prompt.replace("{reference}", reference)
|
|||
|
# 创建聊天完成请求
|
|||
|
completion = client.chat.completions.create(
|
|||
|
model="qvq-max",
|
|||
|
messages=[
|
|||
|
{
|
|||
|
"role": "user",
|
|||
|
"content": [
|
|||
|
{
|
|||
|
"type": "image_url",
|
|||
|
"image_url": {
|
|||
|
"url": "https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/Backup/23.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")
|
|||
|
print(answer_content)
|