管理助手¶
在本指南中,我们将展示如何创建、配置和管理一个助手。
首先,作为对配置概念的简要回顾,请考虑以下简单的 call_model
节点和配置模式。请注意,此节点尝试读取并使用由 config
对象的 configurable
定义的 model_name
。
class ConfigSchema(TypedDict):
model_name: str
builder = StateGraph(AgentState, config_schema=ConfigSchema)
def call_model(state, config):
messages = state["messages"]
model_name = config.get('configurable', {}).get("model_name", "anthropic")
model = _get_model(model_name)
response = model.invoke(messages)
# We return a list, because this will get added to the existing list
return {"messages": [response]}
import { Annotation } from "@langchain/langgraph";
const ConfigSchema = Annotation.Root({
model_name: Annotation<string>,
system_prompt:
});
const builder = new StateGraph(AgentState, ConfigSchema)
function callModel(state: State, config: RunnableConfig) {
const messages = state.messages;
const modelName = config.configurable?.model_name ?? "anthropic";
const model = _getModel(modelName);
const response = model.invoke(messages);
// We return a list, because this will get added to the existing list
return { messages: [response] };
}
有关配置的更多信息,请参见此处。
创建助手¶
LangGraph SDK¶
要创建助手,请使用 LangGraph SDK 的 create
方法。有关更多信息,请参阅 Python 和 JS SDK 参考文档。
此示例使用与上面相同的配置模式,并创建一个将 model_name
设置为 openai
的助手。
输出
{
"assistant_id": "62e209ca-9154-432a-b9e9-2d75c7a9219b",
"graph_id": "agent",
"name": "Open AI Assistant"
"config": {
"configurable": {
"model_name": "openai"
}
},
"metadata": {}
"created_at": "2024-08-31T03:09:10.230718+00:00",
"updated_at": "2024-08-31T03:09:10.230718+00:00",
}
LangGraph 平台 UI¶
您也可以通过 LangGraph 平台 UI 创建助手。
在您的部署中,选择“助手”选项卡。这将加载您部署中所有图的所有助手的表格。
要创建新助手,请选择“+ 新助手”按钮。这将打开一个表单,您可以在其中指定此助手所属的图,并提供助手的名称、描述以及基于该图的配置模式的所需配置。
要确认,请点击“创建助手”。这将带您进入LangGraph Studio,您可以在其中测试助手。如果您返回部署中的“助手”选项卡,您将在表格中看到新创建的助手。
使用助手¶
LangGraph SDK¶
我们现在已经创建了一个名为“Open AI Assistant”的助手,其 model_name
被定义为 openai
。我们现在可以使用此配置的助手。
thread = await client.threads.create()
input = {"messages": [{"role": "user", "content": "who made you?"}]}
async for event in client.runs.stream(
thread["thread_id"],
# this is where we specify the assistant id to use
openai_assistant["assistant_id"],
input=input,
stream_mode="updates",
):
print(f"Receiving event of type: {event.event}")
print(event.data)
print("\n\n")
const thread = await client.threads.create();
const input = { "messages": [{ "role": "user", "content": "who made you?" }] };
const streamResponse = client.runs.stream(
thread["thread_id"],
// this is where we specify the assistant id to use
openAIAssistant["assistant_id"],
{
input,
streamMode: "updates"
}
);
for await (const event of streamResponse) {
console.log(`Receiving event of type: ${event.event}`);
console.log(event.data);
console.log("\n\n");
}
thread_id=$(curl --request POST \
--url <DEPLOYMENT_URL>/threads \
--header 'Content-Type: application/json' \
--data '{}' | jq -r '.thread_id') && \
curl --request POST \
--url "<DEPLOYMENT_URL>/threads/${thread_id}/runs/stream" \
--header 'Content-Type: application/json' \
--data '{
"assistant_id": <OPENAI_ASSISTANT_ID>,
"input": {
"messages": [
{
"role": "user",
"content": "who made you?"
}
]
},
"stream_mode": [
"updates"
]
}' | \
sed 's/\r$//' | \
awk '
/^event:/ {
if (data_content != "") {
print data_content "\n"
}
sub(/^event: /, "Receiving event of type: ", $0)
printf "%s...\n", $0
data_content = ""
}
/^data:/ {
sub(/^data: /, "", $0)
data_content = $0
}
END {
if (data_content != "") {
print data_content "\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}]}}
LangGraph 平台 UI¶
在您的部署中,选择“助手”选项卡。对于您想要使用的助手,点击“Studio”按钮。这将使用选定的助手打开 LangGraph Studio。当您提交输入时(无论是在图模式还是聊天模式下),都将使用选定的助手及其配置。
为您的助手创建新版本¶
LangGraph SDK¶
要编辑助手,请使用 update
方法。这将根据提供的编辑创建一个新版本的助手。有关更多信息,请参阅 Python 和 JS SDK 参考文档。
注意
您必须传入完整的配置(如果您正在使用元数据,也包括元数据)。更新端点会完全从头创建新版本,不依赖于之前的版本。
例如,要更新助手的系统提示
这将创建一个带有更新参数的新版本助手,并将其设置为您助手的活动版本。如果您现在运行您的图并传入此助手 ID,它将使用此最新版本。
LangGraph 平台 UI¶
您也可以通过 LangGraph 平台 UI 编辑助手。
在您的部署中,选择“助手”选项卡。这将加载您部署中所有图的所有助手的表格。
要编辑现有助手,请选择指定助手的“编辑”按钮。这将打开一个表单,您可以在其中编辑助手的名称、描述和配置。
此外,如果使用 LangGraph Studio,您可以通过“管理助手”按钮编辑助手并创建新版本。
使用之前的助手版本¶
LangGraph SDK¶
您也可以更改助手的活动版本。为此,请使用 setLatest
方法。
在上面的示例中,要回滚到助手的第一个版本
如果您现在运行您的图并传入此助手 ID,它将使用助手的第一个版本。
LangGraph 平台 UI¶
如果使用 LangGraph Studio,要设置助手的活动版本,请点击“管理助手”按钮,找到您想使用的助手。选择助手及其版本,然后点击“活动”切换按钮。这将更新助手,使选定版本变为活动状态。
删除助手
删除助手将删除其所有版本。目前无法删除单个版本,但通过将助手指向正确的版本,您可以跳过任何您不想使用的版本。