Next
作者 | Frank Wittkampf
编译 | 岳扬
AI Agents 之间往往存在很大差异(配图源自 MidJ
01 内容简介 Introduction
AI Agents 的行为关键由两点选择: (1) 它所运转的基础模型 ,以及 (2) 输入给该模型的高低文信息 。高低文信息输入的方式间接影响着 Agents 义务执行成果。甚至可以说,即使经常使用同一模型,不同的高低文内容输入也能培育各具特征的 Agents 行为形式。那么,何为 Agents 所需的“高低文信息”呢?可经过查阅下方的 “Types of Context” 图示了解关系信息。
本文将深化讨论一系列 Agents 进阶战略,依据 AI Agents 的详细需求优化高低文信息,从而优化其上班效率与准确性。 本文首先将概述五种经常出现技术战略,而后会分享一些实施细节。 文中总结的阅历经验,虽源自于和 multi-agent 团队在实践消费环境中协作的常年通常阅历,但这些阅历关于 single agent 系统亦具有宽泛的适用性和指点意义。
AI Agents 所触及的高低文类别(图片由原文作者提供)
02 了解高低文信息需求
网络上大少数在线示例及教程都偏差于采取简化手腕处置高低文信息(例如设定一个固定的高低文长度限度)。但是,在实践的 AI 运行中须要愈加细腻和成熟的方法。
依据手头义务的不同,各种 Agents 对高低文信息的需求天壤之别。 有的 Agents 或许只有的信息,而有些 Agents 为了确保回答精准,则或许须要依托少量的历史数据。由于存在这种差同性, 须要针对每一个 Agent 制订共性化的高低文治理战略。
上方是一位用户与两个 Agents(用于软件开发的 Agent 和用于软件测试的 Agent)间的交换场景:
1 User: “Please improve the sorting function I wrote from the uploaded file”2 System_prompt_for_coder: “You are a SW developer, you help the user todevelop …”3 Coding_agent: “read_file_function”4 Function_response: “coding snippet: ```some returned code```”5 System_prompt_for_coder: “You are a SW developer, you help the user todevelop …”6 Coding_agent: “I’ve improved your code by adding … and … to your code,here is the new function …”7 System_prompt_for_reviewer: “you are a SW code reviewer, you …”8 Code_reviewer_agent: “After reviewing the improved code, thereare a few more things that I would add to the code …"9 System_prompt_for_coder: “you are a SW developer, you help the user todevelop …”10 Coding_agent: “ … ”
在上述案例中,高低文的组织方式显然存在冗余且效率不高。多条对话内容都存在不用要的信息重复(比如 system prompts),同时每个 Agent 都接纳到了超出其范畴的高低文内容。为此,咱们有必要了解改良高低文治理的几种战略。
03 战略 1:Message Labeling(信息标识)
Message labeling 是调控并优化 AI Agents 义务执行互动效劳的关键手腕。借由为每次交谈的信息附加元数据标识(metadata),可以自动地挑选出对 Agents 手头义务最为关键的信息。此战略围绕几个关键方法倒退:
在关系信息的元数据上运行自动标识(smart labels),就能启用自动化选取性能(smart selection)。接上去,咱们将进一步罗列几个适用示例。
04 战略 2:针对 AI Agents 的不同需求设定不同的高低文
各 Agent 由于义务各异,其高低文需求人造也大不相反。有的 Agent 仅凭大批信息就能执行,而有的则需少量的高低文信息才干确保操作无误。这一战略是对之前所述的信息标识战略的深化运行。
关键高低文因素辨识(Critical Context Identification) :识别哪些信息对 Agents 来说比拟关键,并集中精神优化这些因素的处置流程,优化模型照应的准确度,这一点至关关键。以先前交换场景高低文中的第8行为例,用于代码审查的 Agent 仅需大批的特定高低文即可准确实现上班。理想上,若提供应它的高低文超出必要范畴,其处置结果反而或许不尽人意。
那么,它终究须要什么样的高低文呢?粗略一看便可知,用于代码审查的 Agent 仅需关注其 system prompt 及紧邻其前、含有最新版本代码的最后一条 Agent 信息(第6行)。
换言之,每个 AI Agent 都应性能为只选用自己须要的对话历史(高低文)。比如,代码审查 Agent 仅检查最近的两条信息,而代码编写 Agent 则须要更长的高低文历史作为允许。
05 战略 3:优化 System Prompts
指令位置的关系战略(Placement) :当讨论 Agents 及其 system prompts 时,不难发现 Agents 的 system prompts 位置十分关键。它该置于对话序列的起始,还是末尾?对此,目前尚无定论,实践成果依详细运行场景而异。试想,哪种位置设计能更好地促成信息的处置与反应?
1) user: "I visited dr. Fauci on Thursday, and got diagnosed with …"2) system: "Extract all medically relevant info from the user prompt"
或许
1) system: "Extract all medically relevant info from the user prompt"2) user: "I visited dr. Fauci on Thursday, and got diagnosed with …"
若在更大规模且复杂多变的对话历史中启动尝试,你会观察到即使是相反的疏导语,由于位置不同,最终成果也会有所区别。不过有一点显而易见,system prompts 应当无看法地被放置在某一特定位置,而这一决策需依据 Agents 特性和实践运行场景来选择。
耐久性考量战略(Permanence) :此外,除了 system prompts 的位置布置外,大少数状况下,还必定确保 system prompts 被标志为 “fleeting” 。这里说的“fleeting message(瞬态信息)”,象征着一旦其作用施展终了,就不会在对话记载(高低文)中继续留存。
以 agent1 为例,它或许首先接纳到一条指令(prompt),要求其临时放置疑问启动反思(step back and reflect on the problem)。紧接着的下一轮交互环节,agent1 又被要求依据之前的反思来处置疑问。在这种状况下,第二次交互时初始的提醒词(反思)不只多余,反而可无能扰 Agents ,造成解答品质下滑。因此,如若那条初始的 system prompt 能够设定为非耐久性的,即在之后的交互中不再重复发送给 Agents ,处置成果将会更佳。详细到下述例子,这象征着当第二次向 Agents 动员 LLM 查问恳求时,应将第 2 行信息剔除在外。
#1 User:"What is the meaning of the universe?"#2 System:"You're a philosopher; before you answer, step back andreflect on what the user's question implies."#3 Agent_philo:"Reflecting on this question, one can consider the universethrough various philosophical lenses - existentialism viewsit as a canvas for creating personal meaning, while cosmologysees it as a playground for understanding physical laws. Thisinterplay between human perception and scientific explorationis central to understanding our query."#4 System:"You're a philosopher, and you just reflected deeply on thequestion posed by the user. Use that insightful reflection tocraft a comprehensive answer."#5 Agent_philo:"From an existentialist perspective, the meaning of the universeis a personal journey, where each individual constructs their ownmeaning through choices and life experiences. In contrast, from acosmological viewpoint, it is about exploring and understandingthe vast, intricate laws that govern the cosmos. These perspectiveshelp us grasp the multifaceted nature of our universe, blending ourexistential quests with scientific inquiry."
经过这种方法,一切古老的 system prompt 都将从对话序列中清算进来,每条 system prompt 都会被布置在最适合的位置。这样一来,对话记载(高低文记载)将会变得洁净而有序,为双方提供了更准确与更可预测的互动环境。
06 战略 4:精简 RAG 系统中的冗余信息
关于如何经过优化 RAG 系统来增强 Agents 效率的话题,咱们足以撰写一系列文章详述,但在此仅长篇大论地概述几条。 由于 RAG 操作或许造成少量的 tokens 消耗,把握一些治理此疑问的技巧显得尤为关键。 若你对该技术方向尚不够相熟,剧烈倡导你投入足够的期间深化钻研。
初级的 RAG 教程往往假设用户上行的文档繁复、直白、明了,但 在实践运行中,大少数文档结构复杂且内容多变。 依据我的阅历,许多文档具有少量重复信息 ,比似乎一份 PDF 文章的引言、注释和论断中经常会复述同一内容;一份医疗记载中或许会频繁产生简直相同的医疗信息;或是系统日志记载中始终重复的日志记载。尤其 在消费环境下,面对海量文件检索时,规范 RAG 流程前往的内容往往会心外冗余,重复度极高。
正当应答重复内容(Dealing with Duplicates) :优化 RAG 系统高低文的第一步是识别并剔除检索文档片段中确实切重复内容及近似重复内容,以防信息冗余。确切的重复内容(Exact duplicates)易于识别,而近似重复内容(Near duplicates)则可经过语义相似性剖析(semantic similarity)、向量嵌入的多样性(diversity of vector embeddings)度量(差异大的文档片段其向量间距离较远)等多种技术来检测。如何执行这一操作极大水平上取决于详细运行情形。这里[1]提供了一些按困惑度(perplexity)分类的实例。
模型照应内容多样化(Diversity in Responses) :确保 RAG 系统输入多样性的方式关键是奇妙地整合来自多个文件的内容。其中一种简便且高效的战略是,在检索时不单纯依据语义相似度(similarity)选取最高的 N 篇文档,而是在检索查问(retrieval query)中经常使用 GROUP BY 语句。再次强调,能否采取这一战略,高度取决于详细需求场景。这里[2]也提供了一个按困惑度分类的实例。
灵活检索(Dynamic Retrieval) :既然本文聚焦于灵活高低文的构建,那么如何将这一思维融入 RAG 流程中呢?传统的 RAG 流程通常只提取排名前 N 的结果,比如最关系的 10 段文档片段。但这并不合乎人们检索信息的方式。在搜查信息时,人们普通会经常使用搜查引擎继续探求,直至找到满意答案,或许想要的内容就在搜查结果的第一页,也或许在第二页甚至更后。当然,这取决于团体的耐烦与运气。咱们也可以模拟这一环节来设计 RAG 系统,使其能够愈加灵敏地启动信息提取。也可以让 AI Agents 启动更有选用性的检索,只给出前几条结果,而后让 Agents 选择能否须要更多信息。
这里有一种介绍做法: 不要只繁多设定一个相似度阈值(similarity cutoff),而是设定高中低三个阈值界限。 举个例子,搜查结果或许包括 11 个高度相似、5 个中等相似以及 20 个细微相似的文档。若咱们设定 Agents 每次只能检查 5 份文档,接上去就由 Agents 自身选择能否须要更多资料。你可以告知 Agents ,它已阅读了 11 份高度相似文档中的 5 份,还有超越 25 份文档可供探求。经过奇妙设计提醒词指令(prompt engineering),Agents 在搜查数据时将会更快展现出更为理性的行为形式。
07 战略 5:处置高低文的初级战略
上方我将简明引见几种战略,进一步引见灵活高低文:
即时元数据标识(Instant Metadata) :如战略 1 所述,在信息中增加元数据标识可以协助咱们预先选用特定 Agent 所需的历史记载。在少数状况下,一个便捷的单词文本标签(one word text label)就足够了。知道信息起源于某一个特定性能、特定 Agent 或特定用户,就可认为信息增加一个便捷的标签。但假设处置的是十分庞大的 AI 模型照应,并且须要进一步优化,那么须要一种更初级的方法来为对话信息增加元数据标识:即应用人工自动(with AI)。
这里有一些实例:
有一种为历史对话信息(高低文信息)打标签的便捷方法 —— 独自调用一个老本较低的 AI 模型,由该模型为对话信息生成信息标识。但是,这样每次就须要启动两次 AI 模型调用,就将整个流程复杂化了。
RAG 驳回两步处置方式(Dual processing for RAG) :为了优化 RAG 流程,咱们可以思考经常使用更廉价(更快)的 LLMs 来稀释 RAG 系统的输入结果,而后再将其提供应 LLMs。经常使用这种方法的窍门在于经常使用十分便捷且不具破坏性的提醒词,将原始的 RAG 系统输入结果稀释或简化为更易于消化的方式。
例如,可以经常使用更廉价的模型来剥离那些特定信息,缩小重复,或许只选用与义务关系的文档局部。这就要求咱们了解这些较为廉价模型的优缺陷。假设与性能更弱小的模型联合经常使用,这种方法可以替咱们节俭少量老本(和期间)。
08 Implementation
OK,上文所述内容能否象征着每个 AI Agent 都须要少量的共性化代码来优化其性能呢?怎么才干提炼这些理念并宽泛运用呢?
Agent 架构设计(Agent Architecture) : 针对这些不懂,实践上存在一些条理明晰的处置打算,只是须要一些久远的布局与设计。要搭建一个能有效允许多种 Agent 运转的平台,就须要有一个 Agents 框架。假设一开局就有一套明白的设计准绳,那么便能轻松应用灵活高低文信息,从而使 Agents 速度更快、老本更低、成果更好。
灵活高低文性能正是 Agents 系统架构中的关键一环。
灵活高低文性能(Dynamic Context Configuration) :正如本文所述,每个 Agent 都有共同的高低文需求。要了解、治理这些需求,实质上就是要处置 Agents 在一切高低文中的大质变动(variation)(参考本文顶部插图)。令人欣喜的是,这些变动(variation)能够简化演绎为少数几个基础维度。上方经过一个实例,综合展现本文提及的一切概念。
想象一位用于软件开发的 Agent ,它会先布局程序开发打算,随后依据这一打算执行。这位 Agent 的高低文性能或许为:
这种性能会被保管在该 Agent 的高低文性能中。因此,咱们对 AI Agents 的定义逾越了单纯的一系列固定提醒词指令—— AI Agents 还装备有专门的灵活高低文性能。
您会发现,关于不同的 AI Agent ,这些灵活高低文性能既具有深入意义,又展现出丰盛的多样性,它们使得原本高度共性化的代码能够失掉有效且高度形象的一致治理。
09 Rounding up 总结回忆
正当治理灵活高低文不只能让 AI Agents 的表现愈加杰出,还能清楚优化其准确性✅、照应速度✈️,甚至还能缩小动力消耗⚡️……
Agents 不应局限于经常使用固定提醒词指令(prompt instructions)来定义,它还应蕴含自己的灵活高低文性能。借助简明的高低文类型划分,为每个 Agents 量身打造不同的灵活高低文性能,将极大拓展 Agents 的运行潜能。
灵活高低文性能(Dynamic Context)仅是 Agents 系统架构的冰山一角。若各位读者想要深化了解,欢迎随时与原文作者深化交换(或许参与本群众号建设的交换群聊与各位小同伴一同交换讨论)。也可以在评论区留下您的疑问或独到见地,若您感觉本文对你有所裨益,请转发给您的好友或关注咱们,这都是对咱们莫大的允许与激励!
Thanks for reading!
Frank Wittkampf
Startup Nerd & Tech Exec
参考资料
[1]
[2]
原文链接: