news 2026/9/8 19:38:17

AI攻克数学难题背后:用OpenAI API搭建模型推理评估系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI攻克数学难题背后:用OpenAI API搭建模型推理评估系统

最近 AI 圈又传出一个让人眼前一亮的消息:OpenAI 的 Astra 内部版在数学评测中攻克了 10 道公认的高难度数学题。

很多人看到这类新闻,第一反应是“AI 又变强了”,然后划走。但如果只停留在“好厉害”这个层面,那就错过了一个更有价值的技术问题:AI 做数学题变强,到底是靠模型变大、算力堆叠,还是推理机制发生了根本性变化?

这篇文章不打算复述新闻。我会从原理、评估方式、复现路径三个角度,带你理解“Astra 内部版攻克数学难题”背后的技术含义,并给出一套可以落到实处的操作方案:用 OpenAI API 搭建一个最小化的数学推理评估脚本,让你能用自己的题目、自己的评测集,去检验任意一个支持推理对话的大模型,看它到底是不是真的会“思考”。

读完这篇文章,你可以动手完成以下三件事:

  1. 说清“Astra 内部版”这类新模型要解决的核心难点是什么。
  2. 自己构造一个数学推理评测集,让大模型解题并自动判分。
  3. 掌握一套评估大模型推理能力的方法论,避免被单次刷题结果误导。

1. 这篇文章真正要解决的问题

先问一个直接的问题:为什么“AI 攻克 10 大数学难题”值得被当成一个重要事件来分析?

因为数学推理是当前大模型最容易暴露短板的地方。

语言生成任务可以靠语感、靠文本记忆、靠风格模仿蒙混过关。写一段周报、生成一段营销文案、把会议纪要整理成要点,这些任务的容错率很高,甚至“看起来通顺”就已经达标。但数学题不是这样。数学题有明确的前提、严格的推理链条、唯一的最终答案。一个环节错了,后面的推理全错;即便答案对了,过程不合理也必须扣分。

所以,数学成了检验大模型推理能力的“硬指标”。

Astra 内部版能攻克 10 道高难度数学题,意味着模型在“多步推理”这件事上取得了一定的进化。这里最值得关注的不只是“分数提高”,而是它背后的实现方式是否具备可复用性——如果只是靠更大规模的训练数据记住更多题目解法,那换一道新题还是会崩;如果是通过推理时计算量的增加,让模型在生成答案前进行更充分的内部搜索,那这套机制就值得所有做 AI 应用的人重新审视。

这篇内容的读者,我定位为三类人:

  • 正在做 AI 应用开发,想判断“模型推理能力到底到了什么程度”的工程师。
  • 负责技术选型、想评估不同模型数学能力的算法工程师。
  • 普通开发者,好奇“大模型做数学题”背后的机制,并希望自己动手验证。

2. Astra 内部版:这个“内部版”意味着什么

2.1 什么是内部版模型

从公开信息看,Astra 是 OpenAI 当前迭代中的一类模型体系。所谓“内部版”,指的是未随公开 API 或消费级产品一同发布、仅供内部评测与压力测试使用的模型版本。

这类模型通常具备几个特征:

  • 能力上限更高,但稳定性和安全性还未达到公开服务标准。
  • 训练或推理策略可能更激进,比如允许更长的推理时间、更大的输出预算。
  • 面向内部评测团队和红队,用于发现模型在极端问题上的表现边界。

所以“Astra 内部版攻克 10 大数学难题”不能直接等同于“大家都能用上这个能力”。它更合理的解读是:OpenAI 在模型推理能力的验证过程中,把数学难题当作一个重要的里程碑,而不是单纯的市场宣传动作。

2.2 不要在“内部版”和“公开版”之间画等号

这里有一个特别容易犯的认知错误:看到内部版做题厉害,就以为公开 API 也能达到同样的水平。

从工程实践角度看,内部版和公开版的差别可能来自多个层面。

维度内部版公开版
推理时间预算可能允许更长时间思考受成本和延迟限制
输出内容范围可输出完整推理链可能被摘要或过滤
评测集规模大规模内部 benchmark受公开数据集覆盖限制
使用稳定性面向测试,不承诺 SLA面向生产,强调稳定
安全限制红队测试中允许尝试边界上线前已收紧限制

更稳妥的判断是:公开模型的推理能力会低于或约等于内部版,但不会高于内部版。如果你在业务中需要强推理能力,不要拿“内部版新闻”作为选型依据,一切以实际可用的 API 表现为准。

2.3 数学难题评测到底难在哪

一个数学模型要“攻克 10 大数学难题”,需要同时满足三个条件:

第一,理解题目。题目可能用自然语言描述,模型要从冗余文字中提取数学对象和约束条件。

第二,多步推理。解题过程可能涉及十几步推导,每一步都要保持逻辑一致,不能前面说要证明 A,后面却开始讨论 B。

第三,结果准确。最终答案必须是标准答案或等价形式,不能是“思路对但答案错”。

这三点恰好对应了大模型在实际使用中容易出现的三个问题:理解偏差、推理链条断裂、结果幻觉。这也就是为什么数学推理评测对模型能力有很高的代表性。

3. 为什么数学是模型推理能力的“试金石”

3.1 一个容易被忽略的常识:语言模型天然不擅长“按步骤思考”

大模型的本质是“根据前文预测下一个 token”。这个机制决定了它是逐步生成内容的,而不是先完整规划再输出。也就是说,模型在生成第三步时,并不知道自己第十步会写什么。

这就是多步推理的难点。即便模型在训练中见过大量数学题,它也无法保证每一步生成都严格依赖前面步骤的结论。很多时候,前几步都对,但最后一步因为注意力分散或概率采样偏移,结果就错了。

3.2 推理时计算:让模型“多想一会儿”

近两年推理模型(reasoning models)的一个核心变化,是把计算资源从“训练阶段”转移到“推理阶段”。具体来说,模型在回答复杂问题前,会先生成一段“思考”或“推理”内容,在推理空间中尝试不同路径,再选出最可靠的答案。

你可以把这一过程类比成人类做难题:不是直接下笔,而是在草稿纸上先试几种思路,排除错误分支,最后写正式答案。

这种方式在数学题上特别有效,因为数学题的验证成本低:你可以验证答案是否正确;你可以在推理过程中发现矛盾,回退到更早的假设。

Astra 内部版能够攻克高难度数学题,从机制上看,大概率就是在推理时计算上做了文章。公开的 o 系列模型已经证明了这条路可行,Astra 内部版则是把这条路继续往前推了一步。

3.3 数学题的另一个优势:可验证

我经常和团队说,评估模型能力,必须选“可验证”的任务。你让模型写一首诗,很难判断好坏;但让模型解方程,答案对就是对,错就是错。

数学题天然具备这个属性。这意味着:

  • 你可以自动化判分。
  • 你可以做多个模型的横向对比。
  • 你可以量化一次模型升级带来的收益。

对开发者和团队来说,数学推理评测是一个成本低、效果好、客观性强的模型能力验收方案。

4. “10 大数学难题”评估通常考什么

标题里的“10 大数学难题”并没有一份官方公开清单。与其猜测具体题目,我建议把它理解为一套高难度数学评测集的抽象概括。从常见的数学推理 benchmark 设计来看,这类评测通常会覆盖十个方向:

题型方向考察的能力
数论整除、同余、质数性质、丢番图方程
组合数学计数、构造、极值问题
平面几何辅助线构造、面积关系、相似三角形
不等式均值不等式、柯西不等式、放缩法
函数方程函数性质、迭代、不动点
多项式根与系数关系、整除性
概率与期望计数模型、递推、期望线性性
复数复平面运算、几何意义
数列与递推通项公式、极限、单调性
图论路径问题、匹配问题、构造性证明

注意,这只是一个示例分类,不代表 Astra 内部版的具体成绩单。但它能帮你理解一件事:所谓高难度数学题,不是四则运算或微积分课本习题,而是需要“构造性思维”和“多步逻辑链条”的竞赛级问题。

这十个方向有一个共同特点:无法靠背诵答案解决。每道题都需要模型现场组织推理步骤,这才能真正检验推理能力。

5. 实操:用 OpenAI API 搭建一个数学推理评估脚本

接下来进入本文最核心的实操部分。虽然我们无法直接使用 Astra 内部版,但我们可以用 OpenAI 公开 API 提供的推理模型,搭建一套最小化的数学推理评估流程。这套流程分为四个步骤:

  • 构造题目集
  • 调用模型获取答案
  • 多次采样并聚合结果
  • 自动判分统计

5.1 环境准备

建议使用 Python 3.10 及以上版本。需要安装 openai SDK 和 python-dotenv。

pip install openai python-dotenv

在项目根目录创建.env文件,填入你的 API Key。

OPENAI_API_KEY=sk-你的密钥

如果你已经有可用的访问权限,但在中国大陆网络环境下无法直接访问国际模型接口,需要自行评估合规边界,本文不讨论网络代理相关内容。本文假设你已经处于合法合规的 API 调用环境。

5.2 单题求解:最基础的调用方式

先写一个最小函数,向模型发送一道数学题,并让它返回答案。

# 文件路径:math_eval/single_question.py import os from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) QUESTION = "求方程 x^2 - 5x + 6 = 0 的所有实数根,并说明理由。" def solve_single(question: str, model: str = "o1") -> str: response = client.chat.completions.create( model=model, messages=[ {"role": "user", "content": "请解决以下数学问题。\n\n" + question} ], ) return response.choices[0].message.content if __name__ == "__main__": answer = solve_single(QUESTION) print("模型输出:") print(answer)

运行:

python math_eval/single_question.py

这个脚本的作用是跑通调用链路。注意两点:

  • model参数请替换为你有权限访问的模型,例如o1o3,或者你所在组织提供的大模型服务名称。不同模型的推理能力和延迟差异很大。
  • 对于推理模型,不要在前面加system提示“请一步步思考”,因为这类模型内部已经会生成推理过程;强行加提示可能干扰输出。

5.3 多次采样 + Self-Consistency:提升数学答案稳定性

数学题是决定性问题,理论上同一个模型多次运行应该得到相同答案。但由于大模型采样的随机性,真实情况下多次结果可能不一致。

提高稳定性的一个经典方法是 Self-Consistency(自一致性):同一道题让模型生成多个候选答案,然后统计出现次数最多的答案,作为最终输出。

这个方案不增加训练成本,只是增加推理时计算量,非常适合做模型评估。

# 文件路径:math_eval/self_consistency.py import os import collections from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) def sample_once(question: str, model: str, temperature: float) -> str: response = client.chat.completions.create( model=model, messages=[ {"role": "user", "content": "请解决以下数学问题,并给出最终答案。\n\n" + question} ], temperature=temperature, ) return response.choices[0].message.content.strip() def majority_answer(question: str, model: str = "o1", n: int = 5, temperature: float = 0.7) -> str: answers = [] for i in range(n): ans = sample_once(question, model, temperature) print(f"第 {i + 1} 次采样:{ans[:200]}...") answers.append(ans) counter = collections.Counter(answers) final_answer, count = counter.most_common(1)[0] print(f"多数投票结果出现 {count} 次") return final_answer if __name__ == "__main__": question = "求方程 x^2 - 5x + 6 = 0 的所有实数根,并说明理由。" final = majority_answer(question, n=3, temperature=0.4) print("最终答案:") print(final)

这段代码的核心逻辑是“多次采样 + 字符串计数”。它存在一个明显的工程问题:如果模型输出的文本措辞略有不同,但数学答案相同,字符串计数会认为它们是不同答案。所以更稳妥的做法是,从输出中提取结构化答案后再做比较。

5.4 从模型输出中提取答案并自动判分

建议在提示词中明确要求模型以固定格式输出最终答案,方便程序解析。

以求解一元二次方程为例,我们可以要求模型在最后单独一行输出ANSWER: [x1, x2]

# 文件路径:math_eval/eval_one_question.py import os import re from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) PROMPT_TEMPLATE = """ 请解决以下数学问题。要求: 1. 给出详细的推理过程。 2. 在最后单独一行输出最终答案,格式为:ANSWER: <结果> 问题: {question} """ def solve_with_answer(question: str, model: str = "o1") -> dict: response = client.chat.completions.create( model=model, messages=[ {"role": "user", "content": PROMPT_TEMPLATE.format(question=question)} ], ) full_text = response.choices[0].message.content.strip() match = re.search(r"ANSWER:\s*(.+)", full_text) extracted = match.group(1).strip() if match else "N/A" return { "full_text": full_text, "extracted_answer": extracted, } if __name__ == "__main__": question = "求方程 x^2 - 5x + 6 = 0 的所有实数根,并说明理由。" result = solve_with_answer(question) print("抽取到的答案:", result["extracted_answer"])

运行这个脚本,正常输出应该抽取到[2, 3][3, 2]这类等价答案。

到这里,一个最小可用的评估单元已经跑通了。接下来要做的,就是把单题逻辑扩展到多题批量评估,并自动计算正确率。

5.5 批量评估与正确率统计

下面的脚本使用一个非常小的题目集演示批量评估流程。你可以把这个列表替换成自己的题目。

# 文件路径:math_eval/batch_eval.py import os import re from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) QUESTIONS = [ {"question": "求方程 x^2 - 5x + 6 = 0 的所有实数根,并说明理由。", "answer": "[2, 3]"}, {"question": "求 2^10 的值。", "answer": "1024"}, {"question": "求 1 到 100 之间所有整数的和。", "answer": "5050"}, ] PROMPT_TEMPLATE = """ 请解决以下数学问题。要求: 1. 给出详细的推理过程。 2. 在最后单独一行输出最终答案,格式为:ANSWER: <结果> 问题: {question} """ def solve_with_answer(question: str, model: str = "o1") -> str: response = client.chat.completions.create( model=model, messages=[ {"role": "user", "content": PROMPT_TEMPLATE.format(question=question)} ], ) full_text = response.choices[0].message.content.strip() match = re.search(r"ANSWER:\s*(.+)", full_text) return match.group(1).strip() if match else "N/A" def normalize_answer(text: str) -> str: # 简单归一化:移除空格、中括号、换行,统一数字格式 text = re.sub(r"[\[\]\s]", "", text) text = text.replace(",", ",").replace("。", ".") return text if __name__ == "__main__": correct = 0 total = len(QUESTIONS) for i, item in enumerate(QUESTIONS, start=1): predicted = solve_with_answer(item["question"]) expected = item["answer"] ok = normalize_answer(predicted) == normalize_answer(expected) correct += 1 if ok else 0 print(f"题目 {i}: {'通过' if ok else '失败'}") print(f" 期望答案: {expected}") print(f" 模型答案: {predicted}") print() print(f"正确率: {correct}/{total} = {correct / total:.2%}")

运行:

python math_eval/batch_eval.py

这只是演示架构。真实的数学评测集可能达到几百上千题,需要考虑并发调用、超时重试、成本控制、缓存中间结果等工程问题。

6. 运行结果与效果验证

6.1 预期输出

如果一切正常,批量评估脚本会输出类似下面的内容:

题目 1: 通过 期望答案: [2, 3] 模型答案: [2, 3] 题目 2: 通过 期望答案: 1024 模型答案: 1024 题目 3: 通过 期望答案: 5050 模型答案: 5050 正确率: 3/3 = 100.00%

6.2 如何判断评估流程有效

判断一个评估流程是否有效,不能只看正确率,还要看三个指标:

  • 模型是否输出了可解析的ANSWER:行。如果半数以上输出都无法抽取,说明提示词设计有问题。
  • 正确率是否与题目难度匹配。如果全部是简单题,正确率 100% 没有区分度;如果全是高难度竞赛题,正确率 20% 也很正常。
  • 多次运行结果是否稳定。同一道题,正确率不应该出现 0% 到 100% 的巨大波动。

6.3 运行失败怎么办

如果脚本运行失败,按照以下顺序排查:

  1. 检查 API Key 是否正确,是否具有对应模型权限。
  2. 检查网络连接是否能正常访问 API 服务。
  3. 检查模型名是否拼写正确,是否使用了你账号下不存在的模型。
  4. 检查响应是否被截断或触发内容过滤,导致ANSWER:行缺失。

7. 常见问题与排查思路

在实际跑数学推理评估时,下面几个问题出现频率最高。

问题现象可能原因排查方式解决方案
提示词要求输出ANSWER:,但模型没有输出模型生成的推理过程太长,后段被截断查看finish_reason是否为length增加max_tokens,或将ANSWER:行提前到开头
多次运行同一道题,答案不一致采样温度过高或模型本身不稳定对比多次输出内容降低温度;使用 self-consistency 多数投票
模型答案正确但格式不同未约定标准答案格式检查输出中是否有等价表达式使用数学表达式解析器或子串匹配做宽松比对
高难度题正确率偏低模型推理能力不足以解决该题查看推理链中哪一步开始出错换更强模型;给模型更多推理预算;降低题目难度
API 返回超时推理模型思考时间较长查看调用日志和响应耗时调整客户端超时时间;减少单次并行请求数

这里的核心经验是:不要用字符串完全匹配来判定数学答案。数学答案存在大量等价形式,如33.0[2, 3][3, 2]1/20.5。判分器设计得是否合理,直接决定评测结论是否可信。

8. 最佳实践与工程建议

搭建一套可以持续使用的数学推理评估系统,建议从以下六个方面做工程化设计。

8.1 题目集隔离,避免数据污染

从公开 benchmark 里找题确实方便,但这些题目很可能已经出现在模型训练数据中。如果一个模型在训练时见过某道题的答案,那么它在评测中做对这道题,并不代表推理能力强,只是记忆能力好。

更稳妥的做法是:自己构造题目,或者使用模型训练截止日期之后的新题。你可以把题目按难度分级,确保评测集能区分出模型的真实能力。

8.2 提示词设计要克制

对推理模型来说,提示词不需要过于复杂的 “Let's think step by step” 引导。推理模型内部已经有完整的推理流程控制。

推荐的做法是:

  • 明确要求“给出推理过程”。
  • 明确要求“最后一行用ANSWER:输出结果”。
  • 不要在提示词中暗示答案。
  • 一次只问一道题,不要把一个评测集塞进一次请求。

8.3 采样策略按模型区分

推理模型本身会做内部搜索,温度通常设置得比较低,比如 0 到 0.2。普通对话模型则需要更高的采样温度来产生多样化的候选答案,再用 self-consistency 做聚合。

这个选择会让评测结果产生明显差异。建议在评估报告中明确记录模型名、温度、采样次数,保证结论可复现。

8.4 判分器要支持数学等价形式

正确的做法是将答案转为规范形式再比较。例如:

  • 解析 LaTeX 表达式并使用符号计算库判等。
  • 对数值答案设定允许误差。
  • 对集合答案做排序后比较。

如果只是简单字符串匹配,评测结果可能低估模型能力,导致你错过一个本来可用的模型。

8.5 成本与并发控制

推理模型的 token 消耗远高于普通模型,因为输出中包含了大量推理链。批量评估前,先估算单题 token 消耗和成本。

建议在工程实现中加入:

  • 结果缓存:同一道题不重复调用。
  • 并发限制:避免触达 API 限流。
  • 失败重试:对网络波动做好指数退避。
  • 阶段检查:先跑 10 道题验证流程,再跑完整评测集,不要一上来就全量跑。

8.6 安全与合规底线

在构建评测数据和调用外部模型服务时,务必注意:

  • 只使用你有权使用的题目或数据,不要上传未脱敏的敏感信息。
  • 不将评测集当作攻击或绕过安全限制的工具。
  • 在测试环境验证流程,确认稳定后再用于生产判断。
  • 对涉及安全、权限、数据删除等操作,坚持最小权限原则。

大模型的数学推理能力评测是纯粹的技术工程问题,符合公序良俗,相关操作也应在合法合规的前提下进行。

9. 总结与后续学习方向

Astra 内部版攻克 10 大数学难题这件事,真正的价值不在“又刷了一个榜”,而在于它再次验证了一个趋势:大模型能力的提升,正在从“训练时堆数据”走向“推理时给足思考空间”。

数学推理评测是一个非常好的抓手,因为它可验证、可量化、可复现。通过本文的脚本,你可以快速搭建一套自己的评测流程,去对比不同模型在你业务问题上的推理表现。

关于“AI 如何解决数学难题”,下列方向也值得继续关注:

  • OpenAI 近年来在 API 协议、模型接口、开发工具上的持续演进,说明推理模型正在变成可调用的标准工程能力。
  • 以 Codex 为代表的编程智能体,把模型能力从“回答问题”延伸到“执行任务”。数学推理能力同样可以被复用到算法题、代码审查、数据分析等真实开发流程。
  • 各类开源的评估工具链让普通开发者也能构建自己的能力评测体系。核心不是工具本身,而是“用什么题目、怎么判分、如何避免被测试集污染”这套方法论。

建议你从今天开始做一件小事:挑一个你业务中确实需要“多步逻辑”的任务,构造 20 道左右的小问题,用本文的脚本跑一遍,看看你正在用的模型,在真实场景下是否值得信任。这一步完成之后,你对大模型推理能力的理解,会超过大多数只看新闻的人。

这篇文章先写到这里。如果你后续想在数学表达式判分、大规模并发评测、推理模型选型对比上继续深入,推荐先把本文的脚本改成带缓存和重试的版本,再逐步扩展题目集。自己动手跑一版评测,比看任何人的评测截图都更可靠。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 19:15:58

拼多多2019秋招编程题全解析:从动态规划到贪心策略

拼多多2019秋招编程题合集&#xff0c;这套题在当年出来之后&#xff0c;网上讨论度一直挺高。最近又陆续有人翻出来问&#xff0c;说想拿它当秋招练手的材料&#xff0c;我趁着整理旧资料的机会&#xff0c;把这套题重新过了一遍&#xff0c;顺手把每道题的核心解法和踩过的坑…

作者头像 李华
网站建设 2026/9/7 10:12:32

凌晨三点被200条告警炸醒后,我把运维交给了AI——AIOps从“被动救火”到“主动自治”的底层逻辑重构

凌晨三点被200条告警炸醒后&#xff0c;我把运维交给了AI——AIOps从“被动救火”到“主动自治”的底层逻辑重构 一句话概括 AIOps不是“运维AI”的功能叠加&#xff0c;而是以可观测性数据为血脉、以机器学习算法为骨架、以大语言模型为推理引擎的运维智能闭环体系——它的使命…

作者头像 李华
网站建设 2026/9/8 23:29:56

脑电情绪识别模型实战:从BiGRU到GCN的选型与避坑指南

简介&#xff1a;本资源面向脑机接口、情感计算及神经工程方向的研究者与研究生&#xff0c;提供一套开箱即用的脑电情绪识别深度学习模型集合&#xff0c;覆盖BiGRU、LSTM、CNN、GCN、DNN、RNN等23种主流架构&#xff0c;完整支撑DEAP、SEED等公开数据集上的端到端实验流程。压…

作者头像 李华
网站建设 2026/9/8 20:10:09

零基础板绘入门:数位板、数位屏、iPad和绘画软件怎么选

零基础学画画&#xff0c;第一个劝退点往往不是画技&#xff0c;而是板子和软件怎么选。数位板、数位屏、iPad、Procreate、PS、SAI、CSP、Krita&#xff0c;每一条教程都说自己“适合新手”&#xff0c;结果越看越不知道买哪个。这篇想直接给出判断方法&#xff1a;先想清楚你…

作者头像 李华
网站建设 2026/9/7 21:04:10

Claude Code v2.1.251 新特性:模型切换钩子与远程流式输出

Claude Code v2.1.251 更新中&#xff0c;模型切换钩子和远程控制流式输出是两个值得单独拆开来看的能力。很多团队已经开始用 Claude Code 做代码生成、批量重构和自动化运维&#xff0c;但切换模型一直依赖人工操作&#xff0c;远程控制场景里的终端输出又经常出现“等不到结…

作者头像 李华
网站建设 2026/9/8 9:01:46

Coze记忆功能解析:从失忆到越聊越懂你的智能体

很多做智能体的开发者都有过这样的经历&#xff1a;用户第一次来咨询时&#xff0c;礼貌地报上称呼、说明了业务需求和偏好&#xff0c;你耐心解答完&#xff0c;一切都很顺利。结果过了一周&#xff0c;用户再次打开对话&#xff0c;把同样的背景信息又发了一遍——因为智能体…

作者头像 李华