Assistants API 快速入门试用版
创建 Assistant 的分步指南。
Assistants API 的典型集成具有以程:
- 通过定义 Assistant 的自定义指令并选择模型来创建 Assistant。如果有帮助,请添加文件并启用 Code Interpreter、File Search 和 Function calling 等工具。
- 在用户开始对话时创建 Thread。
- 在用户提问时将消息添加到线程中。
- 在 Thread 上运行 Assistant,通过调用模型和工具来生成响应。
本入门指南介绍了创建和运行使用 Code Interpreter 的 Assistant 的关键步骤。在此示例中,我们将创建一个 Assistant,该 Assistant 是个人数学导师,并启用了 Code Interpreter 工具。
步骤 1:创建 Assistant
Assistant 表示一个实体,该实体可以配置为使用多个参数(如 、 和 )响应用户的消息。model
instructions
tools
创建 Assistant
1
2
3
4
5
6
7
8
9
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-4o",
)
第 2 步:创建线程
线程表示用户与一个或多个 Assistant 之间的对话。当用户(或您的 AI 应用程序)开始与您的 Assistant 对话时,您可以创建 Thread。
创建线程
thread = client.beta.threads.create()
第 3 步:向线程添加消息
您的用户或应用程序创建的消息内容将作为 Message 对象添加到 Thread 中。消息可以包含文本和文件。每个线程有 100,000 条消息的限制,我们巧妙地截断了任何不适合模型上下文窗口的上下文。
向线程添加消息
1
2
3
4
5
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:创建运行
将所有用户消息添加到线程后,您可以使用任何助手运行线程。创建运行使用与 Assistant 关联的模型和工具生成响应。这些响应将作为 Messages 添加到线程中。assistant
您可以使用 Python 和 Node 开发工具包中的“create and stream”帮助程序来创建运行并流式传输响应。
创建和流式传输运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from typing_extensions import override
from openai import AssistantEventHandler
# First, we create a EventHandler class to define
# how we want to handle the events in the response stream.
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)
# Then, we use the `stream` SDK helper
# with the `EventHandler` class to create the Run
# and stream the response.
with client.beta.threads.runs.stream(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Please address the user as Jane Doe. The user has a premium account.",
event_handler=EventHandler(),
) as stream:
stream.until_done()
在此处的 API 参考中查看 Assistants 流式传输事件的完整列表。您还可以在Python和Node存储库文档中查看这些事件的SDK事件侦听器列表。
后续步骤
- 在深入探讨中继续了解 Assistants 概念
- 了解有关工具的更多信息
- 探索 Assistants Playground
- 在 github 上查看我们的 Assistants Quickstart 应用程序