深入探讨GPTs和AI Assistant( 三 )


开发者可以在 Playground 中进行调试和测试,具体如下,其具体的能力和GPTs比较相似,只是可以看到更多的debug信息 。也是可视化的具体界面 。

深入探讨GPTs和AI Assistant

文章插图
Assistants API工作机制剖析
Assistant API 的目标是帮助开发者更高效地开发出功能强大的AI助手,这些助手可以有效地利用OpenAI提供的多项能力以及用户自身构建的工具 。
  1. AI 助手可以调用 OpenAI 的模型,并通过特定的指令来定义助手的行为特性和能力 。
  2. AI 助手可以同时调用多个工具tools , 这些工具可以是 OpenAI 自己开发的工具,例如 like Code interpreter 和 Knowledge retrieval 也可以是用户自己通过 Function calling自己实现的工具 。这样,AI助手就能拓宽其解决问题的能力范围 。
  3. AI 助手可以访问持久化的对话,新引入的对话Thread功能简化了AI应用的对话管理工作 。用户只需要创建一次对话(Thread) , 就可以在后续快速地访问并与其进行对话,并轻松获取答案,这样就无需再关心模型对对话窗口的限制 。
  4. AI 助手可以访问多种类型的文件 。AI助手可以在初始化创建时访问文件,或是在对话初始化的时候获取文件 。它也可以在使用工具时创建新的文件,然后在之后的调用中引用这些文件 。
AI Assistant的重要对象概念
深入探讨GPTs和AI Assistant

文章插图
从我们上述的讲解内容中,我们可以很清楚,AI助手API的调用主要由 Assistant、Thread、Message、Run 和 Run Step 这五个对象组成
对象(OBJECT)含义助手对象(Assistant)调用 OpenAI 模型的任务型 AI,该AI 具备访问 tools 的能力对话(Thread)用户和AI之间的对话 。Thread 对话存储消息,并且自动处理文本长度超出限制的问题消息(Message)消息由用户或者AI产生,可以包含文本,图片(暂时不支持) , 或者文件 。消息在一个Thread对话中以有序列表形式存储执行(Run)通过AI助手对某个对话进行显式执行 。AI助手根据自身的配置信息和Thread中的消息内容,调用不同的工具(tools),从而得出回复 。执行得到的结果会被存储在Thread的消息中,作为AI的回复执行步骤(Run Step)执行(Run)的中间过程详细记录 。包括AI使用了哪些tool , 或者产生了哪些消息 。这个对象可以帮助开发者理解AI如何得出最终的结果
创建一个AI Assistant 对象
创建一个AI 助手对象非常简单,只需要指定使用的语言 model,然后通过instruction 指令规定AI 助手的性格以及能力(或者是目标) 。
  • name: AI 助手的名字
  • instructions: 该参数指定了AI的性格以及目标或者能力 , 这个很重要,会影响AI助手的输出可靠性 。
  • tools:list , 可以传入最多128个tools,可以使用 OpenAI 自己的 Code Interpreter 和 retrieval 工具,或者是自己构建的第三方 functioncalling.
  • file_ids: list,文件的ID , 这里传入的文件ID 可以将文件传给Code Interpreter 和 retrieval使用 。文件需要通过File的上传接口 进行上传,并且需要将接口的purpose设置成 assistants. 一个AI 助手可以使用最多20个文件 。每个文件最多512M 。
文件上传:
file = client.files.create( file=open("speech.py", "rb"), purpose='assistants' )
AI助手创建:
assistant = client.beta.assistants.create( name="Data visualizer", instructions="You are great at creating beautiful data visualizations. You analyze data present in .csv files, understand trends, and come up with data visualizations relevant to those trends. You also share a brief text summary of the trends observed.", model="gpt-4-1106-preview", tools=[{"type": "code_interpreter"}], file_ids=[file.id] ) 管理对话和消息
对话(Thread)和消息(Messages)代表了AI 助手和用户的聊天 。一个对话中消息的个数是没有限制的 , 一旦消息的内容超过了模型可以处理的最长的窗口长度,Thread会自动舍弃最旧的消息,包含尽可能多的消息内容 。(注意,该策略OpenAI可能会更新)
Thread 和 Messages 的创建如下:
thread = client.beta.threads.create( messages=[ { "role": "user", "content": "Create 3 data visualizations based on the trends in this file.", "file_ids": [file.id] } ] )
messages 可以有如下两种角色(role):