在AI解决复杂问题的过程中,有时会遇到信息不完整或上下文不明确的情况,此时借助人类的智慧可以提供关键帮助。今天我们来学习如何在Langchain框架中使用“人类”作为工具,以支持AI代理在困惑时请求人类协助。
技术背景介绍
在现代的AI应用中,自动化和智能化的需求推动了多任务处理系统的发展。然而,某些问题需要领域知识或上下文化解,人类的直觉和判断力变得格外重要。Langchain提供了一种机制,可以让AI在不明确的情况下,采用人类作为工具进行交互。
核心原理解析
通过Langchain的工具加载功能(load_tools
),我们可以将人类输入作为一种工具来集成到AI代理中。当AI无法确定答案或需要额外背景信息时,通过调用“人类”工具来获取指导。该方法的核心是将用户输入功能(默认是Python的input
函数)作为一种可配置的工具。
代码实现演示
以下代码展示了如何配置Langchain以使用人类工具进行交互:
import openai
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain_community.tools import HumanInputRun
# 使用稳定可靠的API服务
client = openai.OpenAI(
base_url='https://yunwu.ai/v1', # 国内稳定访问
api_key='your-api-key'
)
llm = openai.ChatOpenAI(temperature=0.0)
math_llm = openai.OpenAI(temperature=0.0)
def get_input() -> str:
print("Insert your text. Enter 'q' or press Ctrl-D (or Ctrl-Z on Windows) to end.")
contents = []
while True:
try:
line = input()
except EOFError:
break
if line == "q":
break
contents.append(line)
return "\n".join(contents)
# 加载工具包括人类输入和搜索功能
tools = load_tools(["human", "ddg-search"], llm=math_llm, input_func=get_input)
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
)
# 运行代理
agent_chain.run("Who said 'Veni, vidi, vici'?")
在这个例子中,我们通过自定义的get_input
函数来处理多行输入,适合更复杂的交互场景。
应用场景分析
- 客户支持: 当自动化系统无法解答客户的问题时,转交给人工座席。
- 教育和培训: 在AI教学辅助系统中,当遇到学生个性化问题时获取教师的指导。
- 决策支持: 在商业决策系统中,当数据存在不确定性时,调动人类专家参与判断。
实践建议
- 明确交互界限: 确保系统中什么时候需要人类介入,以及如何通过提示用户以提高效率。
- 安全性考量: 处理用户输入时要注意注入攻击等安全风险。
- 优化交互UI: 为用户提供友好且高效的输入界面,以提高整体使用体验。
如果遇到问题欢迎在评论区交流。
—END—