写作——代理人工智能作业
姓名: 塞缪尔·梅德丁 日期: 2026-03-30 代理已构建: 文献综述代理(选项A--语义学者+本地PDF RAG)
______________________________________________________________________
第二部分:任务分析
研究问题: LLM代理如何处理工具故障和错误恢复?
超出表面水平搜索的深度
使用当地RAG管道最引人注目的是它发现了东西 正常的元数据搜索会完全错过。就像我查询“工具故障”时一样 LLM试剂的回收”,它引用了Wang等人(2023)的一段话,他们 讨论代理如何“学习执行自我调试”,这实际上是在 方法部分,而不是摘要。ReAct论文也是如此(姚 等人,2022),我直接从结果部分得到了两个具体数字: 幻觉占思维链假阳性的14%,而只有6% 在ReAct中,“非信息性搜索结果占错误案例的23%。” 这两个数字都没有出现在摘要中,所以如果你只是略读一下 语义学者,你只知道ReAct“优于”CoT,而没有任何 通过多少或以何种方式的想法。
我运行了五个不同的本地检索查询,总共得到了18个结果。关于 其中三分之一有实际的实验级细节,如具体数字或消融 语义学者没有进行过比较。另外三分之二几乎是 只是重申摘要中已经说过的话。所以当地的图书馆是真的 对于三分之一的块来说可能很有用,这些块真的觉得有意义,但不如 正如我所料,令人印象深刻。
我注意到的更大的问题是,我开始使用的语料库太集中了 基于推理的错误恢复,如Reflexion、Self-Refine和ReAct。 它基本上没有像重试逻辑或 回退工具。其中一部分就是自“错误恢复”以来关键字是如何工作的 自然会拉推理论文。为了解决这个问题,我添加了四篇论文:CRITIC(Gou等人。, 2023),ExpeL(赵等人,2024),Chen等人(2023)关于错误检测和 以及Zhu等人(2023)关于动态重试的研究。这些都着眼于工具故障 作为一个系统问题,而不是一个完全不同的推理问题 原始语料库根本没有涵盖的角度。
本地检索贡献
当地的图书馆对于深入研究我已经读过的论文真的更有用 知道是相关的,而不是寻找新的。语义学者处理 发现部分,然后RAG管道拿出了具体的索赔和数字 这实际上支持了为什么这些论文很重要。最有用的东西来自 ReAct(姚等人,2022)和Voyager(王)的方法和实验部分 等人,2023),因为这些章节直接讨论了错误恢复机制 而不仅仅是在高层次上构建问题。
最不有用的结果来自调查论文,其中检索到的块是 主要是定义和背景,没有太多具体证据。那些大块 相似性得分在0.45到0.52之间,高于阈值但低于阈值 0.55+的范围,结果实际上是可靠的。这让我想到 阈值可能应该根据您搜索的内容进行不同的调整 对于特定的事实查询,该值较高,而当你只是想获取时,该值较低 对一个话题的总体感觉。
至少一次失败
API速率限制: 第一次测试基本上是一场灾难,因为 Semantic Scholar在每一个请求中都返回了429个错误。这敲 四个代理工具中的三个(search_papers、get_apper_tails、get_citions) 因此,代理只能使用本地检索,没有回退,也没有办法 缓存任何东西。让这件事特别糟糕的是,它就发生在 在收集到任何有用的结果之前开始,因此整个外部搜索阶段 第二天必须在完全不同的会议上重新进行。
查询灵敏度: 当我质疑“反思纠错自我完善”时 排名第一的结果是Self-Refine(Madaan等人,2023),相似性为0.5821 而不是Reflexion(Shinn等人,2023),Reflexion的得分仅为0.4975,排名第四。 这两篇论文都是关于重叠的想法,但如果有人希望Reflexion出现 首先,对于该查询,他们可能会很快失去对系统的信任。一、 将问题重新表述为“言语强化学习代理自我反思” 反射正确地出现在0.6103的第一位,但你真的不必知道 一篇论文使用的确切框架只是为了找到它。嵌入空间根本不是 按照你希望的方式按概念组织事情。
块状边界伪影: 随着原始角色级别的分块 检索到的段落刚好截断了句子的中间部分。有一块我拿回来了 “必需参数,可选”,脱离上下文完全没有意义,但 乍一看,这似乎是一个正常的结果。一些大块也在争论中开始了 所以你可以在没有设置的情况下得出结论。这两件事都很容易 使代理人以误导的方式引用某事。
总体评价: 如果你把它当作一个发现工具,并对它进行任何验证 然后引用它真正有用的。它可以显示特定的数字和索赔 20多篇论文比手工快得多。但如果你相信它是 如果不检查真相,你就会遇到问题。利率限制 检索灵敏度和块问题都可能独立地产生不良输出。 它最好被认为是一种可以加快已经有研究的人的研究速度的东西 他对球场很熟悉,能在有什么不对劲的时候接住。
______________________________________________________________________
第三部分:反思
3.1构建过程
对我来说,主要的决定是RAG参数。根据我的选择,我看到了准确性和输出的巨大差异。chunk_size=512 (2~3句话) 平衡上下文与精度。我考虑了1024作为更多背景,但它会 在相关部分旁边返回更多不相关的文本。这 similarity_threshold 0.3是非常宽容的,所以0.3更注重回忆而非精确性。
此外,最初的分块实现是字符级的。这就是作业描述所使用的。克劳德实施 chunk_text() 和 retrieve() 第一次尝试时正确,滑动窗口和ChromaDB查询模式是 直截了当。不过,我看到字符级组块会产生句子中间的剪切,这真的会损害检索质量。然后我专注于重写chunk_text() 两者都 rag_pipeline.py 和 pdf_ingestor.py 在句子上分开 边界与 chunk_overlap 从64个字符增加到128个字符 重叠窗口有足够的空间在块之间有真实的句子上下文。
设置所需的迭代:嵌入模型下载超时一次 .mcp.json 需要更新Python路径以指向venv解释器。
3.2系统提示工程
我有两种不同类型的提示 default 和 concise
默认 语义学者随后使用主题分组制作了句子和单词评论。它非常适合涵盖范围和叙事流程很重要的综合文献综述写作。
简洁 首先使用了我的本地库,并限制了工具调用 两个需要具有严格模式的要点输出(主题、关键论文、, 主要主题,差距)。每个令牌的信息密度更高,但数量更少 幻觉的机会,因为它的总索赔量要少得多。权衡是 广度,只需两次工具调用,就会错过论文,默认情况就会浮出水面。
更恰当的说法是每个令牌的信息密度——你宁愿简洁明了。对于一个需要叙事和归因默认的研究生来说,写评论部分会更好,所以真正的网络化肯定会更好。
我尝试了另外两种类型的提示 structured (五个必填部分,明确工具 订购)和 critical (怀疑评估,证据优先) 在 prompts/templates.py 可通过以下方式选择 config.yaml.
3.4架构限制
我想了三种方法让事情变得更好
- 语义学者缓存 我执行了!结果现在持续到
ss_cache/ 因此代理在速率限制窗口期间正常运行。这 缓存由URL+参数键控,清除文件夹将强制执行新的API调用。
- 句子边界感知组块 我执行了!现在,切块工尊重
句子终止符,因此检索到的段落总是包含完整的思想。 chunk_overlap 被提升到128个字符,以承载更多的上下文 块边界。
- 增量摄入 未实施。当您更改任何RAG时
参数,它强制您删除并重建整个ChromaDB集合。 生产系统会对每个文档进行哈希处理,只重新嵌入更改的文件。
最大的惊喜是检索对查询短语有多敏感。语义 嵌入并不能像我使用已有代理时想象的那样处理释义。对于同一个概念,查询“反思纠错”与“代理从失败中自我提升”得出了不同的最高结果,这对我来说有点疯狂,因为它们似乎是同一件事。相似性得分范围也被超压缩(有用范围~0.4-0.65),使阈值参数出乎意料地敏感。将密集嵌入与稀疏BM25关键字匹配相结合的混合检索方法可能会降低这种敏感性。
