构建LangChain应用程序的示例代码:32、如何为任何工具添加人工验证教程

本演示展示了如何为任何工具添加人工验证。我们将使用HumanApprovalCallbackHandler来实现这一功能。

假设我们需要使用ShellTool。将此工具添加到自动化流程中存在明显的风险。让我们看看如何强制人工手动批准输入到此工具的输入。

注意:我们通常建议不要使用ShellTool。它有很多滥用的方式,并且大多数用例并不需要它。我们在这里仅出于演示目的使用它。

from langchain.callbacks import HumanApprovalCallbackHandler
from langchain.tools import ShellTool

# 创建ShellTool实例
tool = ShellTool()

# 运行一个简单的命令,输出“Hello World!”
print(tool.run("echo Hello World!"))

添加人工批准

将默认的HumanApprovalCallbackHandler添加到工具中,将使得用户必须在命令实际执行之前手动批准每一个输入。

tool = ShellTool(callbacks=[HumanApprovalCallbackHandler()])

# 尝试运行一个命令,列出/usr目录下的内容
print(tool.run("ls /usr"))

# 尝试运行一个命令,列出/private目录下的内容
print(tool.run("ls /private"))

配置人工批准

假设我们有一个代理,它接受多个工具,我们希望它只在特定工具和特定输入上触发人工批准请求。我们可以配置回调处理器来实现这一点。

from langchain.agents import AgentType, initialize_agent, load_tools
from langchain_openai import OpenAI

# 定义一个函数,用于决定是否需要人工检查
def _should_check(serialized_obj: dict) -> bool:
    return serialized_obj.get("name") == "terminal"

# 定义一个函数,用于人工批准输入
def _approve(_input: str) -> bool:
    if _input == "echo 'Hello World'":
        return True
    msg = (
        "Do you approve of the following input? "
        "Anything except 'Y'/'Yes' (case-insensitive) will be treated as a no."
    )
    msg += "\n\n" + _input + "\n"
    resp = input(msg)
    return resp.lower() in ("yes", "y")

# 创建回调列表,包含人工批准回调处理器
callbacks = [HumanApprovalCallbackHandler(should_check=_should_check, approve=_approve)]

# 创建OpenAI实例,设置温度为0,表示输出的确定性最高
llm = OpenAI(temperature=0)

# 加载工具列表
tools = load_tools(["wikipedia", "llm-math", "terminal"], llm=llm)

# 初始化代理,使用ZERO_SHOT_REACT_DESCRIPTION类型的代理
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)

# 运行代理,执行查询操作,并使用回调
agent.run(
    "It's 2023 now. How many years ago did Konrad Adenauer become Chancellor of Germany.",
    callbacks=callbacks,
)

# 运行代理,执行终端打印操作,并使用回调
agent.run("print 'Hello World' in the terminal", callbacks=callbacks)

# 运行代理,执行列出/private目录下所有目录的操作,并使用回调
agent.run("list all directories in /private", callbacks=callbacks)

总结

本文介绍了如何在自动化工具中添加人工验证流程,以确保操作的安全性和准确性。通过使用HumanApprovalCallbackHandler,可以对特定工具或输入进行人工审批,从而避免潜在的风险。文中还展示了如何配置回调处理器,以实现对特定条件的灵活控制。

扩展知识点

  • ShellTool: 一个可以执行shell命令的工具,但使用时需要谨慎,因为它可能被滥用。
  • HumanApprovalCallbackHandler: 一个回调处理器,用于在执行操作前要求人工批准。
  • AgentType.ZERO_SHOT_REACT_DESCRIPTION: 一种代理类型,可以即时响应描述性的任务,无需事先的训练或配置。
  • OpenAI: 一个提供人工智能服务的接口,可以用于生成文本、解决问题等。
  • langchain: 一个用于构建和使用AI工具链的Python库,支持多种工具和代理的集成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo_Hoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值