微信扫码
添加专属顾问
DSPy 3 + GEPA 框架重新定义了RAG技术,通过自动推理与提示优化,让AI更高效地自我进化。 核心内容: 1. GPT-5.2的实用场景优化与性能提升 2. DSPy框架如何简化语言模型应用开发 3. GEPA技术让LLM通过自我反思实现持续改进
上周,OpenAI 在半夜突发“飙车”,一度全网骚动。GPT-5.2 发布,全球 AI 王座再度易主。
四个月左右就迎来一次大版本更新并不常见。导火索是竞争压力。路透社报道(https://www.reuters.com/technology/openai-launches-gpt-52-ai-model-with-improved-capabilities-2025-12-11/) 称,Altman 在 12 月初下达了“code red”加速研发,而其背景正是应对 Google 的 Gemini 3。
OpenAI 本身也将其定位为:“(不是堆新功能)我们在 intelligence、code processing、long-form text comprehension 等方面显著提升,尤其擅长创建 spreadsheets、制作 presentations 以及其他复杂的多步骤任务。”
换句话说,GPT-5.2 不是“颠覆性大改”,而是一次面向实用场景的“精修版”:在 reliability、long-term context、tool execution、output generation 等维度全面加强。与其说是新玩具,不如说是更顺手的工作利器。
近年来,“Agentic AI” 正在执行一系列复杂动作:LLM 调用工具、推理,最后给出答案。为了优化这些动作,传统范式通常依赖 reinforcement learning(RL,强化学习)来“用 reward 学到好动作”。但问题在于:
去年我做过一个关于 DSPy 的视频,之后它进步很大。DSPy 的核心思想是把语言模型视为一种“device”,类似深度学习中的 CPU、GPU。
在 DSPy 中,你只需声明所需的 “Natural Language Signatures”,而不必纠结 Prompt 的具体实现细节(事实上,一年实践后我们发现,过度纠结这些细节意义有限,LLM 输出的不稳定性并不会因此本质改变)。
可以这样理解 DSPy:基于这些 signatures,DSPy 会自动生成、优化、微调 Prompt,最终产出符合预期的结果。
GEPA 的想法:鼓励 LLM “反思自己的失败”。不同于 reinforcement learning,GEPA(Genetic-Pareto Prompt Optimizer)采用一种方式:让 LLM 自己用 natural language 分析自身行为,并提出下次如何改进。也就是说,与其调整模型参数,我们更是去“反思并进化”prompt 本身。
我会准备一个 SPACE_KNOWLEDGE。这种技术是一种替代训练方式,效果优于 reinforcement learning,并提出一个与太空有关的问题:“Which space telescope is most powerful?” 当你观察这个 chatbot 如何生成输出时,
你会看到 agent 使用 Term Frequency Inverse Document Frequency 来计算 term frequency(一个词在文档中出现的频率,以及它在所有文档中出现的稀有程度),然后用 cosine similarity 找出哪些 chunks 与你的问题真正相似,而不是仅仅出现了随机词匹配。检索出最相关的前三个 chunks 之后,
Agent 会用 confidence-based RAG 结合 chain-of-thought 生成答案与一个 confidence level,从而能坦诚地说“I don't have enough information”,而不是 hallucinate。与此同时,multi-hop RAG 会更进一步:先从 context 中抽取 bullet-pointed facts,再把这些事实综合为完整答案——这个两步流程对需要跨多来源整合信息的复杂问题至关重要,因为它能避免 AI Agent 混乱或漏掉关键关联。
接下来是 GEPA 的“杀手锏”:它不是手动调 prompt,也不是用过时的优化器(如 MIPROv2),而是采用 genetic algorithms。它会“组合优秀的 prompts”,生成更佳方案。
它引入 Pareto optimization,不是只保留一个 prompt,而是维护多个有效 prompt。同时,GEPA 引入 reflection:通过阅读 textual feedback,从错误中学习并修正。随着时间推进,GEPA 会自动产生越来越好的 prompts。
它会构建一棵 prompt evolution tree。每一次改进都像树上长出新的 branch。每个分支保留之前有效的做法,再做增量改良。一步步地,这些 prompts 会越来越接近适配 RAG 任务的“最佳指令”。而且,GEPA 比 MIPROv2 效率高 35 倍,生成的 prompts 长度更短(9 倍),表现还提升 10%。
先看最“爆”的数据。常用来评估 AI 能力的一个测试叫 “ARC-AGI-2”。
这是一个“抽象谜题即刻解(灵感)”的测试,不依赖“从过往数据里找答案(作弊)”。换言之,它测的是“先天智能”。看看分数:GPT-5.1:17.6%,Gemini 3 Pro:31.1%,GPT-5.2:52.9%(+35.3 分!)
这个提升太夸张了。是 5.1 的三倍多,几乎是 Gemini 的两倍。
如果说之前的 AI 更像“死记硬背教科书的天才”,那 GPT-5.2 已经进化为“能用巧思解决从未见过难题的天才”。那句常见的 AI 托词“我没学过所以不会”,正在成为过去式。
另一个值得关注的指标是 “GDPval”。它衡量的是在 research、planning、decision-making 等“真实世界任务”上的能力。GPT-5.1:38.8%,Gemini 3 Pro:53.5%,GPT-5.2:70.9%(+32.1 分!)
结果再次碾压。在 5.1 时,AI 还像是“等指令的新手实习生”;到了 5.2,则已升级为“能制定计划并管理项目的 manager”。
过去抱怨“AI 很聪明,但在工作中不好用”的人,会被 5.2 的“上岗能力”惊到。
GEPA 的核心来自人类学习的本质——reflection。
它不是“堆更多指令”,而是像经验丰富的导师,回看过往尝试,分析成功与不足,然后给出更好的解法。
GEPA 会构建一棵 prompt evolution tree,让每次优化像长枝一样累积改进,逐步逼近最优 prompt。
不同于传统的 reinforcement learning(RL),GEPA 利用 LLM 的反思能力,并结合 domain-specific textual feedback,而不是只依赖单一标量指标。
这就好比给模型一双“X 光之眼”,能洞察任务中的细微之处,仅用少量步骤就产出更强结果。
现在一步步看如何用 DSPy 3、GEPA Optimiser 与 Agentic RAG。我们先安装支撑所需的库。为此,执行 pip install requirements。
我需要说明,这里分享的只是部分代码。如需完整文件夹,可在我的 Patreonhttps://www.patreon.com/c/GaoDalie_AI获取。这份代码我花了相当多时间。
pip install requirements
我实现了一个 Term Frequency Inverse Document Frequency retriever,用来找到与用户问题最匹配的文档。首先,它存储所有文档,并将每个文档切分成简单的小写词项,去掉标点,使文本更干净、更易比较。
接着,它在全量语料上计算每个词的重要性:出现在很多文档里的词整体重要性更低,而只出现在少数文档里的词更重要。
当有查询进来时,会按同样方式清洗并分词,并基于词频与整体稀有度为每个词赋分。
retriever 随后将查询与每份文档进行比较,使用一种数学方法来衡量两者向量指向是否一致(cosine similarity)。
每个文档都会得到一个相似度分数,按从高到低排序,最后返回最相关的前若干文档给用户。
class TFIDFRetriever:
"""
TF-IDF (Term Frequency - Inverse Document Frequency) retriever.
This is smarter than simple keyword matching because:
- TF: Words that appear often in a document are important for that document
- IDF: Words that appear in many documents are less important overall
Example: "the" appears everywhere (low IDF), but "astronaut" is specific (high IDF)
"""
def __init__(self, documents: list[str], k: int = 3):
self.documents = documents
self.k = k
self.doc_tokens = [self._tokenize(doc) fordocin documents]
self.idf = self._compute_idf()
def _tokenize(self, text: str) -> list[str]:
"""Convert text to lowercase tokens, removing punctuation."""
import re
text = text.lower()
tokens = re.findall(r'\b[a-z]+\b', text)
return tokens
def _compute_idf(self) -> dict[str, float]:
"""Compute IDF for all terms in the corpus."""
doc_count = len(self.documents)
term_doc_counts = Counter()
fortokensinself.doc_tokens:
unique_tokens = set(tokens)
fortokenin unique_tokens:
term_doc_counts[token] += 1
idf = {}
forterm, count in term_doc_counts.items():
# Standard IDF formula with smoothing
idf[term] = math.log((doc_count + 1) / (count + 1)) + 1
return idf
def _compute_tfidf(self, tokens: list[str]) -> dict[str, float]:
"""Compute TF-IDF vector for a list of tokens."""
tf = Counter(tokens)
tfidf = {}
forterm, count in tf.items():
tfidf[term] = count * self.idf.get(term, 1.0)
return tfidf
def _cosine_similarity(self, vec1: dict, vec2: dict) -> float:
"""Compute cosine similarity between two sparse vectors."""
common_terms = set(vec1.keys()) & set(vec2.keys())
if not common_terms:
return0.0
dot_product = sum(vec1[t] * vec2[t] fortin common_terms)
norm1 = math.sqrt(sum(v ** 2forvin vec1.values()))
norm2 = math.sqrt(sum(v ** 2forvin vec2.values()))
if norm1 == 0 or norm2 == 0:
return0.0
return dot_product / (norm1 * norm2)
def __call__(self, query: str) -> list[str]:
"""Retrieve top-k documents most similar to the query."""
query_tokens = self._tokenize(query)
query_vec = self._compute_tfidf(query_tokens)
scores = []
fori, doc_tokens inenumerate(self.doc_tokens):
doc_vec = self._compute_tfidf(doc_tokens)
score = self._cosine_similarity(query_vec, doc_vec)
scores.append((score, i, self.documents[i]))
# Sort by score descending
scores.sort(key=lambda x: x[0], reverse=True)
return [doc forscore, idx, doc in scores[:self.k]]
随后,我实现了两种基于 retrieval augmentation generation 的问答方式。第一种中,Agent 会接收问题,检索最相关的文档,将它们拼接为一个 context,然后生成答案,同时给出置信度。
它会保存使用过的文档,便于回溯答案来源。第二种针对需要更多推理的难题。
它先同样检索文档,然后只抽取与问题相关的关键 facts,最后再把这些 facts 组合成清晰的答案。
它还会同时保留已检索的文档与抽取的 facts,便于你检查每一步,理解最终答案是如何构建出来的。
class RAGWithConfidence(dspy.Module):
"""RAG that reports its confidence in the answer."""
def__init__(self, retriever):
super().__init__()
self.retriever = retriever
self.generate = dspy.ChainOfThought(AnswerWithConfidence)
defforward(self, question: str):
docs = self.retriever(question)
context = "\n\n".join(docs)
result = self.generate(context=context, question=question)
result.retrieved_docs = docs
return result
classMultiHopRAG(dspy.Module):
"""
Multi-hop RAG: Extract facts first, then synthesize an answer.
This helps with complex questions that require combining information
from multiple sources.
"""
def__init__(self, retriever):
super().__init__()
self.retriever = retriever
self.extract = dspy.Predict(ExtractFacts)
self.synthesize = dspy.Predict(SynthesizeAnswer)
defforward(self, question: str):
# Step 1: Retrieve
docs = self.retriever(question)
context = "\n\n".join(docs)
# Step 2: Extract relevant facts
extraction = self.extract(context=context, question=question)
# Step 3: Synthesize answer from facts
result = self.synthesize(facts=extraction.facts, question=question)
# Attach intermediate results for inspection
result.retrieved_docs = docs
result.extracted_facts = extraction.facts
return result
然后我用 GEPA 让系统逐步学习与改进答案。首先,metric 会用期望答案来评估模型输出:完全匹配则满分。
若只有部分正确,就给较低分,并解释缺失了什么。如果答案错误,则给低分并提供清晰的错误反馈。
这些反馈非常关键,因为 GEPA 会读取它们,并据此改进后续 prompts。Simple RAG 模块的工作流是:接收问题,检索相关文档,将其拼接为一个 context,并基于该 context 生成答案。
GEPA 会利用 metric 的分数与反馈,不断自动进化这个 RAG 系统的 prompts。
def gepa_metric(gold, pred, trace=None, pred_name=None, pred_trace=None):
"""
GEPA metric function with feedback.
GEPA is special because it can use textual feedback to guide evolution.
This function returns both a score AND feedback about what went wrong.
"""
expected = gold.expected_answer.lower()
actual = pred.answer.lower() ifhasattr(pred, 'answer') else""
# Check if the key information is in the answer
if expected in actual:
return1.0# Perfect match
# Partial credit for relevant answers
expected_words = set(expected.split())
actual_words = set(actual.split())
overlap = len(expected_words & actual_words) / len(expected_words) if expected_words else0
if overlap > 0.5:
score = 0.7
feedback = f"Partially correct. Expected '{gold.expected_answer}' but got related content."
elif overlap > 0:
score = 0.3
feedback = f"Contains some relevant info but missing key details. Expected: '{gold.expected_answer}'"
else:
score = 0.0
feedback = f"Incorrect. Expected answer to contain '{gold.expected_answer}' but got: '{actual[:100]}...'"
# Return score with feedback for GEPA's reflection
from dspy.teleprompt.gepa.gepa_utils import ScoreWithFeedback
return ScoreWithFeedback(score=score, feedback=feedback)
classSimpleRAGForOptimization(dspy.Module):
"""A simple RAG module that GEPA will optimize."""
def__init__(self, retriever):
super().__init__()
self.retriever = retriever
self.generate = dspy.Predict("context, question -> answer")
defforward(self, question: str):
docs = self.retriever(question)
context = "\n\n".join(docs)
returnself.generate(context=context, question=question)
GPT-5.2 也许不是能做“全新魔法”的模型,但它能把“原本不敢交给 AI 的任务”,变成“可以放心委托的任务”。
未来仍有挑战,比如 multimodal 支持、real-time optimization、安全保障,但这同样意味着巨大的发展空间。
在 2026 之后,GEPA 有望催生诸如 self-correcting AI systems、neural-symbolic integration、meta-prompt engineering 等创新应用。GEPA 无疑会继续在 prompt 技术的未来中扮演核心角色。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-18
你给AI喂的"企业记忆",可能全是假的
2026-07-17
RAG 怎么评估呢?RAG 评估体系5 个指标让你的知识库从「盲飞」到「可量化」
2026-07-17
RAG 工程里的上下文剪枝:如何减少 68% 的上下文
2026-07-15
RAG 最难的不是向量库,而是知识链路
2026-07-14
别再手调 RAG 了,让 Loop 自己找配置
2026-07-14
9.7k Stars,阿里内部跑了几年的向量数据库开源了,不用起服务,import 就能用
2026-07-13
AI知识库从零到一:个人wiki+企业RAG方案
2026-07-10
千万文档级 RAG 如何逼近零幻觉
2026-04-27
2026-04-23
2026-05-27
2026-05-14
2026-04-22
2026-04-27
2026-04-30
2026-05-11
2026-06-18
2026-04-22
2026-07-04
2026-06-23
2026-06-23
2026-06-15
2026-06-10
2026-06-10
2026-05-20
2026-05-18
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。