之前的博客中总结了使用 LangChain、LangGraph 等 Python 库开发 AI Agent 的相关代码,这篇博客总结了如何开发一个 AI Agent 应用,包括一个 Agent 应用应该有哪些功能模块和服务端架构。
Agent 设计模式
相对于传统的人工智能,AI Agent 具备通过独立思考、调用工具去逐步完成给定目标的能力。AI Agent 和大模型的区别在于,大模型与人类之间的交互是基于 prompt 实现的,用户 prompt 是否清晰明确会影响大模型回答的效果。而 AI Agent 的工作仅需给定一个目标,它就能够针对目标独立思考并做出行动。和传统的 RPA 相比,RPA 只能在给定的情况条件下,根据程序内预设好的流程来进行工作的处理,而 AI Agent 则可以通过和环境进行交互,感知信息并做出对应的思考和行动。
一个 Agent 的基本组成大概是这样的 Agent = LLM + Memory + 工具,其中 LLM + Memory 就类似我们的大脑,他可以有记忆功能,能进行思考和反馈,可以通过拆分或者规划来执行任务,最终将结果汇总并输出。有这样的大脑,再通过调用一系列工具或者工具包,就能更好地帮助我们完成设定的目标。
我们在开发 Agent 应用时,可以考虑下面几种设计模式,以便提升 LLM 的性能,让 Agent 输出更好地结果:
1 | 1. 反思 Reflection:让 Agent 审视和修正自己生成的输出; |
同时也应该考虑 Agent 具有的特性:
1 | 1. 自主性:按照人的指令,在没有人为干预的情况下自主执行任务 |
Agent 功能模块
我们开发 AI Agent 应用前,首先会考虑的是根据特定行业甚至是具体业务来开发 AI Agent 应用,例如医疗行业、金融行业、教育行业等。不同的行业和业务都有一些特定的需求和功能,但是一个 AI Agent 应用的基本功能模块大致可以有下面几个:
Agent 模块
1
2
31. Agent 创建
2. Agent 列表
3. Agent 详情Tools 模块
1
2
31. 工具列表
2. 工具详情
3. 配置工具LLM 模块
1
2
31. 模型列表
2. 模型详情
3. 添加模型Resource 模块
Monitor 模块
Evaluation 模块
Marketplace 模块
Agent 模块
Agent 模块主要功能可以有创建 Agent、运行 Agent、显示 Agent 详细信息、发布 Agent 等。
Agent 创建
创建一个 Agent 时,可以包含下面的 Agent 信息:
1 | Agent 目标:Agent 目标是我们想要 Agent 实现的最终结果,可以设定多个目标。 |
这里所说的创建 Agent,可能是创建一个 Agent,也可能是创建多个 Agent 构成一个集合(便于多个 Agent 之间相互协作),这取决于 Agent 需要实现的目标的复杂度。
Agent 列表
Agent 列表记录了用户已创建的 Agent 信息,Agent 列表中可以包括 Agent 名称、Agent 运行状态等信息。
Agent 详情
Agent 详情中可以包括 Agent 运行记录列表,点击 Agent 中的某条运行记录,可以显示 Agent 运行时的详细信息、Agent 运行时的配置信息、以及 Agent 运行时的输入输出信息。
Tools 模块
Tools 模块主要功能是显示 Tool 列表、显示 Tool 详情(详情可以包含工具的被使用信息、工具的调用日志等)、增加 Tool、配置 Tool (有些工具需要配置 API Key 等信息)。
LLM 模块
LLM 模块主要功能是对 LLM 的管理,包括 LLM 列表、LLM 使用详情、添加 LLM(添加 OpenAI 模型,或者基于 Ollama 的模型,或者本地部署的模型等)。
Resource 模块
Resource 模块主要功能是对资源的管理,包括文本文件、音频文件、视频文件的增删查改等操作,这些所有资源都保存在 Milvus 或者 Pinecone 等向量数据库中。这些资源数据可以供 Tool 或者 LLM 检索时使用。
Monitor 模块
Monitor 模块主要功能是对所有 Agent 的情况进行汇总展示,包括已创建的 Agent 数量、运行中的 Agent 数量、总消耗 Tokens 数量、LLM 的使用情况等信息。
Evaluation 模块
Evaluation 模块主要功能是对 LLM 的回答结果进行评估(可以是自动评估或者业务人员手动进行评估)并展示,以便后续根据这些评估结果对 LLM 进行优化。特别的,可以评估一些我们给 LLM 设定的约束是否达到效果。不同行业或者业务也可以设定一些特定的评估指标。
有一些开源的 Python 库可以对 LLM 的输出结果进行评估,感兴趣的可以去搜索了解一下。
Marketplace 模块
Marketplace 模块主要展示已发布的 Agent 模板、已发布的 Resource 数据、以及已发布的 Tool,并且可以安装这些模板去使用。
Agent 后端功能
根据以上分析的 Agent 应用的功能模块,后端的架构大致如下:
上面的架构图中,网关层负责转发前端的请求到后端服务;后端服务层负责提供接口与前端进行交互,上图中是根据功能模块拆分成了多个服务;MQ 层负责分发 Agent 的运行任务,这里的 MQ 层也可以使用分布式的任务调度框架替换(如 Celery、Luigi 等);Agent 层是核心功能,负责 Agent 的运行工作,包括选择 LLM、调用 Tool、查询 Resource 数据、处理 LLM 的响应数据等工作;DB 层负责缓存数据、保存结构化数据、保存向量数据。
我们开发后端服务可以使用 Python 的 Web 框架 FastAPI,开发 Agent 可以使用 LangChain 或者 LangGraph,或者其它 Python 库。
Agent 如何与行业结合
按照上面设计的 Agent 功能模块,如果需要将 Agent 与特定的行业或者业务相结合,可以有以下几个步骤:
1 | 1. 首先需要将 LLM 模块与特定的行业或者业务相结合,即需要训练或者微调出特定行业或者业务的大语言模型(微调 LLM 可以使用 LLaMA-Factory、unsloth 等开源库) |
以上就是开发 AI Agent 应用相关的一些总结,后续有时间会补充 Agent 前端组件相关的内容。