AI News HubLIVE
站内改写2 分钟阅读

如何使用OpenAI API构建具有规划、工具调用、记忆和自我批评能力的高级代理AI系统

本教程介绍了如何使用OpenAI API构建一个高级代理AI系统,该系统包括规划、工具调用、记忆和自我批评模块。通过将代理设计为规划者、工具执行者和批评者三个专业化角色的管道,实现了策略、行动和质量控制的分离。系统集成了计算器、知识库搜索、JSON提取和文件写入等结构化工具,能够可靠地计算、检索指导、生成结构化输出并保存交付物。文章还提供了完整的代码示例和演示用例。

来源MarkTechPost作者: Sana Hassan

在本教程中,我们将使用OpenAI API构建一个高级代理AI系统,该系统能够进行规划、调用工具、维护记忆并进行自我批评。我们将代理设计为一个小型管道,包含三个专业化角色:规划者、工具使用执行者和批评者,从而将策略、行动和质量控制分离开来。我们还集成了结构化工具(计算器、小型知识库搜索、JSON提取和文件写入),使代理能够可靠地进行计算、检索指导、生成结构化输出并保存工件作为交付物。

首先,我们安装OpenAI SDK并仅导入所需模块,以保持在Colab中的轻量和可重复性。我们通过getpass()获取API密钥,使其保持隐藏,不会出现在笔记本输出或代码中。然后,我们创建一个OpenAI客户端并设置模型字符串,以便系统的其他部分可以一致地重用。

接下来,我们定义一个小型内部“知识库”,用于模拟团队文档或剧本,代理可以通过工具调用进行查询。我们实现了返回结构化字典的工具,以确保工具输出机器可读且健壮。这些工具包括一个安全的计算器、基于关键字的知识库搜索、用于结构化解析的JSON提取器,以及用于将最终交付物保存为工件的文件写入器。

我们将Python工具注册到一个映射中,以便在函数调用期间按名称调用它们。我们声明工具模式,使模型能够使用正确的参数结构调用工具。我们定义了AgentState来存储目标、记忆和工具调用跟踪,从而允许我们检查发生了什么并调试代理的行为。我们实现了一个安全的chat()包装器,仅在提供工具时包含tool_choice,以防止出现400错误。

我们定义了三个角色提示来分离代理的职责:规划者生成结构化计划,执行者执行任务并按需使用工具,批评者改进最终输出。我们实现了一个循环来执行模型调用、检测工具调用、在Python中执行它们,然后将它们的输出反馈给模型。这创建了一个真正的工具使用代理,而不是单次文本生成器。

我们实现了批评者来审查草稿并生成完善的最终响应,使用工具跟踪作为额外证据进行调试和问责。我们实现了run_agent()来编排完整循环:初始化状态、规划、使用工具执行、批评和最终确定。最后,我们提供了一个演示目标,该目标强制生成一个真实的交付物:摘要、结构化行动项JSON、跟进电子邮件以及通过write_file工具将输出保存到文件。

总之,我们实现了一个实用的代理架构,清晰地分离了规划、工具执行和基于批评的改进。我们将模型与具有严格模式的真实工具连接起来,记录了透明的工具跟踪以进行调试,并通过将最终输出保存到文件来生成工件。通过这种结构,我们可以通过添加工具重试策略、并行子代理、更丰富的记忆(向量+符号)和评估框架来将代理扩展到更生产级的工作流程。

完整的代码和笔记本可在此处查看。此外,请随时在Twitter上关注我们,并不要忘记加入我们的150k+ ML SubReddit和订阅我们的新闻通讯。如果您使用Telegram,现在也可以加入我们。

需要与我们合作推广您的GitHub Repo、Hugging Face页面、产品发布或网络研讨会等?请与我们联系。