OpenAI Assistant API(一):Assistant对象的创建方法

一、OpenAI Assistant API运行原理

  1. 核心概念:Assistant API的核心是构建assistant(助手)、thread(线程)和message(消息)这三个静态抽象概念之间的紧密联系,同时引入run(运行)这个动态抽象概念。
    在这里插入图片描述

    run用于保持与大模型的任务交互工作,将assistant、thread和message连接在一起,实现与大模型的实际交互。这类似于agent概念中,静态设定与动态运行时状态的关系,run就相当于agent的运行时状态,推动任务执行。

  2. 以ChatGPT为例理解概念

    • assistant:在ChatGPT中,每个用户账号对应Assistant API中的一个assistant实例对象,代表用户角色。
    • thread:用户账户下的每个历史会话框可理解为一个thread。每个assistant对象可以有多个thread,用于执行不同的聊天或任务,如不同主题的对话。
    • message:进入任意一个历史会话框,其中的历史聊天记录就是message。每个thread可能包含多个message,用于存储对话过程中的问答信息,使模型具备记忆能力。
  3. 各概念在应用开发逻辑中的关系:assistant可以访问thread,thread通过存储message,并在对话时自动构建用户问题与大模型回答的对应存储机制,同时在后续对话中追加历史信息,让大模型拥有记忆功能。

  4. run的作用及运作方式:run将assistant、thread和message有机串联,形成实际可执行的工作流程,推动任务或对话的实际运行。其运作方式如同用户输入问题,大模型接收、分析并回答,用户收到回复这一过程。

  5. OpenAI官方流程图解析:以单一Assistant API对象(如个人金融机器人)为例,assistant对象需赋予能力和任务目标,如个人金融助理。用户消息(user message)通过thread传递,run接收assistant和thread(包含用户问题),并依据特定思考方式或工具(如code interpreter代码解释器)生成模型响应,最后将响应追加回thread,完成一轮对话或任务。
    在这里插入图片描述

  6. 用户与Assistant API交互的顺序流程图及关键步骤

    • 创建对话线程:用户发送POST请求到/v1/threads,Assistant API接收请求并初始化一个对话线程(Thread),返回线程ID。这相当于初始化一个会话框。
    • 发送消息:用户通过POST请求到/v1/threads/[thread_id]/messages发送消息,Assistant API确认消息并处理,将消息添加到对应的thread中。
    • 消息处理与响应(run状态):此过程涉及与大模型的实际连接,根据用户消息获取最终响应。
    • 请求最新回复:用户通过GET请求到/v1/threads/[thread_id]/messages请求最新回复,Assistant API找到对应的thread,获取并返回最后一条消息,展示给用户。
UserAssistants APIThread (Conversation)MessageCreate Thread (POST /v1/threads)Thread initializedRespond with Thread IDSend Message (POST /v1/threads/{thread_id}/messages)Process MessageAdd Message to ThreadConfirm Message ReceiptRequest Response (GET /v1/threads/{thread_id}/messages)Retrieve Last MessageProvide Last MessageDisplay Assistant's ResponseUserAssistants APIThread (Conversation)Message

在这里插入图片描述

二、OpenAI Assistant API使用方法

在这里插入图片描述

  1. 官方提供的两种构建方式
    • Assistants Playground(网页构建):这是一个可视化界面,用户可在其中自定义参数和流程。优势在于用户友好,便于测试和学习,无需安装额外软件,适合初学者和非技术用户。但它仅适用于OpenAI的GPT模型生态。
    • 本地编程环境创建:通过API在本地编程环境调用,允许开发者基于OpenAI的GPT模型实现人工智能助手或代理。优势是扩展度和可定制化更高,可集成到现有流程中。OpenAI提供了Python和Node.js的SDK,方便调用接口。
  2. 创建Assistant对象
    • 指定模型:创建Assistant对象时,必须指定model参数,其值为OpenAI提供的GPT家族模型名称,可通过OpenAI官网或在开发环境中使用models.list()方法查看可调用模型。

    • 其他建议参数:虽然name(设定身份)和instructions(设定任务目标)是可选参数,但建议作为必填项传递,以明确AI agent的身份和目标,提高任务执行效果。在这里插入图片描述

    • 构建代码示例:使用client.beta.assistants.create()方法创建Assistant对象,如:

from openai import OpenAI
client = OpenAI()
assistant = client.beta.assistants.create(
    model="gpt-4o-mini-2024-07-18",
    name="Good writer",
    instructions="You are an expert at writing excellent literature"
)

在这里插入图片描述

  • 返回响应体分析:创建成功后,可通过to_dict()方法查看返回响应体,其中包含如id(唯一标识)、created_at(创建时间)、instructions(自定义指令)、model(使用模型)、name(设定名称)等信息。
    在这里插入图片描述
字段解释
id该Assistant对象在OpenAI系统中的唯一标识符,用于在后续操作中准确识别和定位此Assistant实例 。
created_atAssistant对象的创建时间,以Unix时间戳形式呈现,可用于记录创建时间点,方便进行时间相关的统计或审计等操作 。
description对Assistant对象的描述信息,当前值为None,可用于添加关于Assistant功能、用途等方面的简要说明 。
instructions创建Assistant对象时设定的指令,这里表示“你是优秀文学创作方面的专家” ,用于明确Assistant的任务目标和行为准则 。
metadata元数据字段,当前为空字典,开发者可自行添加一些额外信息,如版本号、所属项目等,用于更好地管理和识别Assistant对象 。
model创建该Assistant对象所使用的具体模型版本,此处为gpt-4o-mini-2024-07-18 ,模型决定了Assistant具备的能力和表现 。
name为Assistant设定的名称,即“Good writer(优秀作家)” ,是其身份标识的一部分,在交互中可体现其角色 。
object固定值为assistant,用于表明该对象是Assistant API中的Assistant对象实例 。
tools工具列表,当前为空列表,若Assistant在执行任务时需要使用外部工具(如代码解释器等),相关工具配置信息会在此列出 。
response_format响应格式设置,当前为auto,表示由系统自动决定如何格式化返回的响应内容 。
temperature大模型生成回复时的参数,取值范围通常在0 - 2之间,值为1.0时,用于控制生成文本的随机性,值越高文本越具多样性和创造性,但也可能更偏离预期;值越低回复越保守、确定性越高 。
tool_resources工具资源相关字段,当前为空字典,当Assistant使用工具时,可能会在此存储与工具相关的资源信息,如工具使用权限、配置参数等 。
top_p同样是大模型生成回复的参数,与temperature类似,用于调整生成文本的随机性和多样性,通过选择概率质量高的词来生成文本,当前值为1.0 。
  1. 创建Thread对象:在创建好Assistant对象后,需创建Thread对象。在这里插入图片描述
    Thread即会话,每个Assistant对象可应用多个Thread。创建Thread的一种简单方式是直接调用https://api.openai.com/v1/threads接口,无需任何参数。Thread实例与Assistant实例在创建阶段无需绑定,执行会话或任务时绑定即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值