本文介绍OpenAI新发布的assitance的使用方法,回答下面两个问题:
- Assistants是什么?
- Assistants怎么用?
- Assistants的原理
OpenAI assistant 是什么
OpenAI Assistants是OpenAI于2023年11月7日晚发布的一款gpt集成应用产品,即在gpt的能力基础上,整合了一些附加的功能,用于帮助开发者在自己的应用中更方便的集成gpt。
目前,Assistants的能力包括三个部分:自动编辑和运行代码,信息检索,函数调用。也就是说,openai将这三种能力打包起来,提供给开发这使用。
对于想使用gpt的人而言,这三种能力是如此的基础和重要,在此之前,已经有众多的组织和个人开发出了一系列工具用于实现这些功能。
自动编辑和运行代码将会大大扩展gpt的能力边界,它会根据问题自动生成并运行python的代码,根据运行的结果回答问题。
信息检索也是非常重要的能力,近期非常热门的话题就是Retrieval-Augmented Generation (RAG),就是希望用户提供基础的数据文件,使用GPT强大的综合能力进行处理分析,用于解决GPT回答的内容不可靠、专业性和私人化程度不足的问题,其中最热门的两个开源项目是:llamaIndex和langchain。
下图是RAG的基本实现思路:
现在,opanai的官方提供了这样三种集成的gpt能力,开发者可以直接在这三种能力的基础上进行后续开发,节省了很多时间和精力。
OpenAI assistant 如何使用
根据OpenAI 给的介绍,使用Assistants API的步骤分为总体如下四步:
- 创建Assistants实例。
- 创建对话线程Thread。
- 根据问题创建信息Messages。
- 在线程中运行(run)Assistants,获得结果。
openai在官网给了一个回答数学问题的Assistant创建方法,该案例使用的能力是自动编辑和运行代码。
Step0 安装openai-python
1 | pip install openai |
测试是否安装成功:
1 | import os |
如果还没有OpenAI的api,某宝可以解决;如果不知道还不知道怎么设置OPENAI_API_KEY,可以参考这个链接。
Step1 创建Assistants
首先,创建一个assistant实例,其中可以指定的主要参数包括:
- Instructions:指定这个Assistant的行为和返回。
- model:选择使用的模型,包括GPT-3.5和GPT-4的一系列模型,需要注意的是如果要使用信息检索,必须使用这两个模型:
gpt-3.5-turbo-1106
,gpt-4-1106-preview
。 - Tools:可以选择上文提到的三种工具,分别是:
code_interpreter
,retrieval
,function
。
1 | assistant = client.beta.assistants.create( |
Step2 创建对话线程Thread
这里可以我理解新建类似于chatgpt的一个会话,官方建议尽早给每个用户创立一个thread,且将该用户所有的message都放在这个thread内。
1 | thread = client.beta.threads.create() |
Step3 将信息Messages 加入Thread
构建Messages,并将起加入到Thread中。
1 | message = client.beta.threads.messages.create( |
Step4 运行(run)Assistants
为了获取结果,构建run来让Assistants来阅读Thread,并做出调用工具等一系列指令。
1 | run = client.beta.threads.runs.create( |
Step5 展示结果
当开始运行后,可以查看运行的状态,如果状态为completed,则表示运行结束了,可以在thread中得到运行的结果了。
1 | run = client.beta.threads.runs.retrieve( |
三种工具详解
代码生成和运行
这个实现了从需求到代码实现、调试运行、结果返回的全流程自动化。
gpt会首先解析用户的需求,然后根据这个需求在沙盒环境下生成运行Python代码,如果生成的代码运行有错误,它甚至可以根据错误自行修改完善。
此外,它也支持各种类型的文件输入和输出,例如可以输入一个csv文件,得到一个可视化的图片输出。
文本检索
为了使用信息检索工具,需要先上传我们的文档,assistants支持文件最大大小为512MB,格式包括pdf文件,markdown文件,docx文件,具体见表格。
有了这些输入的文档,文本检索工具会将我们的需求和上传的文本进行整合,以此输出更可靠的结果。
除了改进输出结果外,这个工具也提供了其他几个非常重要的工具,最为重要的一个是可以输出引用出处,也就是会把回答中涉及到的引用给标注出来,知明是哪个文件的哪个位置,这点对于构建一个完全可靠的答案非常重要。
函数调用
除了让gpt根据问题自动编写代码外,也可以向起提供编辑好的函数,并说明函数的用途、参数等信息,这样gpt就可以在用到的时候自动调用这些函数,实现能力的超级加倍。
如何理解这些工具
这张图说明了上面这些功能的实现细节,其中包括五个对象:
- Assistant:相当于一个智能体,它可以调用其他的工具,是用户与之交流的对象;
- Thread:用户与Assistant发起的一次对话;
- Message:用户或Assistant所发出,可以是文字,也可以是文档、图片等;
- Run:Assistant为了解决用户的需求,所发起的一次求解过程。在这个过程中,它可以调用其他的工具(例如信息检索)来帮助他解决这个问题;
- Run Step:更加细致化的流程描述,理解Assistant在一次求解过程中的工作流程。