在本指南中,我们将展示如何创建、配置和管理助手。
首先,简要回顾一下上下文概念,考虑以下简单的 call_model 节点和上下文架构。
观察此节点尝试读取和使用由 context 对象的 model_name 字段定义的 model_name。
class ContextSchema(TypedDict):
model_name: str
builder = StateGraph(AgentState, context_schema=ContextSchema)
def call_model(state, runtime: Runtime[ContextSchema]):
messages = state["messages"]
model = _get_model(runtime.context.get("model_name", "anthropic"))
response = model.invoke(messages)
# 返回列表,这样可以追加到已有列表
return {"messages": [response]}
有关配置的更多信息,请参阅此处。
创建助手
LangGraph SDK
要创建助手,请使用 LangGraph SDK 的 create 方法。更多细节参阅 Python 与 JS 参考文档。
以下示例沿用上文的上下文架构,创建一个 model_name 为 openai 的助手。
from langgraph_sdk import get_client
client = get_client(url=<DEPLOYMENT_URL>)
openai_assistant = await client.assistants.create(
# "agent" 是我们部署的图名称
"agent", context={"model_name": "openai"}, name="Open AI Assistant"
)
print(openai_assistant)
输出:
{
"assistant_id": "62e209ca-9154-432a-b9e9-2d75c7a9219b",
"graph_id": "agent",
"name": "Open AI Assistant"
"context": {
"model_name": "openai"
}
"metadata": {}
"created_at": "2024-08-31T03:09:10.230718+00:00",
"updated_at": "2024-08-31T03:09:10.230718+00:00",
}
LangSmith UI
也可以在 LangSmith UI 中创建助手。
进入部署后选择 “Assistants” 标签,会看到当前部署(跨全部图)的助手列表。
点击 “+ New assistant” 按钮即可新建助手,并在表单中选择目标图、填写名称/描述以及基于该图配置架构的具体配置。
确认后点击 “Create assistant”,系统会跳转至 Studio 以便测试该助手。返回部署页面的 “Assistants” 标签即可在列表中看到新建条目。
使用助手
LangGraph SDK
我们已经创建了 model_name=openai 的 “Open AI Assistant”,下面示例展示如何使用它:
thread = await client.threads.create()
input = {"messages": [{"role": "user", "content": "who made you?"}]}
async for event in client.runs.stream(
thread["thread_id"],
# 在这里指定要使用的助手 ID
openai_assistant["assistant_id"],
input=input,
stream_mode="updates",
):
print(f"Receiving event of type: {event.event}")
print(event.data)
print("\n\n")
输出:
Receiving event of type: metadata
{'run_id': '1ef6746e-5893-67b1-978a-0f1cd4060e16'}
Receiving event of type: updates
{'agent': {'messages': [{'content': 'I was created by OpenAI, a research organization focused on developing and advancing artificial intelligence technology.', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-e1a6b25c-8416-41f2-9981-f9cfe043f414', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}
LangSmith UI
在部署页面进入 “Assistants” 标签,找到想要使用的助手并点击 Studio。Studio 将自动载入该助手,之后无论在 Graph 还是 Chat 模式输入内容,都会使用该助手及其配置。
为助手创建新版本
LangGraph SDK
若要编辑助手,请使用 update 方法。它会基于提供的修改创建一个全新的助手版本。更多细节参见 Python 与 JS 文档。
注意
调用更新接口时需要传入完整的 context(以及使用到的 metadata)。该接口会从零创建一个全新版本,并不会沿用旧版本内容。
例如更新助手的 system prompt:
openai_assistant_v2 = await client.assistants.update(
openai_assistant["assistant_id"],
context={
"model_name": "openai",
"system_prompt": "You are an unhelpful assistant!",
},
)
上述操作会基于新配置创建一个助手版本,并自动将其设为当前激活版本。之后在运行图并传入该助手 ID 时,就会使用最新版本。
LangSmith UI
同样可以在 LangSmith UI 中编辑助手。
进入部署的 “Assistants” 标签后,会看到全部助手列表。
点击目标助手的 “Edit” 按钮即可修改名称、描述和配置。
此外,在 Studio 中也能通过 “Manage Assistants” 按钮管理助手并创建新版本。
使用旧版本助手
LangGraph SDK
可以通过 setLatest 方法调整助手的激活版本。
例如将上述助手回滚到第一个版本:
await client.assistants.set_latest(openai_assistant['assistant_id'], 1)
之后在运行图时传入该助手 ID,就会使用第一个版本。
LangSmith UI
在 Studio 中,可通过 “Manage Assistants” 按钮设置激活版本。选择目标助手及版本,再切换到 “Active” 即可使其生效。
删除助手
删除助手会同时删除其所有版本。目前无法单独删除某个版本,只能通过切换所用版本来忽略不需要的版本。