OpenAI在2023年11月6号的开发者大会上,发布了面向开发者的 Assistants API
,可以称得上是本厂发布会最大的亮点之一,另OpenAI开发者大为震撼。
此前,为构建基于LLM的应用(如各种Agent),众多AIGC的开发者和初创公司需要花费大量精力研发如何管理会话上下文、复用会话的Prompt。 包括使用 LangChain
的 PromptTemplate
和 Memory
等技术。
这也是构建AIGC应用的几个痛点
在开发者大会上,奥特曼列举的这些痛点,从而引入 Assistants API
。
OpenAI 从基建的维度解决这些问题,提供了相关的能力。 原本AIGC开发者和初创公司投入许多精力研发的功能,现在只需要几行简洁的代码就可以实现。
相当于把这些初创公司革命了。
Assistants API
是一个开发者工具,它允许开发者在自己的应用程序中构建人工智能助手。这些助手根据指令 instructions
运作,并且可以利用模型 models
、工具tools
和知识库knowledge
来回应用户的查询。
当前,Assistants API
支持三种类型的工具:
Code Interpreter
Retrieval
Function calling
OpenAI计划在未来推出更多内置工具,并允许开发者在其平台上提供自己的工具。
为了方便开发者能够快速上手体验 Assistants API
, OpenAI还提供了Assistants playground 。
Assistants API
核心概念下图包含了Assistants API
的核心概念和对象
结合Assistants API
的设计初衷(状态管理、Prompt 和 Content 管理、额外的能力、检索), Assistant 是如何工作的
首先,我们需要创建一个Assistant
client = OpenAI(
organization='org-xxxxx', # 替换为自己的organization id
)
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-3.5-turbo-1106"
)
print(assistant.id)
此处调用 client.beta.assistants.create
创建了一个数学解题助手
参数名 | 描述 |
---|---|
name | "Math Tutor",指定了Assistant的名称。 |
instructions | 定义了Assistant的指令和它的角色。 |
tools | 列出了Assistant可以使用的工具,这里是代码解释器。 |
model | 指定了Assistant使用的OpenAI模型。 |
执行后,会打印出Assistant的id: asst_xxxx
一个线程代表一个对话:
thread = client.beta.threads.create()
print(thread.id)
执行后会打印thread.id: thread_xxx
向Thread中添加一条消息
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?"
)
运行assistants, assistants会读取线程并决定是调用工具(如果启用了)还是简单地使用模型来进行响应。
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
)
print(run.id)
client.beta.threads.runs.create
是异步的
默认情况下, client.beta.threads.runs.create
会进入排队,我们可以通过 client.beta.threads.runs.retrieve
来查看 Run
是否执行完成
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
logger.info(run)
如果 Run
已经执行完成( status='completed'
), 就可以通过 client.beta.threads.messages.list
来获取 Assistant 的响应了:
messages = client.beta.threads.messages.list( thread_id=thread.id )
logger.info(messages)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。