跳到内容

管理助手

在本指南中,我们将展示如何创建、配置和管理一个助手

首先,作为对运行时上下文概念的简要回顾,请看下面这个简单的 call_model 节点和上下文模式。请注意,此节点尝试读取并使用由 Runtime 对象的 context 属性定义的 model_provider

@dataclass
class ContextSchema:
    llm_provider: str = "anthropic"

builder = StateGraph(AgentState, context_schema=ContextSchema)

def call_model(state, runtime: Runtime[ContextSchema]):
    messages = state["messages"]
    model = _get_model(runtime.context.llm_provider)
    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] };
}

:::python 有关运行时上下文的更多信息,请参见此处。::

创建一个助手

LangGraph SDK

要创建助手,请使用 LangGraph SDKcreate 方法。有关更多信息,请参阅 PythonJS SDK 参考文档。

此示例使用与上面相同的配置模式,并创建一个 model_name 设置为 openai 的助手。

from langgraph_sdk import get_client

client = get_client(url=<DEPLOYMENT_URL>)
openai_assistant = await client.assistants.create(
    # "agent" is the name of a graph we deployed
    "agent", config={"configurable": {"model_name": "openai"}}, name="Open AI Assistant"
)

print(openai_assistant)
import { Client } from "@langchain/langgraph-sdk";

const client = new Client({ apiUrl: <DEPLOYMENT_URL> });
const openAIAssistant = await client.assistants.create({
    graphId: 'agent',
    name: "Open AI Assistant",
    config: { "configurable": { "model_name": "openai" } },
});

console.log(openAIAssistant);
curl --request POST \
    --url <DEPLOYMENT_URL>/assistants \
    --header 'Content-Type: application/json' \
    --data '{"graph_id":"agent", "config":{"configurable":{"model_name":"openai"}}, "name": "Open AI Assistant"}'

输出

{
    "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 平台用户界面创建助手。

在您的部署中,选择“Assistants”选项卡。这将加载一个包含您部署中所有助手的表格,涵盖所有图。

要创建新助手,请选择“+ New assistant”按钮。这将打开一个表单,您可以在其中指定此助手所属的图,并提供名称、描述以及基于该图的配置模式为助手设置所需的配置。

要确认,请点击“Create assistant”。这将带您进入 LangGraph Studio,您可以在其中测试助手。如果您返回到部署中的“Assistants”选项卡,您将在表格中看到新创建的助手。

使用一个助手

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

在您的部署中,选择“Assistants”选项卡。对于您想使用的助手,点击“Studio”按钮。这将在 LangGraph Studio 中打开所选的助手。当您提交输入时(在图模式或聊天模式下),将使用所选的助手及其配置。

为您的助手创建一个新版本

LangGraph SDK

要编辑助手,请使用 update 方法。这将根据提供的编辑创建一个新版本的助手。有关更多信息,请参阅 PythonJS SDK 参考文档。

注意

您必须传入完整的配置(如果您正在使用元数据,则也需要传入元数据)。更新端点会从头开始创建新版本,不依赖于以前的版本。

例如,要更新您助手的系统提示

openai_assistant_v2 = await client.assistants.update(
    openai_assistant["assistant_id"],
    config={
        "configurable": {
            "model_name": "openai",
            "system_prompt": "You are an unhelpful assistant!",
        }
    },
)
const openaiAssistantV2 = await client.assistants.update(
    openai_assistant["assistant_id"],
    {
        config: {
            configurable: {
                model_name: 'openai',
                system_prompt: 'You are an unhelpful assistant!',
            },
    },
});
curl --request PATCH \
--url <DEPOLYMENT_URL>/assistants/<ASSISTANT_ID> \
--header 'Content-Type: application/json' \
--data '{
"config": {"model_name": "openai", "system_prompt": "You are an unhelpful assistant!"}
}'

这将创建一个包含更新参数的助手新版本,并将其设置为您助手的活动版本。如果您现在运行您的图并传入此助手 ID,它将使用这个最新版本。

LangGraph 平台用户界面

您也可以从 LangGraph 平台用户界面编辑助手。

在您的部署中,选择“Assistants”选项卡。这将加载一个包含您部署中所有助手的表格,涵盖所有图。

要编辑现有助手,请选择指定助手的“Edit”按钮。这将打开一个表单,您可以在其中编辑助手的名称、描述和配置。

此外,如果使用 LangGraph Studio,您可以通过“Manage Assistants”按钮编辑助手并创建新版本。

使用以前的助手版本

LangGraph SDK

您也可以更改助手的活动版本。为此,请使用 setLatest 方法。

在上面的示例中,要回滚到助手的第一个版本

await client.assistants.set_latest(openai_assistant['assistant_id'], 1)
await client.assistants.setLatest(openaiAssistant['assistant_id'], 1);
curl --request POST \
--url <DEPLOYMENT_URL>/assistants/<ASSISTANT_ID>/latest \
--header 'Content-Type: application/json' \
--data '{
"version": 1
}'

如果您现在运行您的图并传入此助手 ID,它将使用助手的第一个版本。

LangGraph 平台用户界面

如果使用 LangGraph Studio,要设置您助手的活动版本,请单击“Manage Assistants”按钮并找到您要使用的助手。选择助手和版本,然后单击“Active”切换按钮。这将更新助手,使所选版本变为活动状态。

删除助手

删除助手将删除其所有版本。目前无法删除单个版本,但通过将您的助手指向正确的版本,您可以跳过任何您不希望使用的版本。