[译][AI OpenAI-doc] 助手 API Beta

简介: 助手 API 允许你在自己的应用程序中构建 AI 助手。助手具有指令,并可以利用模型、工具和文件来响应用户的查询。目前,助手 API 支持三种类型的工具:代码解释器、文件搜索和函数调用。

助手 API 允许你在自己的应用程序中构建 AI 助手。助手具有指令,并可以利用模型、工具和文件来响应用户的查询。目前,助手 API 支持三种类型的工具:代码解释器、文件搜索和函数调用。

你可以通过助手 playground 探索助手 API 的功能,或者按照本指南中的逐步集成步骤构建。

概述

助手 API 的典型集成流程如下:

  1. 通过定义其自定义指令并选择模型来创建助手。如有需要,添加文件并启用 Code Interpreter、File Search 和 Function calling 等工具。
  2. 当用户开始对话时,创建一个 Thread。
  3. 当用户提出问题时,在 Thread 中添加消息。
  4. 运行助手在 Thread 上调用模型和工具生成响应。

本入门指南将逐步介绍创建和运行使用 Code Interpreter 的助手的关键步骤。在本示例中,我们将创建一个启用了 Code Interpreter 工具的个人数学辅导助手。

对 Assistants API 的调用要求您传递一个 beta HTTP 头。如果您使用 OpenAI 的官方 Python 或 Node.js SDK,这将自动处理。

OpenAI-Beta: assistants=v2

步骤 1:创建助手

助手代表一个实体,可以根据模型、指令和工具等多个参数进行配置,以响应用户的消息。

from openai import OpenAI
client = OpenAI()

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-turbo",
)

步骤 2:创建线程

线程表示用户与一个或多个助手之间的对话。当用户(或您的 AI 应用程序)与您的助手开始对话时,您可以创建一个线程。

thread = client.beta.threads.create()

步骤 3:向线程添加消息

用户或应用程序创建的消息内容被添加为消息对象到线程中。消息可以包含文本和文件。您可以向线程添加的消息数量没有限制 — 我们会智能地截断任何不符合模型上下文窗口的内容。

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?"
)

步骤 4:创建运行

一旦所有用户消息都添加到线程中,您可以使用任何助手运行该线程。创建一个运行使用与助手关联的模型和工具来生成响应。这些响应作为助手消息添加到线程中。

使用流式传输

您可以使用 Python 和 Node SDK 中的“create and stream”助手来创建运行并流式传输响应。

from typing_extensions import override
from openai import AssistantEventHandler

# 首先,我们创建一个 EventHandler 类来定义我们希望如何处理响应流中的事件。

class EventHandler(AssistantEventHandler):    
  @override
  def on_text_created(self, text) -> None:
    print(f"\nassistant > ", end="", flush=True)

  @override
  def on_text_delta(self, delta, snapshot):
    print(delta.value, end="", flush=True)

  def on_tool_call_created(self, tool_call):
    print(f"\nassistant > {tool_call.type}\n", flush=True)

  def on_tool_call_delta(self, delta, snapshot):
    if delta.type == 'code_interpreter':
      if delta.code_interpreter.input:
        print(delta.code_interpreter.input, end="", flush=True)
      if delta.code_interpreter.outputs:
        print(f"\n\noutput >", flush=True)
        for output in delta.code_interpreter.outputs:
          if output.type == "logs":
            print(f"\n{output.logs}", flush=True)

# 然后,我们使用带有 `EventHandler` 类的 `stream` SDK 助手来创建运行并流式传输响应。

with client.beta.threads.runs.stream(
  thread_id=thread.id,
  assistant_id=assistant.id,
  instructions="请以简•多名义为用户。用户拥有高级帐户。",
  event_handler=EventHandler(),
) as stream:
  stream.until_done()

在我们的 API 参考中查看完整的助手流事件列表。您还可以在 Python & Node 仓库文档中查看这些事件的 SDK 事件监听器列表。

不使用流式传输

运行是异步的,这意味着您希望通过轮询运行对象来监视其状态,直到达到终端状态。为了方便起见,“创建和轮询”SDK 辅助工具同时帮助创建运行并轮询其完成状态。

run = client.beta.threads.runs.create_and_poll(
  thread_id=thread.id,
  assistant_id=assistant.id,
  instructions="请以简•多名义为用户。用户拥有高级帐户。"
)

一旦运行完成,您可以列出由助手添加到线程中的消息。

if run.status == 'completed': 
  messages = client.beta.threads.messages.list(
    thread_id=thread.id
  )
  print(messages)
else:
  print(run.status)

如果您想查看在此运行期间进行的任何工具调用,则还可以列出此运行的运行步骤。


相关文章
|
2天前
|
人工智能 自然语言处理 API
深度融合与创新:Open API技术促进AI服务生态构建
【7月更文第21天】在数字化转型的浪潮中,人工智能(AI)已从概念探索走向实际应用,深刻改变着各行各业。Open API(开放应用程序接口)作为连接技术与业务的桥梁,正成为推动AI服务普及和生态构建的关键力量。本文将探讨Open API技术如何通过标准化、易用性和灵活性,加速AI服务的集成与创新,构建一个更加丰富多元的AI服务生态系统。
26 2
|
2天前
|
人工智能 自然语言处理 算法
开放式API在AI应用开发中的革命性角色
【7月更文第21天】随着人工智能技术的飞速发展,开放式API(Application Programming Interfaces)正逐渐成为连接技术与创新、加速AI应用开发的关键桥梁。这些API允许开发者轻松访问预先训练好的模型和复杂算法,无需从零开始构建基础架构,从而极大地降低了AI应用的开发门槛,促进了技术民主化。本文将探讨开放式API如何在AI领域引发革命性变化,通过实际案例和代码示例展现其强大功能。
16 2
|
2天前
|
人工智能 自然语言处理 搜索推荐
探索AI驱动的未来:Open API如何赋能企业数字化转型
【7月更文第21天】在当今这个数据为王、智能引领的时代,人工智能(AI)已不再是遥远的概念,而是深深融入到各行各业,成为推动企业数字化转型的重要引擎。随着技术的不断成熟与开放,Open API(开放应用程序接口)作为一种连接技术与业务的桥梁,正以前所未有的方式赋能企业,加速其智能化进程。本文将深入探讨Open API如何通过简化集成、促进创新、提升效率等途径,助力企业在AI时代中乘风破浪,实现数字化转型的华丽蜕变。
20 1
|
12天前
|
存储 SQL 人工智能
|
18天前
|
人工智能 自然语言处理 负载均衡
探索 api.maynor1024.live:一站式 AI 服务平台
探索 api.maynor1024.live:一站式 AI 服务平台
44 1
|
21天前
|
人工智能 前端开发 API
基于Web Speech API给AI语言模型加上语音功能,距离MOSS又近了一步
基于Web Speech API给AI语言模型加上语音功能,距离MOSS又近了一步
21 0
|
19天前
|
NoSQL 安全 API
如何有效提升 API 接口的安全性?
**API安全关键在于验证和防刷。通过排序参数、生成签名和MD5加密确保请求合法性。使用Redis限制请求频率,防止接口被恶意刷取。验证和防刷策略结合,保护API免受攻击和滥用。**
42 0
|
22小时前
|
API 数据安全/隐私保护 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
【7月更文挑战第23天】Python的RESTful API设计在Web开发中流行,提升效率与体验。REST强调HTTP方法(GET, POST, PUT, DELETE)操作资源。使用Flask框架可快速实现API,如管理用户信息。示例代码展示如何创建、读取、更新和删除用户,通过不同HTTP方法和URL路径。实际应用中,增加验证、错误处理和权限控制可增强API的安全性和稳定性。安装Flask后,可运行代码测试API功能。
16 6
|
1天前
|
安全 API 网络安全
​邮箱OTP认证验证API发送邮件接口
**摘要 (Markdown格式):** OTP认证增强在线服务安全,尤其适用于邮箱验证。AOKSend提供邮箱OTP验证API,实现安全的邮件发送和用户身份验证。关键优势包括提高安全性、简化用户体验、实时发送、可扩展性和多层安全。配置涉及生成API密钥、设置SMTP、实现OTP逻辑、发送邮件及验证。AOKSend的分析工具帮助优化策略,适合各规模企业。
|
1天前
|
安全 API 网络架构
Python RESTful API设计新篇章,打造高效、易用、安全的Web服务接口,你准备好了吗?
【7月更文挑战第22天】在数字化转型中,RESTful API借助Python的Flask和Django REST Framework,提供高效、易用和安全的接口设计。Flask示例展示了简洁的CRUD操作,Swagger等工具增进API文档的易用性,而HTTPS、JWT和输入验证确保安全性。Python RESTful API设计涉及效率、可用性和安全,是不断进化的Web服务接口的关键。准备好踏上这一新篇章了吗?一起探索,创造卓越!

热门文章

最新文章