在智能对话系统的世界里,我们常常追求完全自动化的解决方案。但现实情况是,有些时候机器并不能完美地理解人类的需求,这就需要人工干预来弥补机器的不足。LangGraph通过引入“人工干预”机制,让智能对话系统在自动化的同时,也能灵活地融入人工的智慧。今天,我们就来聊聊这个有趣的话题。
人工干预可以让智能系统在执行任务时,根据用户的反馈进行调整,从而更好地满足用户的需求。这种人机协作的方式,既利用了机器的高效性,又弥补了机器可能存在的不足。
LangGraph的人工干预机制
LangGraph通过一个特殊的工具interrupt来实现人工干预。可以在智能系统执行任务的过程中,暂停任务的执行,等待用户的输入。用户可以根据自己的需求,对任务的参数进行修改,或者直接接受系统的建议。
1.一个简单的例子:预订酒店
假设你正在开发一个智能酒店预订系统,你希望在用户预订酒店时,能够让他们手动修改酒店的名称。
你可以使用LangGraph的interrupt工具来实现这个功能。
# -*- coding: utf-8 -*-
from langgraph.prebuilt import create_react_agent
from langchain_community.chat_models.tongyi import ChatTongyi
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.types import interrupt
from langgraph.prebuilt import create_react_agent
#模型初始化
llm = ChatTongyi(
model="qwen-turbo",#qwen-max-latest qwen-plus
temperature=0,
verbose=True,
)
#定义一个工具函数,有interrupt 封装一个工具支持人工参与的循环审查
def book_hotel(hotel_name: str):
"""预订酒店"""
response = interrupt(
f"尝试调用book_hotel酒店的名称{
{'hotel_name': {
hotel_name}}}. "
"请编辑后点击确认."
)
if response["type"] == "accept":
pass
elif response["type"] == "edit":
hotel_name = response["args"]["hotel_name"]
else:
raise ValueError(f"Unknown response type: {
response['type']}")
return f"成功的预订到酒店,名称为 {
hotel_name}."
checkpointer = InMemorySaver()
agent = create_react_agent