OpenAI Assistant API:实现交互式聊天机器人

作者:API传播员 · 2025-12-21 · 阅读时间:6分钟
OpenAI Assistant API 允许开发者利用大型语言模型构建交互式聊天机器人,支持代码解释器、检索工具和自定义函数调用,实现状态管理和持久性线程,适用于电商、银行等场景。

简介

随着 OpenAI 推出 ChatGPT 和 GPT-3 模型,人工智能(AI)技术的应用已逐渐渗透到我们日常使用的各种应用程序中。从电子商务到银行服务,AI 尤其是大型语言模型(LLM)的集成正在改变用户体验。其中,OpenAI 助手 API 是一个重要的创新工具,它允许开发者构建交互式聊天机器人。最近,OpenAI 在 Beta 阶段发布了 Assistants API,旨在进一步提升用户体验。


学习目标

  • 掌握创建专门构建的 AI 助手的过程,包括如何为其指定说明。
  • 探索助理 API 中的持久性和无限长线程的概念。
  • 了解如何使用 OpenAI 库创建 AI 助手,并设置名称、说明、模型和工具等参数。
  • 学习如何创建线程并运行 AI 助手以完成特定任务。
  • 了解助理 API 的定价结构,包括语言模型令牌、代码解释器会话和检索工具的使用成本。

什么是 OpenAI 助手 API?它能做什么?

OpenAI 助手 API 是一个强大的工具,允许开发者利用 OpenAI 的大型语言模型和工具构建 AI 助手,并将其集成到应用程序中。企业可以根据特定需求定制这些助手,并为其提供相关数据。例如,可以创建一个 AI 天气助手来提供天气信息,或一个 AI 旅行助手来解答旅行相关问题。

这些助手具备以下特点:

  1. 状态管理:助手能够保留之前的对话内容,开发者无需担心状态管理问题,这部分由 OpenAI 负责。
  2. 典型流程
    • 创建助手:选择数据来源、模型、说明和工具。
    • 创建线程:线程存储用户消息和助手的回复,负责管理助手的状态。
    • 添加消息:将用户消息或助手回复添加到线程中。
    • 运行助手:根据线程中的消息,助手调用 OpenAI LLM 生成适当的响应,并可能使用相关工具。

在助理 API 中,助手、线程、消息和运行都被视为对象。此外,还有一个名为 Run Step 的对象,它提供了助手在运行中采取的详细步骤,帮助开发者深入了解其内部工作原理。


助手 API 的工具

在助理 API 中,工具是实现额外功能的关键组件。以下是一些常用工具:

  1. 代码解释器

    • 在沙盒环境中解释 Python 代码。
    • 适用于数据分析场景,例如生成代码分析 CSV 数据并提供结果。
  2. 函数调用

    • 开发者可以定义自定义工具,助手通过调用这些工具生成响应。
  3. 检索工具

    • 用于从知识库中检索数据。
    • 例如,在产品助手中,相关信息可以被分块、嵌入并存储在向量数据库中,助手在响应用户查询时从中检索数据。


构建我们的助手

安装 OpenAI 库

首先,确保安装最新版本的 OpenAI 库:

pip install openai

创建助手

以下是创建助手的代码示例:

import os
import openai

# 设置 API 密钥
os.environ["OPENAI_API_KEY"] = "your_api_key_here"
client = openai.Client(api_key=os.environ["OPENAI_API_KEY"])

# 创建助手
assistant = client.beta.assistants.create(
    name="PostgreSQL Expert",
    instruction="您是PostgreSQL专家,可以用简单的方式回答任何问题。",
    model="gpt-4-1106-preview",
    tools=[{"type": "retrieval"}]
)

在上述代码中:

  • name:助手的名称。
  • instruction:为助手提供的上下文信息。
  • model:用于生成响应的模型。
  • tools:助手使用的工具列表。

加载文件

为助手加载文档以支持检索功能:

# 上传文件
file = client.files.create(
    file=open("/content/LearnPostgres.pdf", "rb"),
    purpose="assistants"
)

# 更新助手
assistant = client.beta.assistants.update(
    assistant_id=assistant.id,
    file_ids=[file.id]
)

此步骤中,PDF 文件被分块并嵌入到助手的知识库中,供后续检索使用。


创建线程和存储消息

创建线程

线程用于存储对话内容:

# 创建线程
thread = client.beta.threads.create()

添加消息

向线程中添加用户消息:

# 添加消息
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="如何在PostgreSQL中创建表?"
)

运行助手

运行助手以生成响应:

# 创建运行
run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id
)

检查运行状态

通过轮询检查运行是否完成:

import time

def poll_run(run, thread):
    while run.status != "completed":
        run = client.beta.threads.runs.retrieve(
            thread_id=thread.id,
            run_id=run.id
        )
        time.sleep(0.5)
    return run

# 等待运行完成
run = poll_run(run, thread)

数据隐私与道德问题

OpenAI 对数据隐私和安全性采取了严格的措施:

  • 用户是数据的唯一所有者,OpenAI 不会使用用户数据进行模型训练。
  • 数据通过 AES-256 静态加密和 TLS 1.2+ 传输加密。
  • OpenAI 已通过 SOC 2 合规性审计,确保数据隐私和安全。

结论

OpenAI 助手 API 为开发者提供了构建和集成 AI 助手的全新方式。通过支持代码解释器、检索工具和自定义工具,开发者可以创建专为特定任务设计的助手。持久性线程的引入简化了状态管理,进一步提升了开发效率。


关键要点

  • 助手 API 可用于创建专为特定任务定制的 AI 助手。
  • 支持代码解释器和检索工具,扩展了助手的功能范围。
  • 持久性线程简化了状态管理,为开发者提供了更大的灵活性。
  • 数据隐私和安全性得到了充分保障。

常见问题

Q: 助手 API 的定价如何?
A: 定价基于所选模型和工具的使用情况,例如代码解释器按会话计费,检索工具按每日使用量计费。

Q: 助手 API 是否支持自定义工具?
A: 是的,开发者可以通过函数调用定义自定义工具。

Q: 数据隐私是否有保障?
A: OpenAI 不会使用用户数据进行训练,并通过多种加密措施确保数据安全。

原文链接: https://www.analyticsvidhya.com/blog/2023/11/elevate-user-experience-implementing-openai-assistant-api-for-interactive-chatbots/