前言
在大模型系列,我之前的一篇文章,大模型之带你了解plugins、GPTs的前生今世,GPT-4 turbo何以让众多创业者一夜无眠,及主要应用:RAG、Agent。
在这篇文章中,我们提到在GPT4.0 turbo发布时,GPTs和Assistants API的出现使得众多创业者一夜无眠。当时看完之后就被我丢到一边,并没有太多关注,随着我们对RAG和Agent的不断深入了解,蓦然回首,越发感受到了他的好用。
Assistants API 的主要能力
像GPTs和Assistants API的出现都是为了降低开发门槛。
GPTs能够让众多非技术背景的人员做自己的大模型应用,而要更大自由度,需要用 Assistants API 开发。
Assistants API目前支持的能力
- 创建和管理 assistant,每个 assistant 有独立的配置
- 支持无限长的多轮对话,对话历史保存在 OpenAI 的服务器上
- 通过自有向量数据库支持基于文件的 RAG
- 支持 Code Interpreter
- 在沙箱里编写并运行 Python 代码
- 自我修正代码
- 可传文件给 Code Interpreter
- 支持 Function Calling
- 支持在线调试的 Playground
在最近我们大模型文章RAG阶段,还在研究他的文档切片,向量化等等,而OpenAI的Assistants API帮我们完成了RAG,我们只管准备我们的垂域学习材料就好。
而且未来还会继续扩展它的能力:
- 支持 DALL·E
- 支持图片消息
- 支持自定义调整 RAG 的配置项
当然,我们也要关注他的收费情况:
- 按 token 收费。无论多轮对话,还是 RAG,所有都按实际消耗的 token 收费
- 如果对话历史过多超过大模型上下文窗口,会自动放弃最老的对话消息
- 文件按数据大小和存放时长收费。1 GB 向量存储 一天收费 0.10 美元
- Code interpreter 跑一次 $0.03
只要不是我们面对需要极致调优的场景,Assistants API真的是功能齐全,开发简单!
如何使用 Assistants API
我们可以通过Assistants Playground或者代码来创建我们的assistant。
根据OpenAI 给的介绍,使用Assistants API的步骤分为总体如下四步:
- 创建Assistants实例。
- 创建对话线程Thread。
- 根据问题创建信息Messages。
- 在线程中运行(run)Assistants,获得结果。
openai在官网给了一个回答数学问题的Assistant创建方法,该案例使用的能力是自动编辑和运行代码。我们接下来基于python来简单介绍使用方法。
准备工作-完成openai-python的环境安装
这里不做描述,可以参考之前写的一篇文章:python调用GPT-API(交互式,支持多轮对话)
step-1.创建*Assistants
助手代表一个实体(Assistant),可以配置它以响应用户的消息,使用以下几个参数:
- 指令(instructions):助手和模型的行为或响应方式
- 模型(model):您可以指定任何 GPT-3.5 或 GPT-4 模型,包括微调模型。检索工具需要使用
gpt-3.5-turbo-1106
和gpt-4-1106-preview
模型。 - 工具(tools):API 支持由 OpenAI 构建和托管的代码解释器和检索工具。
- 函数(funtions):API 允许您定义自定义函数签名,具有类似于我们的函数调用功能的行为。
代码示例:
python代码解读复制代码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。通过创建消息将任何特定于用户的上下文和文件传递给此线程。
代码示例:
python
代码解读
复制代码thread = client.beta.threads.create()
Thread 没有大小限制。您可以向 Thread 添加任意数量的消息。助手将确保向模型传递的请求适应于最大上下文窗口
step-3.将信息Messages 加入Thread
消息包含文本,并可选择允许用户上传的文件(见支持的文件格式)。消息需要添加到特定的 Thread中。目前不支持通过消息对象添加图像
python代码解读复制代码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 时可选地传递其他指令给助手,但请注意,这些指令会覆盖助手的默认指令。
python代码解读复制代码run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id)
step-5.运行结果
当开始运行后,可以查看运行的状态,如果状态为completed,则表示运行结束了,可以在thread中得到运行的结果了。
python代码解读复制代码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大模型资料:其中包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等。😝有需要的小伙伴,可以扫描下方二维码免费领取↓↓↓
一、全套 AGI 大模型学习路线
AI 大模型时代的精彩学习之旅:从根基铸就到前沿探索,牢牢掌握人工智能核心技能!
二、640 套 AI 大模型报告合集
此套涵盖 640 份报告的精彩合集,全面涉及 AI 大模型的理论研究、技术实现以及行业应用等诸多方面。无论你是科研工作者、工程师,还是对 AI 大模型满怀热忱的爱好者,这套报告合集都将为你呈上宝贵的信息与深刻的启示。
三、AI 大模型经典 PDF 书籍
伴随人工智能技术的迅猛发展,AI 大模型已然成为当今科技领域的一大热点。这些大型预训练模型,诸如 GPT-3、BERT、XLNet 等,凭借其强大的语言理解与生成能力,正在重塑我们对人工智能的认知。而以下这些 PDF 书籍无疑是极为出色的学习资源。
阶段 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 个月,专注于高级模型的应用与部署。