【Agent的革命之路——LangGraph】人机交互中的四种决策设计模式

在现在强大的 LLM 应用程序中,最有用的无外乎就是人机交互工作流,它将人工输入集成到自动化流程中,允许在关键阶段做出决策、验证或更正,因为底层模型可能会偶尔产生不准确之处,在合规性、决策或内容生成等低容错场景中,人工参与可通过审查、更正或覆盖模型输出来确保可靠性。
我么的应用程序在什么时候会使用人机交互工作流程呢?

    1. 审查工具调用:人类可以在工具执行之前审查、编辑或批准 LLM 请求的工具调用。
    1. 验证 LLM 输出:人类可以审查、编辑或批准 LLM 生成的内容。
    1. 提供背景信息:使 LLM 能够明确请求人工输入以澄清或其他详细信息或支持多轮对话。

在开始我们正文前,我想给大家讲述在LangGraph里面非常奇妙的一个机制—— interrupt 。
看过之前文章的小伙伴肯定很熟悉,它就是LangGraph 中的中断功能,它通过在 graph 中的特定节点暂停,向人类展示信息,并在获取人类输入后继续执行,从而实现了人机协同工作流。这个功能适用于需要审批、编辑或收集额外输入等任务。中断功能通常与 Command 对象结合使用,以便在人类提供输入值后继续执行图。
举个例子:

from typing import TypedDict
import uuid

from langgraph.checkpoint.memory import MemorySaver
from langgraph.constants import START
from langgraph.graph import StateGraph
from langgraph.types import interrupt, Command

class State(TypedDict):
   messages: str

def human_node(state: State):
   value = interrupt(
      # 任何序列化的值都可以展示出来,比如一个问题,一段文本
      {
   
   
         "text_to_revise": state["messages"]
      }
   )
   return {
   
   
      # 根据人类的输入更新状态,或根据输入决定图的执行路径。
      "messages": value
   }


graph_builder = StateGraph(State)
graph_builder.add_node("human_node", human_node)
graph_builder.add_edge(START, "human_node")

# 要使 interrupt 功能正常工作,必须配置一个检查点(checkpointer)。
checkpointer = MemorySaver()
graph = graph_builder.compile(
   checkpointer=checkpointer
)
# 传递一个线程id运行graph
thread_config = {
   
   "configurable": {
   
   "thread_id": uuid.uuid4()}}

# 使用 stream() 方法直接展示 __interrupt__ 的信息。
for chunk in graph.stream({
   
   "messages":

你可能感兴趣的:(人机交互,设计模式,人工智能,python)