Skip to content
Dormon's Hideaway
Go back

从零开发AI Agent所需10项技能

来源:抖音 @双越AI club

AI Agent的开发需要一系列核心能力的支撑,这些能力共同构建了一个智能且高效的系统。以下是对开发一个AI Agent所需的十大技能的详细解析。

ReAct 循环机制

AI Agent的基础是一个ReAct循环,它代表着“推理”(Reasoning)和“行动”(Action)。 用户向大型语言模型(LLM)发起请求,LLM根据请求进行推理,判断是否需要调用外部工具。如果需要,LLM会调用工具获取信息,然后将信息反馈给LLM进行进一步处理。若无需工具,LLM会直接生成回复。这个循环是所有现代AI Agent的基石,但其本身不能直接用于实际应用,需要在此基础上扩展更多功能模块。

工具(Tools)

Tool是LLM的“手脚眼耳鼻”,赋予LLM与外部世界交互的能力。基础的Tool包括文件读写(如read_file, write_file)、命令执行(exec)、Python脚本运行(run_python)、以及网络操作(web_search, web_fetch)等。这些内置工具让Agent能够执行特定任务或获取信息,例如搜索网络、读取或创建文件。Tools是贯穿整个Agent系统的核心模块,没有Tools,Agent将无法进行实际操作,只能进行简单的问答,形同虚设。

技能(Skills)

Skills是对Tools的封装和管理。当Tools数量庞大时,LLM难以有效管理和选择。Skills机制通过加载特定技能(load_skill),自动创建技能(skill-creator),以及发现社区中的优秀技能(find-skills)如PDF处理(pdf)和自定义技能(baoyu-skills)等,让LLM能根据用户需求动态加载和调用技能,提高其问题解决能力。这种机制使得Agent可以根据情境按需使用专业工具,避免了模型“乱套”的风险。

记忆(Memory)

记忆功能对于个人AI助手至关重要,它确保Agent能记住用户的名称、偏好、职业、计划等信息。记忆主要分为以下几类:

记忆的存储和检索通过类似SQLite FTS(全文搜索)的技术实现,支持记忆的创建(m-create)和检索(m-retrieve),并能考虑相关性和时间衰减性,确保检索到的记忆是最相关和最有价值的。

上下文(Context)

LLM的请求是无状态的,这意味着每次请求都是独立的。为了维持会话的上下文,每次请求需要附带之前的聊天记录和相关信息。当上下文过长时,会导致Token消耗过多,费用增加,并可能引发LLM的“幻觉”或降低效率。因此,上下文压缩(compact)成为关键。

ZhTalk采用了多层压缩策略,以减轻Token和费用的负担,提高Agent的效率和准确性。常用的压缩策略包括微压缩(micro-compact),工具压缩(tool-compact)以及自动压缩(auto-compact)等。这些压缩策略能够有效减少发送给LLM的数据量,提高响应速度并降低成本。

权限(Permission)

AI Agent并非完全可靠,可能存在幻觉、错误或执行危险操作的风险。为保障用户数据安全和系统稳定,权限管理不可或缺。权限分为读写(read, write)、执行(exec)和网络访问(network)等,根据危险程度有不同等级的判断。对于高风险操作,Agent会直接拒绝;对于中等风险,会通过“人在回路”(human-in-the-loop)机制,让用户确认后执行;而低风险操作则直接通过,以优化用户体验。

子代理(Sub-agent)

面对复杂任务,单个Agent可能效率低下。子代理(Sub-agent)允许将任务分解成更小的、独立的子任务,并分配给不同的子Agent并行处理。每个子Agent拥有独立的上下文、工具和技能,互不干涉。当一个子Agent处理完子任务后,会将结果返回给主Agent,主Agent再进行汇总和进一步处理。这种机制有效降低了Token消耗,提高了处理效率和响应质量。

会话(Sessions)

多会话管理对Agent的可用性至关重要。用户可以创建新会话(create/new),列出所有历史会话(list/sessions),并随时回溯到之前的会话(rewind)。这使得用户可以在不同任务之间灵活切换,而不会丢失之前的上下文。同时,会话管理也方便了context的持久化和检索。

命令(Command)

Agent通过命令(slash-command)与用户交互。除了聊天功能外,用户还可以通过输入特定命令来执行功能,如new(开始新对话)、rewind(回溯会话)、sessions(列出所有会话)、compact(压缩上下文)等。此外,Agent还需要支持系统命令(system-cmd),让用户可以直接通过Agent执行系统操作,增强灵活性。

钩子(Hook)

Hook机制提供了在特定事件发生前后插入自定义逻辑的能力,例如在调用工具前执行预处理(pre-tool)、在调用工具后执行后处理(post-tool),或者在会话创建前后执行特定操作。Hook允许开发者或用户自定义Agent的行为,使其更灵活和适应多变的需求。例如,可以利用Hook来集成AI Agent的学习成果。

查询引擎(Query Engine)

查询引擎用于处理API请求、流式处理、缓存管理、错误处理、重试机制,以及处理速率限制和Token限制。这是一个综合性的模块,确保Agent在执行复杂操作时能流畅、稳定地运行。它的存在,使得Agent能够以高效、可靠的方式与各种外部服务和数据源进行交互,避免了因外部服务不稳定导致的Agent故障。

技术栈(Tech Stack)

实现ZhTalk AI Agent需要选择合适的技术栈。目前,该项目主要采用以下技术:

以上十大技能和技术栈共同构成了AI Agent的强大能力。通过不断优化这些方面,可以开发出更智能、更高效、更安全的AI Agent,为个人和企业提供全面的智能助手服务。


Share this post:

Previous Post
Agent高危操作防护机制设计与落地
Next Post
AI绘画风格定制:一小时打造专属形象