所有文章 > AI驱动 > OpenAI Assistants API 极简入门(附LangChain集成)
OpenAI Assistants API 极简入门(附LangChain集成)

OpenAI Assistants API 极简入门(附LangChain集成)

OpenAI最终发布了Assistants API,它允许用户在应用程序内构建AI助手。

这恐怕是最近最振奋人心的一次更新,或许令人激动,或许令人“厌恶”。又有多少创业产品一夜之间灰飞烟灭?

今天我们利用十分钟来通过这份极简入门教程来看看如何玩转Assistants API

一个Assistant具有指令(instructions),可以利用模型、工具(tool)和知识来响应用户的查询。Assistants API目前支持三种类型的工具(tool):

  • Code Interpreter
  • Retrieval
  • Function calling

在本教程中,我将与您分享使用Assistants API的两种方法:

  1. 命令行工具 curl
  2. LangChain

当然,您必定是可以使用官方的OpenAI Python SDK。只是本次分享我们并没有涵盖。

原则上,与Assistants互动都需要完成以下步骤:

  1. 创建一个Assistant
  2. 创建一个Thread
  3. 提交一个Run
  4. 查询Run的状态
  5. 检索Assistant的响应(消息)

看得出来,这里有3个核心概念 AssistantThreadRun

Assistant代表了AI助理,Thread 则代表Assistant与用户的会话,Run则是一次“人机交互”。

在Assistants API的使用中,理论上是一个异步的调用过程。提交一个Run后,通过API轮询状态,直到完成再获取/检索Assistants的消息,也就是通常所说的模型的回答。

curl命令的玩法

开始前,请确保,

  1. 正确配置了著名的环境变量OPENAI_API_KEY
  2. 该API Key具有GPT4的权限

那我们现在开始。

1. 创建Assistant

curl "https://api.openai.com/v1/assistants" \
-u:$OPENAI_API_KEY \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v1" \
-d '{
"instructions": "You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
"name": "Math Tutor"
"tools": [{"type": "code_interpreter"}],
"model": "gpt-4"
}'

响应中你会得到一个Assistant ID。

2. 创建Thread

Thread代表Assistant与用户之间的会话。

curl https://api.openai.com/v1/threads \
-u:$OPENAI_API_KEY \
-H 'Content-Type: application/json' \
-H 'OpenAI-Beta: assistants=v1' \
-d '{
"messages": [
{
"role": "user",
"content": "Work out the sum of 1, 2 and 3"
}
]
}'

响应中你会得到一个Thread ID。

3. 提交一个Run

提交Run的任务是需要携带上述命令输出中得到的Thread ID和Assistant ID。

curl https://api.openai.com/v1/threads/<thread_id>/runs \
-u:$OPENAI_API_KEY \
-H 'Content-Type: application/json' \
-H 'OpenAI-Beta: assistants=v1' \
-d '{
"assistant_id": "<assistant_id>"
}

响应中你会得到一个Run ID。

4. 查询Run的状态

curl https://api.openai.com/v1/threads/<thread_id>/runs/<run_id> \
-u:$OPENAI_API_KEY \
-H 'OpenAI-Beta: assistants=v1'

响应中你会得到该任务的状态。

5. 获取Assistant的响应/消息

Assistant的响应将是如下API调用中响应的最近一条消息。

curl https://api.openai.com/v1/threads/<thread_id>/messages \
-u:$OPENAI_API_KEY \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v1"

LangChain框架集成

LangChain开发团队一直在积极响应OpenAI的变化。LangChain的最新RC版本已经支持了Assistants API。

确保您使用的LangChain版本至少是0.0.331rc2,以便使用Assistants API

目前,LangChain通过langchain-experimental包提供了Assistants支持。

您唯一需要的类就是OpenAIAssistantRunnable,这将使代码更加清晰。

听起来非常简单吧?让我们来看看下面的内容。

1. 安装Python包

$ pip install -U -q "langchain==0.0.331rc2" langchain-experimental "openai>=1.1"

2. 执行代码完成与Assistant的交互

import os
os.environ["OPENAI_API_KEY"] = 'your valid OpenAI API key with GPT-4 enabled'

from langchain_experimental.openai_assistant import OpenAIAssistantRunnable

interpreter_assistant = OpenAIAssistantRunnable.create_assistant(
name="langchain assistant",
instructions="You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
tools=[{"type": "code_interpreter"}],
model="gpt-4"
)

output = interpreter_assistant.invoke({"content": "Work out the sum of 1, 2 and 3"})
print(output)

短短数行代码,就完成了一堆curl命令做的事情,是不是很轻松?


今天就先分享这么多吧。有兴趣的同学赶紧玩起来!本次分享的完整代码请参考:

https://github.com/sugarforever/LangChain-Advanced/blob/main/langchain_with_openai_assistants_api.ipynb

文章转自微信公众号@01麻瓜社

#你可能也喜欢这些API文章!