OpenAI 也推出了让开发者更容易使用 OpenAI API 的开发方式——Assistants API。Sam Altman 表示,市面上基于 API 构建 agent 的体验很棒。比如,Shopify 的 Sidekick 可以让用户在平台上采取行动,Discord 的 Clyde 可以让管理员帮忙创建自定义人物,Snap 的 My AI 是一个自定义聊天机器人,可以添加到群聊中并提出建议。但问题是,这些 agent 很难建立。有时需要几个月的时间,由数十名工程师组成的团队,处理很多事情才能使这种定制助手体验。这些事情包括状态管理(state management)、提示和上下文管理(prompt and context management)、扩展功能(extend capabilities)和检索(retrievel)。在 OpenAI 开发者大会上,这些事情被 API 化——OpenAI 推出 Assistants API,让开发人员在他们的应用程序中构建「助手」。使用 Assistants API,OpenAI 客户可以构建一个具有特定指令、利用外部知识并可以调用 OpenAI 生成式 AI 模型和工具来执行任务的「助手」。像这样的案例范围包含,从基于自然语言的数据分析应用程序到编码助手,甚至是人工智能驱动的假期规划器。Assistants API 封装的能力包括:
- 持久的线程(persistent threads),人们不必弄清楚如何处理长的对话历史;
- 内置的检索(Retrieval),利用来自 OpenAI 模型外部的知识(例如公司员工提供的产品信息或文档)来增强开发人员创建的助手;提供新的 Stateful API 管理上下文;
- 内置的代码解释器(Code Interpreter),可在沙盒执行环境中编写和运行 Python 代码。这一功能于 3 月份针对 ChatGPT 推出,可以生成图形和图表并处理文件,让使用 Assistants API 创建的助手迭代运行代码来解决代码和数学问题;
- 改进的函数调用,使助手能够调用开发人员定义的编程函数并将响应合并到他们的消息中。
Assistants API 处于测试阶段,从今天开始可供所有开发人员使用。开发者可以前往Assistants Playground来尝试 Assistants API 测试版,而无需编写任何代码。
有了 Assistants API,构建 agent 应用将变得更容易。OpenAI 表示,随着时间的推移,将会持续提高它们的能力。并且,未来计划允许客户提供自己的 copilot 工具,以补充其平台上的 Code Interpreter、检索组件和函数调用。
Assistants API是在聊天完成模型之上创建代理的新方法和改进方法。有了助手,建立代理所需的大部分繁重工作都被剥离了......
- 现在,将在线程中为您管理消息。
- 内存在后台自动为您处理。
- 并且可以调用多个函数(而不仅仅是一个函数)。
这最终意味着,在 OpenAI 和Semantic kernel 之上构建代理将更快、更容易。SK团队正在博客里推出系列文章与大家分享我们将Assistants 整合到Semantic kernel中的计划,以及它们如何融入我们的 v1 提案中。今天发布了第一篇文章: https://devblogs.microsoft.com/semantic-kernel/assistants-the-future-of-semantic-kernel/。
尽管新的Assistants API 功能强大,但它们并不能做所有事情。这就是Semantic kernel的用武之地。凭借其对插件、规划器和多模型支持的支持,您可以使用Semantic kernel来扩展助手,使其更强大,同时优化性能和成本。
- 简化的函数调用 – 为了使代理更有用,您可以为它们提供要运行的操作。我们将通过插件利用内核中已经注册的现有函数来简化此过程。当您与代理交谈时,我们将为其提供您添加的函数,并在我们从模型获得响应时自动运行它们。
- 复杂的多步骤计划 – 使用Assistants,OpenAI 可以开始一次调用多个函数,但它仍然无法创建具有条件逻辑、循环和变量传递的复杂计划。使用Semantic kernel 规划器,您可以做到这一点。这不仅可以为您节省Token,还可以让您生成完整的计划,这些计划在执行之前可以由人工审查。
- 多模型支持 – 今天的代理使用 GPT-3.5-turbo、GPT-4 和即将推出的 GPT-4-turbo 完成所有聊天。但是,作为开发人员,您可能希望更加挑剔。您可能希望使用 GPT-4-turbo 进行最终响应,同时使用 GPT-3.5-turbo 进行一些更简单的Semantic Function。使用Semantic kernel,您可以进行这些优化。您甚至可以将非 OpenAI 模型与 OpenAI Assistants结合使用。
- 更好地控制内存 – 如果要使用高级内存体系结构来更好地控制保存和检索内存的方式(如内核内存或 Llama 索引),则可以将这些服务添加为插件,以便为代理提供更好的上下文。
- 更高的可见性和监视 – 借助Semantic kernel的前/后钩子,您可以轻松地将遥测数据添加到内核中,以便轻松了解所有本机和语义函数中的令牌使用情况、呈现的提示等。