大模型系列之被我忽视的Assistants API

news2024/11/23 8:32:34

前言

在这篇文章中,我们提到在GPT4.0 turbo发布时,GPTs和Assistants API的出现使得众多创业者一夜无眠。当时看完之后就被我丢到一边,并没有太多关注,随着我们对RAG和Agent的不断深入了解,蓦然回首,越发感受到了他的好用。

u=2753254869,451155373&fm=253&fmt=auto&app=120&f=JPEG.webp

Assistants API 的主要能力

像GPTs和Assistants API的出现都是为了降低开发门槛。

GPTs能够让众多非技术背景的人员做自己的大模型应用,而要更大自由度,需要用 Assistants API 开发。

Assistants API目前支持的能力

  1. 创建和管理 assistant,每个 assistant 有独立的配置

  2. 支持无限长的多轮对话,对话历史保存在 OpenAI 的服务器上

  3. 通过自有向量数据库支持基于文件的 RAG

  4. 支持 Code Interpreter

    1. 在沙箱里编写并运行 Python 代码
    2. 自我修正代码
    3. 可传文件给 Code Interpreter
  5. 支持 Function Calling

  6. 支持在线调试的 Playground

在最近我们大模型文章RAG阶段,还在研究他的文档切片,向量化等等,而OpenAI的Assistants API帮我们完成了RAG,我们只管准备我们的垂域学习材料就好。

而且未来还会继续扩展它的能力:

  1. 支持 DALL·E
  2. 支持图片消息
  3. 支持自定义调整 RAG 的配置项

当然,我们也要关注他的收费情况:

  1. 按 token 收费。无论多轮对话,还是 RAG,所有都按实际消耗的 token 收费
  2. 如果对话历史过多超过大模型上下文窗口,会自动放弃最老的对话消息
  3. 文件按数据大小和存放时长收费。1 GB 向量存储 一天收费 0.10 美元
  4. Code interpreter 跑一次 $0.03

只要不是我们面对需要极致调优的场景,Assistants API真的是功能齐全,开发简单!

如何使用 Assistants API

根据OpenAI 给的介绍,使用Assistants API的步骤分为总体如下四步:

  1. 创建_Assistants_实例。
  2. 创建对话线程_Thread_。
  3. 根据问题创建信息_Messages_。
  4. 在线程中运行(run)Assistants,获得结果。

准备工作-完成openai-python的环境安装

step-1.创建*Assistants

助手代表一个实体(Assistant),可以配置它以响应用户的消息,使用以下几个参数:

  • 指令(instructions):助手和模型的行为或响应方式
  • 模型(model):您可以指定任何 GPT-3.5 或 GPT-4 模型,包括微调模型。检索工具需要使用 gpt-3.5-turbo-1106gpt-4-1106-preview 模型。
  • 工具(tools):API 支持由 OpenAI 构建和托管的代码解释器和检索工具。
  • 函数(funtions):API 允许您定义自定义函数签名,具有类似于我们的函数调用功能的行为。

代码示例:

assistant = client.beta.assistants.create(
    name="Math Tutor",
    instructions="You are a personal math tutor. Write and run code to answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview"
)


step-2.创建对话线程*Thread

Thread 代表一次对话。建议在用户发起对话时为每个用户创建一个 Thread。通过创建消息将任何特定于用户的上下文和文件传递给此线程。

代码示例:

thread = client.beta.threads.create() 

Thread 没有大小限制。您可以向 Thread 添加任意数量的消息。助手将确保向模型传递的请求适应于最大上下文窗口

step-3.将信息_Messages_ 加入_Thread_

消息包含文本,并可选择允许用户上传的文件(见支持的文件格式)。消息需要添加到特定的 Thread中。目前不支持通过消息对象添加图像

message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

step-4.运行(run)Assistants

为了使助手响应用户消息,您需要创建一个 Run。这使助手阅读 Thread,并决定是否调用工具(如果启用),或者仅使用模型来最佳回答问题。随着运行的进行,助手将以role="assistant"的身份向 Thread 追加消息。助手还将自动决定在模型的上下文窗口中包括哪些先前的消息。这既对定价有影响,也对模型性能有影响。当前的方法是基于在构建 ChatGPT 过程中所学到的内容进行了优化,并且可能会随着时间的推移而发展。

您可以在创建 Run 时可选地传递其他指令给助手,但请注意,这些指令会覆盖助手的默认指令。

run = client.beta.threads.runs.create(
  thread_id=thread.id,
  assistant_id=assistant.id)

step-5.运行结果

当开始运行后,可以查看运行的状态,如果状态为completed,则表示运行结束了,可以在thread中得到运行的结果了。

run = client.beta.threads.runs.retrieve(
  thread_id=thread.id,
  run_id=run.id
)

while run.status != "completed":
    print(run.status)
    time.sleep(60)  # 等待60秒
    run = client.beta.threads.runs.retrieve(
    thread_id=thread.id,
    run_id=run.id
    )       

messages = client.beta.threads.messages.list(
  thread_id=thread.id
)

print(messages.data)

总结

我们可以看到,Assistants API 的内置工具支持了代码解释器、知识库检索以及函数调用,允许接入外部知识(文档)、使用更长的提示和集成各种工具。它能够帮助开发者分担繁重的工作,并构建高质量的 AI 应用。

  • 代码解释器允许助手API在受限执行环境中编写和运行Python代码。该工具可以处理具有不同数据和格式的文件,并生成带有数据和图像的文件。代码解释器允许助手迭代运行代码以解决复杂的代码和数学问题。
  • 函数调用( Function Calling) 允许您向助手描述函数,并智能返回需要调用的函数及其参数。助手API在调用函数时会暂停执行当前运行,您可以将函数调用的结果提供回来以继续运行执行。
  • 这里重点说一下知识检索能力

知识检索

目前在解决大模型幻觉和构建垂域大模型能力的背景下,RAG大火。

OpenAI提供的知识检索,可以为助手提供来自其模型外部的知识,例如专有产品信息或用户提供的文档。一旦上传并传递文件给助手,OpenAI将自动对您的文档进行分块、索引和存储嵌入,并实现向量搜索以检索相关内容以回答用户查询。

甚至“OpenAI 力挺 RAG,向量数据库失宠了?”等话题一度成为了讨论的热点。

同时,Assistants API是AI Agent技术下智能体产品,这在国内当时还鲜有人知 AI Agent 概念时就推出的王炸。

让我们都可以构建自己的智能体产品。

暂时还存在的局限性

之所以说是暂时,是因为这些局限,一旦OpenAI想,就可以解决的。

限制 1: 可扩展性

OpenAI Assistants 内置检索对文件大小和数量都有限制。这些限制不利于大型文档仓库:

每个 Assistant 最多支持 20 个文件

每个文件最大为 512 MB

我们在测试中发现了关于 Token 的隐藏限制——每个文件最多 200 万个 Token

每个企业账号下文件大小总和最多 100 GB

限制 2: 无法定制检索

虽然 OpenAI Assistants 的内置检索是一套开箱即用的解决方案,但它无法根据每个应用的特殊需求(如:搜索延时、索引算法)进行定制。使用第三方向量数据库,可以帮助开发者灵活配置、调优检索过程,从而满足生产环境中的各种需求,提升应用的整体效率。

限制3 :缺乏多租户支持

OpenAI Assistants 中内置的检索功能绑定 Assistant,每个知识库产生的费用按 Assistant 个数成倍增长。如果开发者的应用需要为数百万用户提供共享文档,或者为特定用户提供私人化的信息,OpenAI Assistants 的内置检索功能就无法满足需求了。

选择自己合适的

在了解了OpenAI Assistants的功能、特性和他的局限性,我们可以在自己的实际应用场景中,灵活选择使用OpenAI Assistants还是自己建设RAG。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.2.1 什么是Prompt
    • L2.2.2 Prompt框架应用现状
    • L2.2.3 基于GPTAS的Prompt框架
    • L2.2.4 Prompt框架与Thought
    • L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
    • L2.3.1 流水线工程的概念
    • L2.3.2 流水线工程的优点
    • L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
    • L3.1.1 Agent模型框架的设计理念
    • L3.1.2 Agent模型框架的核心组件
    • L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
    • L3.2.1 MetaGPT的基本概念
    • L3.2.2 MetaGPT的工作原理
    • L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
    • L3.3.1 ChatGLM的特点
    • L3.3.2 ChatGLM的开发环境
    • L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
    • L3.4.1 LLAMA的特点
    • L3.4.2 LLAMA的开发环境
    • L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS Next开发学习手册——通过startAbility拉起文件处理类应用

使用场景 开发者可以通过调用startAbility接口,由系统从已安装的应用中寻找符合要求的应用来实现打开特定文件的意图,例如:浏览器下应用下载PDF文件,可以调用此接口选择文件处理应用打开此PDF文件。开发者需要在请求中设置待打开…

Redis-实战篇-什么是缓存-添加redis缓存

文章目录 1、什么是缓存2、添加商户缓存3、前端接口4、ShopController.java5、ShopServiceImpl.java6、RedisConstants.java7、查看Redis Desktop Manager 1、什么是缓存 缓存就是数据交换的缓冲区(称为Cache),是存贮数据的临时地方&#xff…

Linux 异步 I/O 框架 io_uring:基本原理、程序示例与性能压测

Linux 异步 I/O 框架 io_uring 前言Linux I/O 系统调用演进io_uring与 Linux AIO 的不同原理及核心数据结构:SQ/CQ/SQE/CQE带来的好处三种工作模式io_uring 系统调用 API 前言 io_uring 是 2019 年 Linux 5.1 内核首次引入的高性能 异步 I/O 框架,能显著…

【干货】Jupyter Lab操作文档

Jupyter Lab操作文档1. 使用须知2. 定制化Jupyter设置主题显示代码行数设置语言更多设置 3. 认识Jupyter界面4. 初用Jupyter运行调试格式化查看源码 5. 使用Jupyter Terminal6. 使用Jupyter Markdown7. 上传下载文件(云服务器中的Jupyter Lab)上传文件到…

SAP的RFID

射频识别 (RFID) 避免了条码扫描的局限性,条码扫描需要对每个条码进行视线访问,并且一次只能用于扫描一个项目。 一次扫描一个标签可能会令人厌烦和压力大,这会增加人为错误的机会。相反,RFID 标签不需要直…

入局AI手机 苹果公布Apple Intelligence

日前,苹果WWDC 2024如期召开。在这持续1个小时44分钟的开发者大会上,苹果在前一个小时里更新了iOS、iPadOS、MacOS等操作系统,而且还首次更新了visionOS。余下的时间全部留给了苹果的“AI大礼包”——Apple Intelligence(苹果智能…

全网最强SpringMVC教程 | 万字长文爆肝SpringMVC(一)

SpringMVC_day01 今日内容 理解SpringMVC相关概念完成SpringMVC的入门案例学会使用PostMan工具发送请求和数据掌握SpringMVC如何接收请求、数据和响应结果掌握RESTful风格及其使用完成基于RESTful的案例编写 SpringMVC是隶属于Spring框架的一部分,主要是用来进行We…

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项…

Ollama模型部署工具在Linux平台的部署

1.新建普通用户dmx(可选) [rootnode3 ~]$ useradd dmx2.切换普通用户dmx环境(可选) [dmxnode3 ~]$ su - dmx3.下载ollama-linux-amd64服务 下载ollama-linux-amd64到 ~/server目录,并将ollama-linux-amd64服务重命名为ollamaEED curl -L …

07 - matlab m_map地学绘图工具基础函数 - 绘制等高线

07 - matlab m_map地学绘图工具基础函数 - 绘制等高线 0. 引言1. 关于绘制m_contour2. 关于绘制m_contourf3. 关于绘制m_elev4. 结语 0. 引言 本篇介绍下m_map中添加绘制等高线的一系列函数及其用法,主要函数包括m_elev、m_contour、m_contourf还有一些函数也和绘制…

线性和二次判别分析

线性判别分析 线性判别分析(Linear Discriminant Analysis,LDA)亦称 Fisher 判别分析。其基本思想是:将训练样本投影到低维超平面上,使得同类的样例尽可能近,不同类的样例尽可能远。在对新样本进行分类时&…

Spring+Vue项目部署

目录 一、需要的资源 二、步骤 1.首先要拥有一个服务器 2.项目准备 vue: 打包: 3.服务器装环境 文件上传 设置application.yml覆盖 添加启动和停止脚本 ​编辑 安装jdk1.8 安装nginx 安装mysql 报错:「ERR」1273-Unknown collation: utf8m…

ROS2中的CMakeLists(一)——基础知识

在使用ROS2框架开发机器人应用时,对各个功能包Cmakelist.txt文件的更改尤为重要。本系列旨在总头开始介绍Cmakelist.txt各条语句的意义和内涵。 Cmake已经是高度集成的构建工具,其作用是在不同开发环境下生成makefile文件,以此来执行make指令…

聊聊 System.Linq.Dynamic,以及分享一个使用 System.Linq.Dynamic 扩展 LINQ 查询的详细例子

前言:System.Linq.Dynamic 是什么? System.Linq.Dynamic 扩展了 .NET 中的 LINQ 查询功能,通过它,我们可以在运行时动态构造 LINQ 查询表达式,就像是写原生 SQL 语句一样,更加灵活直观。 利用 System.Lin…

FPGA学习笔记(5)——硬件调试与使用内置的集成逻辑分析仪(ILA)IP核

如果要对信号进行分析,可以使用外置的逻辑分析仪,但成本较高,对初学者来说没有必要,可以使用Xilinx Vivado内自带的逻辑分析仪IP核对信号进行分析,不过需要占用一定的芯片资源。 本节采用上一节配置的LED灯闪烁代码&a…

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制,本篇文章是要将各类NMS添加到yolov5中,同时…

2024最适合初学者人手一本的LLM大语言模型综述,爆火全网!(附PDF)

今天给大家推荐一本大模型(LLM)这块的一本外文书,经过整理已经出中文版了,就是这本《大型语言模型综述》!本书在git上有9.2k star,还是很不错的一本大模型方面的书。 本教程内容主要内容:中文版…

高度内卷下,企业如何通过VOC(客户之声)做好竞争分析?

VOC,即客户之声,是一种通过收集和分析客户反馈、需求和期望,来洞察市场趋势和竞争对手动态的方法。在高度内卷的市场环境下,VOC不仅能够帮助企业了解客户的真实需求,还能为企业提供宝贵的竞争情报,助力企业…

STL——常用算法(二)

一、常用拷贝和替换算法 1.copy #include <iostream> #include <vector> #include <algorithm> using namespace std; void printVector(int val) {cout << val << " "; } void test01() {vector<int>v1;for (int i 0; i <…