跳至主要内容

OpenAI Assistants API 教程

通过我们的文章全面了解 Assistants API,深入了解其功能、行业用法、设置指南和最佳实践,以最大化其在各类业务应用中的潜力。
· 14分钟 阅读

使用 AI 探索

OpenAI Dev Day 标志着人工智能领域的重要里程碑,发布了一系列突破性的 AI 服务,包括 GPTs、GPTs 应用商店、GPT-4 Turbo,以及创新的 Assistants API。

该 API 为开发者提供先进的 AI 工具,助您创建能够处理各类任务的定制 AI 助手。

在本教程中,我们将深入探索 Assistants 的世界,详细介绍其能力、跨行业的实际应用,并提供使用 Python 实现的分步指南。欢迎与我们一同掌握构建个性化 AI 助手的要领。

Assistants API 概览

撰写本文时,Assistants API 仍处于测试阶段,OpenAI 开发团队正积极完善更多功能。在此之前,让我们先看看当前版本能做什么!

本节将进一步说明 Assistants 的工作方式,以及其底层组件之间的交互。

Assistants API 的工作原理是什么?

Assistants 的两大支柱是 OpenAI 的模型与工具。

  • 模型种类多样,包括但不限于:GPT-4、GPT-4 Turbo、GPT-3.5、GPT-3、DALL-E、TTS、Whisper、Embeddings、Moderation。Assistants 使用这些模型来完成特定智能任务。
  • 工具则赋予 Assistants 访问 OpenAI 托管工具的能力,如代码解释器与知识检索。它甚至允许用户通过函数调用功能构建自定义工具。

Assistants 的工作方式

Assistants 的工作方式

现在,让我们来看看实现一个 Assistant 所涉及的五个主要步骤。

  • 创建并描述一个 Assistant:Assistant 是利用模型、指南和各类工具开发的专用 AI。
  • 启动一个线程(Thread):线程代表用户发起的对话序列,可在其中添加消息,形成互动交流。
  • 添加消息:消息由用户的文本输入构成,亦可包含文本、文件和图像。
  • 触发 Assistant:激活 Assistant 来分析线程,按需使用特定工具,并生成合适的回复。

Assistants API 的行业用例

借助 Assistant API,可将 AI 强有力地集成到各类业务流程中,从而提升效率、自动化繁琐任务,并为用户查询提供更快速、更准确的响应。

以下是五个具有代表性的行业用例。

开发支持

Assistant 可作为按需编码助手。借助代码解释器,它可以将代码片段在不同编程语言之间转换,辅助软件开发并降低新语言的学习门槛。此功能在使用多语言的团队或用于教学的教育场景中尤为有用。

企业知识管理

可利用检索功能开展组织内部的知识管理。通过上传并处理内部文档、报告与手册,Assistant 成为集中式知识库。员工可向 Assistant 查询特定信息,从而提升效率并减少在海量文档中检索信息所花费的时间。

客户支持自动化

Assistant 可以集成到客户支持系统中。通过函数调用,它能从外部 API 或数据库获取信息来回答客户问题,高效自动化常见问答。这种集成可通过提供快速、准确的响应来提升客户体验,并减轻人工支持人员的负担。

数据分析

通过描述用于数据分析的函数,用户可以让 Assistant 执行复杂的数据处理并生成报告,将自然语言查询转化为结构化的数据分析任务。

IT 运维自动化

IT 团队可使用 Assistant 自动化日常运维。通过定义与常见 IT 任务相对应的函数,如系统诊断、网络检查或软件更新,Assistant 可根据用户指令执行这些任务。此功能可显著减少 IT 专业人员在日常维护上的投入,让他们专注于更复杂的问题。

上手实操:开始使用 OpenAI Assistants API

在了解 OpenAI API 的基础上,让我们进入更实用的用例。本节将指导您创建一个可从 PDF 文件中检索知识的助手。

完整的端到端笔记本可在 DataLab 获取。

知识检索工作流

对于任何技术实现,最好提供一个可视化的工作流,展示正在开发的整体应用中主要组件之间的交互。

该工作流强调了从文件上传到生成最终响应的五个主要实施步骤。

知识检索工作流的五个主要步骤

知识检索工作流的五个主要步骤

  • 文件上传:流程从上传用户希望交互的 PDF 文件开始。
  • 创建助手:该助手专为处理和理解上传 PDF 文件中的信息而设计。
  • 发起交互:这是对话线程的起点,用户在此提供由助手处理的输入消息。
  • 触发助手:此时助手会处理输入消息,生成相关的回复。
  • 输出响应:最终阶段,助手向用户显示回复。

设置 OpenAI KEY

成功复现本教程结果所需的主要工具包括:

  • Python:这是本教程使用的主要编程语言。备选方案为 NodeJS。
  • OpenAI:用于与 OpenAI 服务交互的包。我们的 OpenAI API(Python 版)速查表全面概述了如何掌握利用 OpenAI API 的基础。
  • OS:用于配置环境变量的操作系统包。

第一步是获取 OpenAI KEY,它有助于访问 DALL-E 3 模型。主要步骤如下所示:

创建 OpenAI KEY 的四个主要步骤 创建 OpenAI KEY 的四个主要步骤

上述四个主要步骤不言自明。但务必从OpenAI 官方网站创建账户。

您还可以通过我们的初学者指南:OpenAI API 实战与最佳实践进一步探索 OpenAI API。该指南介绍了 OpenAI API、其用例、上手实践方式以及应遵循的最佳实践。

开始构建助手

获取密钥后,请务必不要与他人分享。密钥应保持私密。接下来,将密钥设置为环境变量,以便进行后续操作:

import os
OPENAI_API_KEY= "<YOUR PRIVATE KEY>"
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY

文件上传

以下辅助函数利用“create”函数,自动将用户希望交互的文件上传到其 OpenAI 账户中。

“create”函数有两个主要参数:

  • 要上传文件的路径
  • 该文件的用途,本例为“assistants”
def upload_file(file_path):
    
	# Upload a file with an "assistants" purpose
	file_to_upload = client.files.create(
  	file=open(file_path, "rb"),
  	purpose='assistants'
	)
     return file_to_upload

最后,使用该辅助函数触发位于data文件夹中的 Transformer 论文的上传流程。

transformer_paper_path = "./data/transformer_paper.pdf"
file_to_upload = upload_file(transformer_paper_path)

成功执行函数后,transformer_paper.pdf 将上传并在“文件”选项卡中可见,如下所示。

已上传到 OpenAI 账户的 Transformer 论文

Transformer 论文已上传至 OpenAI 账户

创建助手

助手通过 client.beta.assistants 模块中的create函数创建,需提供五个主要参数:

  • Name:创建者为助手指定的名称。我们将其命名为 Scientific Paper Assistant(科学论文助手)。
  • Instructions:描述助手应如何行为或回答问题。在本用例中,助手使用如下指令:“You are a polite and expert knowledge retrieval assistant. Use the documents provided as a knowledge base to answer questions.”
  • Model:用于知识检索的底层模型。可使用任意 GPT-3 或 GPT-4 模型。本文撰写时使用的是最新的 gpt-4-1106-preview 模型。
  • Tools:要使用的工具类型,可选为代码解释器与检索。本文聚焦于检索,因此不使用解释器。
  • File_ids:知识库中每个文件的唯一标识符列表。

辅助函数 create_assistant 将上述信息组合起来以创建助手,如下所示:

def create_assistant(assistant_name,
                 	my_instruction,
                 	uploaded_file,
                 	model="gpt-4-1106-preview"):
    
	my_assistant = client.beta.assistants.create(
	name = assistant_name,
	instructions = my_instruction,
	model="gpt-4-1106-preview",
	tools=[{"type": "retrieval"}],
	file_ids=[uploaded_file.id]
	)
    
	return my_assistant

现在,我们可以使用指令与助手名称来运行函数、创建助手:

inst="You are a polite and expert knowledge retrieval assistant. Use the documents provided as a knowledge base to answer questions"
assistant_name="Scientific Paper Assistant"

my_assistant = create_assistant(assistant_name, inst, uploaded_file)

发起交互

创建助手后,顺理成章的下一步是使用用户的消息或请求来启动一个交互线程。

线程与消息分别通过 client.beta.threads 与 client.beta.threads.messages 的 create 函数创建。

这两个功能通过辅助函数 initiate_interaction 组合使用。

def initiate_interaction(user_message, uploaded_file):
    
	my_thread = client.beta.threads.create()
	message = client.beta.threads.messages.create(thread_id=my_thread.id,
                                              	role="user",
                                              	content=user_message,
                                              	file_ids=[uploaded_file.id]
	)
    
	return my_thread

可以通过 user_message 变量发起交互:

user_message = "Why do authors use the self-attention strategy in the paper?"
my_thread = initiate_interaction(user_message, uploaded_file)

触发助手并生成回复

基于上述线程,可以触发助手来回应用户消息。触发操作在辅助函数 trigger_assistant 中定义,回复由 response 变量给出。

def trigger_assistant():
	run = client.beta.threads.runs.create(
  	thread_id = my_thread.id,
  	assistant_id = my_assistant.id,
	)


trigger_assistant()

messages = client.beta.threads.messages.list(
  thread_id = my_thread.id
)

response = messages.data[0].content[0].text.value
response

成功执行上述代码后,将生成如下回复。

助手对用户消息的回复

助手对用户消息的回复

该回复与作者在第 6 页对该问题的回答完全一致。

Transformer 论文中提及该回复的段落

来自Transformer 论文的相关段落

使用 OpenAI Assistants API 的最佳实践

在项目中使用 Assistant API 时,务必遵循最佳实践,以确保性能与用户体验达标。以下是需重点考虑的要点。

  • 明确目标:为 Assistant 设定具体目标,确保其能高效满足预期用途与用户需求。

  • 优化数据输入:所用数据(如上传文件)的质量与相关性对 Assistant 回复的准确性与效率至关重要。

  • 重视用户隐私:实施稳健的数据隐私规范,保护用户信息并遵守相关数据保护法律。

  • 测试与迭代:在真实场景中定期测试 Assistant,并基于反馈不断迭代,以改进性能与用户体验。

  • 提供清晰文档:为 Assistant 的使用提供详尽指南,帮助用户理解其功能与局限。


结语

总之,本文探讨了 Assistants API,重点介绍了其工作机制以及在不同行业中的应用方式。我们首先介绍了该 API 及其关键功能,为深入理解奠定基础。

接着,我们考察了 Assistants API 的具体特性,并讨论了其在各业务领域的应用,展示了其广泛的实用价值。

我们还提供了入门使用 Assistants API 的分步指南,帮助您更轻松地根据自身需求完成设置。

此外,我们分享了使用该 API 时应牢记的重要最佳实践,确保您最大化其价值。

简而言之,Assistants API 是一款多功能且有价值的工具,可适配多种用途,为能够有效掌握其用法的用户带来显著收益。

想进一步提升您使用 OpenAI API 的体验并拥抱更具创意的方式吗?我们的DALL-E 3 API 全面指南将帮助您探索 DALL-E 3 API 的变革力量,涵盖其关键功能、行业应用以及释放创意潜能的使用技巧。

如果您完全是新手,不妨从我们的“使用 OpenAI API”课程开始。

Zoumana Keita

作者

Zoumana Keita

一位多才多艺、乐于分享知识并回馈他人的数据科学家。Zoumana 是 YouTube 内容创作者,也是 Medium 上的顶尖科技写作者。他热爱演讲、编程与教学。Zoumana 拥有两个硕士学位:其一是在法国巴黎获得的计算机科学硕士,专注于机器学习;其二是在美国德州理工大学获得的数据科学硕士。他的职业生涯始于法国 Groupe OPEN 的软件开发工程师,随后加入 IBM 担任机器学习顾问,为保险公司构建端到端的 AI 解决方案。之后,Zoumana 加入了 Axionable——一家总部位于巴黎与蒙特利尔的首家“可持续 AI”初创公司。在那里,他担任数据科学家,为来自法国、蒙特利尔、新加坡和瑞士的客户交付 AI 产品,主要聚焦 NLP 场景。此外,他将 5% 的时间投入到研发工作。目前,他在 IFC(世界银行集团)担任高级数据科学家。

主题