代理、主体->智能体agents
摘要
会话和基于聊天的语言模型的快速发展使复杂任务解决取得了显著进展。然而,他们的成功在很大程度上依赖于人工输入来指导对话,这可能具有挑战性且耗时。本文探讨了构建可扩展技术的潜力,以促进交际智能体之间的自主合作,并深入了解他们的“认知”过程。为了应对实现自主合作的挑战,我们提出了一个新的交际智能体框架,名为角色扮演。我们的方法包括使用初始提示来引导聊天智能体完成任务,同时保持与人类意图的一致性。我们展示了如何使用角色扮演来生成会话数据,以研究聊天智能体的行为和能力,为研究会话语言模型提供了宝贵的资源。我们的贡献包括引入了一个新的通信智能体框架,为研究多智能体系统的合作行为和能力提供了一种可扩展的方法,并开放我们的图书馆来支持对通信智能体及其他方面的研究。
1 介绍
面对现实世界任务的复杂性,解决这些问题通常需要多个步骤。基于会话和聊天的大规模语言模型(LLM)的快速发展在复杂任务解决方面取得了显著成就。然而,值得注意的是,他们的成功在很大程度上取决于人类的投入,以引导对话朝着正确的方向发展。这种依赖需要用户根据他们的意图和聊天智能体的反馈提供相关和精确的提示。这可能具有挑战性、耗时,有时甚至是不可能的。它通常需要对该领域有深入的了解,并具备制定有效提示的专业知识。
考虑一个缺乏交易专业知识的人;他们会发现很难创建合适的提示来指导通信智能体开发交易应用程序。这种困境提出了一个关键问题:我们能用一个自主的交际智能体取代人类的干预吗?这个智能体能够在没有任何人类监督的情况下引导对话完成任务?为了解决这个问题,至关重要的是进行更多的研究,探索完全依靠自己完成任务的交际智能体的潜力、能力和局限性。考虑多个智能体如何相互作用很重要,因为这种理解至关重要用于预测人工智能的未来。在一个智能体在不同任务上协作、竞争和互动的社会中,这些互动的动态性在决定人工智能系统的成功方面发挥着关键作用
本文探讨了构建可扩展技术的潜力,以促进交际智能体之间的自主合作,并深入了解他们的“认知”过程。我们的初步分析表明,请求聊天智能体自主合作完成任务不是一件小事。出现了一些挑战,如角色转换、助理重复指令、薄片回复、消息无限循环和会话终止条件。因此,研究如何加强这些模型与人类意图的一致性和合作至关重要。为了解决这些问题,我们提出了一个新的合作智能体框架,称为角色扮演,以自动化通信智能体之间的合作。具体而言,我们提出的方法包括使用具有初始提示的角色扮演来自主引导交际智能体完成任务,同时保持与人类意图的一致性。只需要人类输入的初步想法,就可以引导对话解决复杂的任务。
什么是最有弹性的寄生虫?一个想法。来自人类头脑的单一想法可以建造城市。一想法可以改变世界并改写所有规则。这就是为什么我必须偷它
-Dom Cobb,《盗梦空间》
我们公开提供的库提供模块化功能、不同智能体的实现、精心制作的提示和数据探索者,从而简化了库在多智能体系统、协作人工智能、博弈论模拟、社会分析、人工智能伦理、人工智能比对等各个领域的未来研究中的使用。此外,我们的角色扮演方法提供了一种高度可扩展的方式来生成会话数据,用于研究聊天智能体的行为和能力。我们展示了如何使用角色扮演来让聊天智能体相互沟通以完成任务,并记录他们的对话以进行行为分析和能力理解。特别是,我们考虑了角色扮演的两个合作场景,并生成了两个大型对话、面向任务和遵循指令的数据集:AI Society和Code。这些数据集为研究会话语言模型提供了宝贵的资源,使它们能够更有效地理解人类语言并对其做出反应。此外,我们的角色扮演提供了一种可扩展的方法来创建会话指令跟随数据,这可能会促进更高级、更高效的语言模型的开发。
我们的贡献有三方面:
- 我们介绍了一种新的合作智能体框架,即角色扮演,它允许通信(communicative)智能体自主合作完成任务,同时需要最少的人工干预。
- 我们的框架为研究多智能体系统的合作行为和能力提供了一种可扩展的方法。它阐明了实现自主合作的挑战,并提供了应对这些挑战的战略。
- 我们开源了我们的库,包含各种智能体的实现、数据生成管道、数据分析工具和收集的数据集,以支持对通信智能体及其他方面的研究。
2 相关工作
Communicative Agents
智能体之间的通信已经研究了很长时间[。有许多方法可以促进智能体之间以及与智能体之间的通信。
其中,自然语言被认为是最自然的交流形式。通过使智能体本身能够充当通信者,他们能够解决复杂的任务。人工智能智能体之间的通信可以发生在竞争环境或合作环境中。合作人工智能是指旨在与人类和其他人工智能系统协同工作以实现共同目标的人工智能系统。协同人工智能系统考虑到系统中其他智能体的需求和能力,并积极寻求与他们合作和协调他们的行动,这具有许多潜在的好处,包括提高效率、改进决策以及解决任何单个智能体都无法解决的复杂问题的能力。然而,设计有效的合作人工智能系统仍然是一个活跃的研究领域,因为它需要解决一系列技术、伦理和社会挑战。在我们的工作中,我们让两个交际智能体进行对话,并相互合作解决分配的任务。每个交际智能体都被分配了不同的角色,他们应该运用自己的专业知识和知识来找到满足共同任务的解决方案
Model Exploration
知识提取(KD)是一种流行的技术,用于将复杂模型压缩为更小、更实用的模型,这些模型可以在不牺牲性能的情况下在现实世界场景中高效部署。KD旨在将知识从更大、复杂的“教师”模型转移到更易于管理的“学生”模型,同时保持原始模型的准确性和泛化能力。从教师转移到学生模型的知识可以分为三种主要类型:基于反应的知识、基于特征的知识和基于关系的知识,这些知识已经在各种著作中进行了研究。最近的工作提出了从两个大型语言模型和扩散模型中提取训练数据的创新方法。这些方法可以被视为训练数据提取的一种手段,其中可以提取模型训练数据空间。这个想法是利用模型对从互联网上获得的某些样本的记忆。该过程包括从模型中创建多个生成,然后按特定指标进行排序,然后删除重复的生成。然后对生成的几代进行仔细检查,以查找网络上已经存在的任何匹配项。如果生成的样本与互联网上发现的现有样本相匹配,则可以推断模型已经在这些样本上进行了训练。 我们的工作为会话智能体的“心智探索”【“mind exploration”】提供了一种新颖的方法。通过使这些智能体能够在解决任务时进行沟通和协作,我们可以深入了解他们在解决任务上下文中的行动和行为。我们的思维探索方法揭示了一些有趣的见解和挑战,这些见解和挑战有待研究界进一步探索。
Instructional LLMs and Prompt Engineering
LLM在不同的文本数据上进行训练,并擅长文本完成,以及各种下游NLP应用。然而,InstructGPT认为LLM可能与用户意图不一致,建议从人类反馈中强化学习(RLHF)[15]和指令微调(IFT)[72],以提高LLM与用户指令的相关性和适当性。思维链(CoT)[73]和零热CoT[37]是特殊类型的指令,它们显著提高了LLM在推理和算术任务中的性能。
这些技术支撑了最近对话LLM[61,68,22,6,47,10]令人印象深刻的能力,其目的是模拟类似人类的对话,并为用户提供个性化和交互式体验,展示所有三个对话人工智能智能体的行为[21]。然而,生成指令数据集是构建基于指令的LLM的一个关键挑战,现有的数据集从众包到生成。[71]中提供了手工制作的指令实例,而利用以前众包的NLP数据集是一种劳动密集度较低的管理方法。在[59,38,40,66]中已经探索了LLM用于数据生成,并且Self instruction[70]提出了一种用于指令实例生成的半自动化过程。非自然指令[31]通过提示只有三个种子示例的语言模型并转述生成的实例以扩展数据集来收集指令实例。另一个重要挑战是提示工程。用于指导LLM的提示的质量会显著影响其性能[54,9,39]。虽然在大数据上预先训练的LM可以在很少的镜头提示下隐式学习任务,但手工制作的提示可能并不总是足够的。已经提出了自动提示生成方法,如梯度引导搜索[60]、基于挖掘和转述的技术[33]、元提示[55]以及自动指令选择和生成[76]。在这项工作中,我们介绍了一种会话LLM自动提示方法,称为启始提示(Inception Prompting),它使智能体能够通过角色扮演来提示对方解决任务。人工智能用户不断向人工智能助手提供指令以解决任务。这使我们能够保存流式教学解决方案对,并创建多样化的教学、对话和面向任务的数据集。
这些数据集可用于分析LLM的行为和能力,并用于未来通过会话指令微调LLM的研究。
AI Alignment
人工智能对齐是一个旨在确保人工智能系统遵守其设计者所设想的预期目标、兴趣和价值观的领域。人工智能对齐的第一次尝试是通过引入的“机器人三定律”。开发一致的人工智能系统对于实现预期目标同时避免意外后果至关重要。人工智能比对的研究重点是阻止人工智能模型产生可能导致各种伤害的虚假、攻击性、欺骗性或操纵性信息。实现高水平的一致性需要研究人员努力解决复杂的伦理、哲学和技术问题。我们进行了大规模的实验来研究不同的角色扮演情况,以探索LLM的一致性。
3 方法
在本文中,我们重点研究了AI-AI合作场景下的交际智能体,在这些场景中,他们有着纯粹的共同利益。特别是,我们正在研究assistant-user场景,其中在一开始就给出了初步想法。智能体会将想法概念化为一项特定任务,并通过对话自主完成。
3.1 角色扮演框架
我们提出的框架是一种研究多个交际智能体的新颖的角色扮演方法。具体来说,我们专注于任务导向的角色扮演,其中包括一名人工智能助理和一名AI用户。在多智能体系统收到人类用户的初步想法和角色分配后,任务指定智能体将提供详细描述,使想法具体化,然后人工智能助手和人工智能用户将通过多回合对话合作完成指定任务,直到人工智能用户确定任务完成。人工智能用户负责向人工智能助手发出指令,并引导对话完成任务。另一方面,人工智能助手旨在遵循人工智能用户的指示,并以特定的解决方案做出响应。整个角色扮演框架如图1所示。
图1:角色扮演框架。我们的角色扮演设置始于人类用户有一个他们想要实现的想法,例如为股市开发一个交易机器人。参与这项任务的角色将是一名python程序员的人工智能助理智能体( AI assistant)和一名股票交易员的人工智能用户智能体(AI user)。使用我们的任务说明符智能体使任务更加具体,从而为助手解决定义明确的任务。人工智能用户和人工智能助手通过按照指令的方式相互聊天来协同通信,以解决指定的任务。
Human Input and Task Specifying
角色扮演会话将从一个想法和人类选择的角色中实例化。作为图1中的一个例子,一个人有一个为股市开发交易机器人的初步想法。人类可能知道也可能不知道如何实现这个想法。所需要的只是指定能够实现该想法的潜在角色。例如,Python程序员可以与股票交易员合作,实现为股票市场开发交易机器人的想法。在确定想法和角色后,任务指定器智能体将集思广益,AI助手角色可以帮助AI用户角色根据输入想法完成特定任务。**在这种情况下,指定任务的一个例子可以是开发一个带有情绪分析工具的交易机器人,该工具可以监控社交媒体平台对特定股票的正面或负面评论,并根据情绪分析结果执行交易。引入任务说明符的主要动机是,会话智能体通常需要一个具体的任务提示来实现任务,而非领域专家创建这样一个特定的任务提示是具有挑战性或耗时的。**因此,任务指定器智能体充当思想实现的增强想象模块。请注意,在大规模研究我们的人工智能社会和代码场景框架时,我们通过提示LLM自动生成角色和想法,而不是依赖于人类输入。
AI Assistant-User Role Assignment
任务指定后,AI助理角色和AI用户角色将相应地分配给用户智能体和助理智能体,以完成指定的任务。在实践中,系统消息被传递给每个智能体,向每个智能体声明角色。我们通过PA参考辅助系统提示/消息,通过PU参考用户的提示/消息。在对话开始之前,系统消息会传递给智能体,以便为智能体分配相应的角色。设F1和F2表示两个大型自回归语言模型[47]。当系统消息分别传递给这些模型时,我们得到A← F PA1和U← F PU2,它们分别被称为助理和用户智能体。在图1中,AI助手和AI用户在角色扮演会话开始时分别被分配为Python程序员和股票交易员。AI user充当任务规划器,参与交互式规划,以确定AI assistant执行的可行步骤。同时,AI assistant充当任务执行器,提供解决方案,执行计划步骤,并向AI user提供响应。
Conversation Towards Task-Solving
角色分配完成后,人工智能助理A和人工智能用户U将按照指令的方式协作完成任务。在人工智能助理用户场景中,人工智能用户负责提供指令,助理应提供满足指令的解决方案。形式上,我们用It表示在时间t处获得的用户指令消息,用St表示助理解。直到时间t为止获得的会话消息集由如下等式表示:
简单来说,历史记录M包括时间t内的(user指令 , assistant解)->下一时刻新的User提出指令It+1->结合历史记录+当前指令,响应恢复 ->更新历史对话
3.2 启动提示Inception Prompting
由于提示工程对我们的角色扮演框架至关重要,本节将深入探讨我们的提示技术。与会话语言模型的其他技术不同,我们的提示工程只发生在角色扮演的开始,用于任务规范和角色分配。一旦对话阶段开始,人工智能助手和人工智能用户就会自动循环提示对方,直到结束。因此,我们将我们的技术称为“启动提示”。我们的Inception提示由三个提示组成:the task specifier prompt任务说明符提示PT、the assistant system prompt助手系统提示PA和the user system prompt用户系统提示PU。 作为一个例子,我们考虑了人工智能社会场景的启动提示。人工智能社会角色扮演的这些提示模板如图2所示。任务说明符提示包含有关AI助手和AI用户在角色扮演会话中的角色的信息。因此,任务指定器代理可以将初步任务/想法作为输入,并使用想象力生成特定任务。人工智能助手系统提示PA和人工智能用户系统提示PU大多是对称的,并且包括关于所分配的任务和角色、通信协议、终止条件以及避免不想要的行为的约束或要求的信息。这两种角色的提示设计对于实现智能体之间的自主合作至关重要。设计提示以确保智能体按照我们的意图行事是非常重要的。我们以图2中AI Society的提示模板为例来解释我们的关键设计选择。
Prompt Engineering
为了更深入地研究图 2 中的细节,我们首先对 AI 助手系统提示 PA 的各个部分进行分块,如下所示:
- 永远不要忘记你是一个<ASSISTANT_ROLE>,而我是一个 <USER_ROLE>。这会将所选角色分配给assistant agent,并向智能体提供有关user’s role的信息。
- 永远不要翻转角色!永远不要指导我!这可以防止智能体角色互换。在某些情况下,我们观察到助理和用户交换角色,助理突然接管控制权并指示用户,而用户则遵循这些指示。
- 如果您由于身体、道德、法律原因或您的能力而无法执行我的指示,您必须诚实地拒绝我的指示,并解释原因。这禁止智能体人制作有害的、虚假的、非法的和误导性的信息。
- 除非我说任务已经完成,否则您应该始终从以下内容开始:解决方案:<YOUR_Solution><YOUR_SOLUTION>应该是具体的,并为任务解决提供优选的实现和示例。这鼓励助理始终以一致的形式做出回应,避免偏离对话结构,并防止模糊或不完整的回应,我们称之为片状回应,例如“我会做点什么”。
- 始终以以下内容结束您的解决方案:Next request。这可以确保助理通过请求新的解决指令来保持对话的进行。
对于AI用户系统提示PU,我们力求与AI助手系统提示尽可能保持对称。除了相反的角色分配之外,用户系统提示符与助手提示符还存在以下差异:
- 你必须根据我的专业知识和你的需求指导我只能通过以下两种方式完成任务:1。用必要的输入进行指导:xxx;2.在没有任何输入的情况下进行指导:xxx。这遵循了指令跟随的典型数据结构,这使得生成的指令解决方案对可以很容易地用于微调LLM
- The “Instruction” describes a task or question.The paired “Input” provides further context or
information for the requested “Instruction”. - 不断向我提供指示和必要的输入,直到您认为任务已完成。任务完成后,您只能回复一个词<CAMEL_TASK_DONE>。我们引入一个任务结束标记,即 <CAMEL_TASK_DONE>。一旦用户认为任务已完成,就会使用此token。
这确保了当用户满意时终止聊天。如果不这样做,智能体可能会陷入一个聊天循环,他们不断地互相说“谢谢”或无限期地“再见”。
图2.Inception Prompt of AI Society Role-Playing. This shows the task specifier prompt,
assistant system prompt, and user system prompt which are used for studying the AI society scenario.
4 实验
在本节中,我们将讨论为得出最终设计选择而进行的各种实验。具体来说,我们将研究有趣的观察结果、具有挑战性的问题和我们在使智能体能够在不同的即时设计选择下相互通信以实现自主合作时遇到的几个例子。在我们的实验中,我们使用了两个gpt3.5-turbo智能体,为了简单起见,称为LLM智能体,如第3.2节所述,带有启始提示,以模拟assistant-user合作。我们研究了人工智能社会和代码场景。我们还收集了会话数据,命名为CAMEL AI Society和CAMEL Code数据集,并对其进行了分析。此外,我们将讨论我们框架的潜在扩展,并强调未来人工智能社会可能带来的风险和机遇。
-
任务说明提示:
以下是程序员将帮助在 中工作的人员使用 完成的任务:。
请说得更具体一些。要有创造力和想象力。
请在 <WORD_LIMIT> 个字以内回复指定的任务。不要添加任何其他东西。 -
Assistant系统提示:
1、永远不要忘记您是一名计算机程序员,而我是在 中工作的人。永远不要翻转角色!永远不要指导我!我们对合作成功完成任务有着共同的兴趣。
2、您必须帮助我使用 编程语言完成任务。
3、这是任务:。永远不要忘记我们的任务!我必须根据你的专业知识和我的需要来指导你完成任务。
4、除非我说任务已完成,否则您应该始终从以下内容开始: 解决方案:<YOUR_SOLUTION> <YOUR_SOLUTION> 必须包含 代码,并且应该具体并为任务解决提供更好的实现和示例。
<YOUR_SOLUTION> 始终以:Next request。 -
用户系统提示:
1、永远不要忘记您是在< DOMAIN >中工作的人,而我是一名计算机程序员。永远不要翻转角色!你永远都会指导我。我们对合作成功完成任务有着共同的兴趣。
2、我必须帮助您使用< LANGUAGE>编程语言完成任务。
3、这是任务:< TASK >。永远不要忘记我们的任务!您必须根据我的专业知识和您的需求来指导我,只能通过以下两种方式完成任务: 1. 通过必要的输入进行指导: 指令:< YOUR_INSTRUCTION> 输入:< YOUR_INPUT> 2. 在没有任何输入的情况下进行指导: 指令:< YOUR_INSTRUCTION> 输入:无。
成对的“输入”为所请求的“指令”提供进一步的上下文或信息。
4、不断向我提供指示和必要的输入,直到您认为任务已完成。
任务完成后,您只能回复一个词<CAMEL_TASK_DONE>。
除非我的回答已经解决了您的任务,否则切勿说<CAMEL_TASK_DONE>。
4.1 AI社会和代码场景的角色扮演
AI Society:为了创建我们的AI Society数据集,我们开发了一种遵循一系列步骤的可扩展方法。首先,我们提示LLM智能体为助理和用户生成可能的角色。我们通过向LLM智能体提供旨在引出这些角色的特定提示来实现这一点。接下来,我们要求LLM智能体生成一系列可能的任务,这些任务可以通过之前生成的助理和用户角色之间的协作来解决。如前一步所述生成一系列可能的任务后,我们使用传递给LLM智能体以使任务更加具体。辅助角色生成、用户角色生成和任务生成的提示如图4所示(AI Society)。对于我们的人工智能社会数据集,我们为每个角色组合生成了50个助理角色、50个用户角色和10个任务,总共产生了25000次对话。生成的助理角色和用户角色如图5(AI Society)所示。
图 4:数据生成提示。为了保持可扩展的方法,我们的数据参数是使用 LLM 模型生成的,以减少生成过程中的人为参与。该图总结了 AI Society 和 Code 数据集的生成提示。
代码:为了生成代码数据集,我们使用了一种类似于AI Society数据集的可扩展方法。首先,我们提示LLM智能体向我们提供编程语言和Domains的列表。然后,我们要求LLM智能体生成一组任务,使用特定编程语言的专业程序员可以与在特定领域工作的人合作解决这些任务。
然后使用我们的任务说明符提示符使任务更加具体。语言生成、域生成和任务生成的提示如图4(代码)所示。对于我们的Code数据集,我们为每种语言和域的组合生成了20种编程语言、50个域和50个任务,总共产生了50000个对话。生成的编程语言和域如图5(代码)所示。
图5 生成的元数据。LLM为AI Society和Code数据集生成的元数据。为AI Society生成了50个助理角色和50个用户角色。为Code生成了20种编程语言和50个域。
挑战和观察。在本节中,我们将探讨在分析生成的数据集时发现的四个主要挑战。我们的观察揭示了合作人工智能的一些有趣的方面及其发展中出现的困难。图 6 显示了下面讨论的四个挑战中每个挑战的示例。
- 角色翻转:我们遇到的挑战之一是角色翻转,即助理和用户在对话期间交换角色。当助理开始提供指令或命令而不是遵循用户的提示时,通常会出现此问题,这可能会导致混乱和角色逆转。为了避免角色翻转,助理不要提问至关重要,因为这也会导致问题
- 助理重复指令:我们观察到的另一个挑战是助理只是重复用户的指令,而没有发生任何角色翻转。
- 不稳定的回复:我们还观察到助理代智能体会做出不稳定的回复,通常采用“我会……”的形式。这些消息对手头的任务没有帮助,因为助理承诺采取行动,但最终未能兑现。
- 消息无限循环:我们遇到的一个特别有趣的挑战是,助手和用户陷入无限循环的无意义对话,例如反复互相感谢或道别,但对话没有取得任何进展。有趣的是,在某些情况下,助手和用户都知道他们陷入了循环,但无法摆脱它。
图6 合作角色扮演的挑战。我们对生成集的分析揭示了四个主要挑战,即角色翻转、助手重复指令、片状回复和无限对话。
助理和用户令牌限制:鉴于gpt-3.5-turbo 对令牌数量有限制,如果助理和用户中的任何一方达到令牌限制,则应提出标志以终止对话。
最大消息数:为了控制生成聊天的成本,我们设置了 40 条消息的最大限制。此限制保证了用户和助手之间有足够长的对话,同时还确保生成的数据的生产成本不会太高。成本随着对话长度的增加而呈二次方增长,因此设置限制至关重要。尽管有限制,但由于达到最大消息数而终止的消息数仍然很少,如图 7 和 8 所示。
图 7:对话终止原因的分布。在我们的 AI Society 数据集中,大多数方法由于 Assistant Instruct 标志而终止,而在代码数据集中,主要终止原因是 Token Limit。后者是由于助理响应中包含大量代码所致。这表明 40 条最大消息的限制是合理的。
图8:由于提示修改而导致的对话终止原因(AI Society)的消融分布。我们进行了两次消融:(1)Prompt V2,指的是通过删除Assistant输出格式来修改原始的 AI Society 提示,即以“Output:”开头并以“Next Request”结束;(2)向原始提示V1加任务规划。任务规划器接受指定的任务并生成子任务划分以供助手和用户遵循。两种消融都显示由于任务结束令牌而终止的对话数量增加以及助理指导率下降。
如图 8 所示,我们注意到这两项修改都显着增加了以任务结束标记终止的对话数量,并减少了带有辅助指令的消息数量。然而,我们观察到与原始 Prompt V1 相比,Prompt V2 和 Prompt V1 + Task Planner 的片状消息数量显着增加,如图 9 所示。
图 9:Flake 消息分布(AI Society)。我们量化并可视化片状消息的数量,即以“我会……”开头并且不会进展到任务完成的消息。与所呈现的消融相比,我们最初的提示显示了最少数量的片状消息。
AI Agent被很多人认为是LLM能力升级的一个重要方式,就连OpenAI的研究人员也认为AI Agent是LLM转为通用问题解决方案的途径之一,但是,并不是所有的LLM都能作为AI Agent能高效完成任务,使用工具。业界大多数AI Agent框架都默认使用GPT-4作为核心的LLM。清华大学评估了主流的LLM,发布AgentBench是一个系统的基准,用于评估大语言模型(LLM)作为代理执行实际任务的能力。在8个不同任务上的表现来评估各大模型作为Agent的最终得分
看来GPT-4 永远的神
目前最火的AI多智能体:https://github.com/geekan/MetaGPT
它基于GPT-4提供了专注于软件开发的自动代理框架,几乎可以理解为配备了产品经历、系统设计师、程序员的一个小团队,可以基于原始的需求直接生成最后的代码项目。