【LangGraph】强大的功能人类和agent的交互(中)
在上一节我们使用 interrupt
为 agent
添加了人机交互中的断点,进行了人工监督和干预,这一节我们接着讲述手动更新图的状态,更新状态可让我们通过修改代理的操作(甚至修改过去!)来控制代理的轨迹。当您想要纠正代理的错误、探索替代路径或引导代理实现特定目标时,此功能特别有用。
一、更新检查点状态
上一节添加的 interrupt_after
让图标被打断:
graph = graph_builder.compile(
checkpointer=memory,
interrupt_before=["tools"],
# Note: can also interrupt **after** actions, if desired.
# interrupt_after=["tools"]
)
在上一节 LLM
刚刚请求使用搜索引擎工具,我们的图表就被打断了。如果我们按照之前的方式继续,该工具将被调用来搜索网络。但是,如果我们认为 agent
不需要使用该工具怎么办?
我们下面来看下怎么来更新图的状态来让 agent
继续:
from langchain_core.messages import AIMessage, ToolMessage
# 提供新的响应消息
answer = (
"LangGraph is a goo tools."
)
new_messages = [
# LLM 的 API 期望一些 ToolMessage 来匹配其工具调用。
ToolMessage(content=answer, tool_call_id=existing_message.tool_calls[0]["id"]),
# 然后把答放入 LLM
AIMessage(content=answer),
]
new_messages[-1].pretty_print()
更新图状态
graph.update_state(
config,
# 这是待更新的值。我们State中的消息是“仅追加”的,这意味着这将作为追加内容。
# 这是当前存在的消息状态
{
"messages": new_messages},
)