Semantic Kernel 将成为通向Assistants的门户
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的前/后钩子,您可以轻松地将遥测数据添加到内核中,以便轻松了解所有本机和语义函数中的令牌使用情况、呈现的提示等。
Semantic Kernel 将成为通向Assistants的门户的更多相关文章
- Semantic Kernel 知多少 | 开启面向AI编程新篇章
引言 在ChatGPT 火热的当下, 即使没有上手亲自体验,想必也对ChatGPT的强大略有耳闻.当一些人在对ChatGPT犹犹豫豫之时,一些敏锐的企业主和开发者们已经急不可耐的开展基于ChatGPT ...
- Semantic Kernel 入门系列:🛸LLM降临的时代
不论你是否关心,不可否认,AGI的时代即将到来了. 在这个突如其来的时代中,OpenAI的ChatGPT无疑处于浪潮之巅.而在ChatGPT背后,我们不能忽视的是LLM(Large Language ...
- Semantic Kernel 入门系列:🪄LLM的魔法
ChatGPT 只是LLM 的小试牛刀,让人类能够看到的是机器智能对于语言系统的理解和掌握. 如果只是用来闲聊,而且只不过是将OpenAI的接口封装一下,那么市面上所有的ChatGPT的换皮应用都差不 ...
- Semantic Kernel 入门系列:🔥Kernel 内核和🧂Skills 技能
理解了LLM的作用之后,如何才能构造出与LLM相结合的应用程序呢? 首先我们需要把LLM AI的能力和原生代码的能力区分开来,在Semantic Kernel(以下简称SK),LLM的能力称为 sem ...
- Semantic Kernel 入门系列:💬Semantic Function
如果把提示词也算作一种代码的话,那么语义技能所带来的将会是全新编程方式,自然语言编程. 通常情况下一段prompt就可以构成一个Semantic Function,如此这般简单,如果我们提前可以组织好 ...
- Semantic Kernel 入门系列:💾Native Function
语义的归语义,语法的归语法. 基础定义 最基本的Native Function定义只需要在方法上添加 SKFunction 的特性即可. using Microsoft.SemanticKernel. ...
- Semantic Kernel 入门系列:🥑突破提示词的限制
无尽的上下文 LLM的语言理解和掌握能力在知识内容的解读和总结方面提供了强大的能力. 但是由于训练数据本身来自于公共领域,也就注定了无法在一些小众或者私有的领域能够足够的好的应答. 因此如何给LLM ...
- Semantic Kernel 入门系列:🥑Memory内存
了解的运作原理之后,就可以开始使用Semantic Kernel来制作应用了. Semantic Kernel将embedding的功能封装到了Memory中,用来存储上下文信息,就好像电脑的内存一样 ...
- Semantic Kernel 入门系列:🍋Connector连接器
当我们使用Native Function的时候,除了处理一些基本的逻辑操作之外,更多的还是需要进行外部数据源和服务的对接,要么是获取相关的数据,要么是保存输出结果.这一过程在Semantic Kern ...
- Semantic Kernel 入门系列:📅 Planner 计划管理
Semantic Kernel 的一个核心能力就是实现"目标导向"的AI应用. 目标导向 "目标导向"听起来是一个比较高大的词,但是却是实际生活中我们处理问题的 ...
随机推荐
- kafka-eagle-2.0.5安装指南
kafka eagle 安装文档 环境介绍 :kafka 三台 版本:2.2.1+cdh6.3.2 管理:ZK kafka-eagle-bin-2.0.5.tar.gz安装包准备 官网 :http:/ ...
- javascript中一些难以理解的专有名词 1(也不是很专有)
变量提升 变量提升:是指js代码执行过程中,js引擎把变量的声明和函数的声明提升到代码的开头的"行为". 变量和函数在代码里的位置是不会变的,而是在编译阶段被js引擎放入内存中. ...
- 你可得知道物理地址与IP地址
来看看计算机网络中这些常见的概念你有没有理解~ 物理地址 表示方式 物理地址即mac地址,每个网卡都有6字节的唯一标识,前三个字节表示厂商,后三个字节由厂商随机分配. 如何查看 在 command 中 ...
- win10安装Redis5、配置自启动教程
前提条件:首先我安装的是压缩包版的Redis5.0.14.1,下载链接为 https://github.com/tporadowski/redis/releases 安装教程 下载软件并解压 进入软件 ...
- Java日志系列:Log4j使用和原理分析
目录 一.简介 二.使用 三.日志级别 四.组件说明 Loggers Appenders Layouts 五.配置 加载初始化配置 配置文件加载 查看日志记录器的详细信息 六.Layout的格式 七. ...
- 【技术积累】Linux中的命令行【理论篇】【九】
blkid命令 命令介绍 blkid命令是一个用于查看块设备属性的Linux命令.它可以识别和显示块设备的文件系统类型.UUID.LABEL.PARTUUID等信息. 命令说明 在Linux下可以使用 ...
- Linux 网络发包流程
哈喽大家好,我是咸鱼 之前咸鱼在<Linux 网络收包流程>一文中介绍了 Linux 是如何实现网络接收数据包的 简单回顾一下: 数据到达网卡之后,网卡通过 DMA 将数据放到内存分配好的 ...
- Web开发框架 WebBuilder 9 发布
WebBuilder 是一款强大,全面和高效的Web开发框架 .基于浏览器的集成开发环境,智能化的设计,能轻松完成常规桌面应用和面向手机等的移动应用开发.高效.稳定和可扩展的特点,适合复杂企业级应用的 ...
- Jmeter逻辑控制器Switch Controller的用法
一.概述 类似编程语言中的switch函数,Switch Controller根据给定的值n(可使用变量)选择执行其下的 第n+1个子节点. 作用:Switch Controller通过给该控制器中的 ...
- minio 支持object搜索方案
minio支持上传时对object打标签,查询时可以根据标签做筛选.但是有ftp上传文件的需求,导致无法给object打标签.并且也不清楚minio对于根据标签的筛选性能如何,因此我们打算将objec ...