Agent 通用创作思路

Posted by     "虞天" on Saturday, August 3, 2024

Agent的架构

Agent 可大致被定义为如下图所示的系统:Agents = LLM + memory + planning skills + tool use

agent结构

Planning

  • 拆解子目标和任务分解:Agent能够将大型任务分解为较小,易于管理的子目标,从而高效地处理复杂任务。
  • 自查与自纠:Agent能够对过去的actions进行自我批评和自我反省,从错误中吸取教训,并在今后的工作中加以改进,从而提高最终结果的质量(本质上是产生RL的数据,RL并不需要HF)

Memory

  • 短期记忆:所有in-context learning都是利用模型的短期记忆来进行学习的。(在这背后的主要支撑是Prompt Engineering)
  • 长期记忆:为Agent提供了在较长时间内保留和recall(无限)信息的能力,通常是利用外部的向量存储和快速检索(借助向量数据库的力量实现)[召回率的高低也直接决定了Agent复杂内容记忆及检索的效果]

Tool Use

  • Agent学习调用外部应用程序的API,以获取模型训练数据权重中缺失的“额外信息”(任务相关,预训练后通常难以更改),包含当前信息、代码执行能、专有信息源的访问权限等。(code interpreter的出现本质上也是OpenAI继plugin之后对于Agent的进一步探索)

生成式AI产品分级

生成式AI的应用层次

根据AI App的智能化能力和解决问题的能力进行等级划分及整体描述,我们可以近似得到以上的能力划分表。随着智能化的程度递增,App能解决的问题范围也逐渐在扩大。

LLM的过渡状态: 操作工具 ——> 建议者 ——> 执行者 ——>控制者(决策者) ——> 高级智能体

在AutoGPT、BabyGPT和GPT-Engineer的demo爆火之后,以LLM作为核心控制器来构建L4的Agent成为一个很酷的概念。应用场景的想象空间被打开,我们发现LLM的潜力不仅限于生成写得很好的副本、故事、文章和程序,它还可以作为一种强大的工具解决通用问题。

常见的主流 Agent 框架简介

除了魔搭开源的ModelScope-Agent,AI Agent 领域还有许多开源框架,它们各自有不同的特点和应用场景,一些较为常见的主流框架有:

ModelScope-Agent

ModelScope-Agent是由阿里云AI模型社区魔搭(ModelScope)2023.8.7发布的开源框架,代码清晰简洁。

提供了一个通用的、可定制的Agent框架。它提供了一个用户友好的系统库, 具有可定制且功能全面的框架、使用开源LLMs作为核心组件、支持多样化且全面的API。

modelscope_agent

并提供了AgentFabric应用,可快速创建一个基本的Agent,并已部署上线在创空间

agentfabric_usage

相关论文详见:ModelScope-Agent: Building Your Customizable Agent System with Open-source Large Language Models

Langchain

Langchain 由 Harrison Chase 2022 年 10 月开源,并迅速转变为一家初创公司,是一个轻量级框架,专门用于构建基于LLM的应用,不仅限于 Agent 应用,其中关于Agent的开发方法可查看其文档中的Agents | 🦜️🔗 Langchain

langchain_framework

但Agent不是其主要框架,而是其中一个功能,其常见的应用方案是外接知识库,通过向量化的方式给LLM外接一个大脑。​

MetaGPT

MetaGPT由DeepWisdom于2023年8月1号发布,是一个多智能体协作的框架,旨在解决基于大型语言模型(LLMs)的多智能体协作中的复杂问题,核心理念是使 GPTs 组成团队,将协作的SOP具象化,通过SOP(Team)协作处理更复杂的任务。

metaGPT

Agently

待完善

AutoGPT

待完善

BabyGPT

待完善

通用创作思路参考

笔者根据自己的经验,参考软件设计流程大致整理了以下通用的 Agent 应用设计SOP:

agent_design_SOP

  1. 首先需要进行 Agent 开发框架 和 大语言模型的选型;
  • 比如,ModelScope-Agent + qwen大模型 + 各种已有的tools和其他你比较熟悉且感兴趣的API.
  1. 然后需要搭建开发环境,熟悉开发流程;
  • ModelScope-Agent 框架使用时,最核心的内容就是LLM, tool_list, PromptGenerator, OutputParser 这几个组件,而这几个组件的参数如何进行更改,则需要进一步对代码进行理解和梳理,此处不做更多展开,有需要可自行阅读代码,并在交流群进行分享和交流.
  • 除了熟悉Agent框架的实现外,还需要熟悉tools的调用方式.
  • 若要增加额外的tools能力,则需要进行代码级的开发,至少需要知道选定的Agent框架能力边界、如何修改其Prompt、如何保存和替换KEY、记忆存储方案、如何使Agent能调用相关工具、如何开发和部署应用上线.
  • 这些能力均需要一点点进行学习和验证,需要一定的时间,来完成这个学习过程.
  1. 寻找灵感,确定创作方向
  • 确定应用的功能方向是整个比赛中最重要的一环,创意和想法是一切的起点和动力源.
  • 在这里,我推荐三种思考方向:
    • 复现现有软件/游戏功能?
    • 解决日常生活痛点?
    • 从自己的创意进行延伸和细化? …
  • 如果在遇到这些问题时,仍然没有思路,则可以通过现有的好用的 GPTs 的内容,以及尝试现有市场上的可用Agent的功能并进行拆解分析,找到更多灵感并进行尝试.
  • 又或者可以直接与大语言模型进行交互,向它要更多的灵感和思路,以及问题解决方案.
  1. 确定好具体的方向后,细化具体功能、设计UI,设计大致开发路径,并享受漫长的开发和效果验证调试之旅.
  • 虽然开发过程也许很累,甚至某些部分有些枯燥,
  • 但选择让自己开心,会帮助到自己的 Agent 创作方向.
  • 一边享受知识进入大脑的快感, 一边愉快地将好的创意落地, 让自己的思考变成改善生活的新工具.

「真诚赞赏,手留余香」

YuTian Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付