人类作为工具 (Human as a tool)
人类是AGI,因此当AI代理感到困惑时,它们可以被用作工具来帮助。
from langchain.chat_models import ChatOpenAI
from langchain.llms import OpenAI
from langchain.agents import load_tools, initialize_agent
from langchain.agents import AgentType
llm = ChatOpenAI(temperature=0.0)
math_llm = OpenAI(temperature=0.0)
tools = load_tools(
["human", "llm-math"],
llm=math_llm,
)
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
)
在上面的代码中,可以看到该工具直接从命令行接收输入。您可以根据需要自定义prompt_func
和input_func
(如下所示)。
agent_chain.run("What's my friend Eric's surname?")
# Answer with 'Zhu'
> 进入新的AgentExecutor链...
我不知道Eric的姓氏,所以我应该向人类寻求指导。
动作:人类
动作输入:“Eric的姓氏是什么?”
Eric的姓氏是什么?
Zhu
观察:Zhu
思考:我现在知道Eric的姓氏是Zhu。
最终答案:Eric的姓氏是Zhu。
> 完成链.
"Eric的姓氏是Zhu。"
配置输入函数 (Configuring the Input Function)
默认情况下,HumanInputRun
工具使用Python的input
函数从用户获取输入。您可以自定义input_func
为任何您想要的内容。例如,如果您想接受多行输入,可以执行以下操作:
def get_input() -> str:
print("插入您的文本。输入 'q' 或按Ctrl-D(或Windows上的Ctrl-Z)结束。")
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)
# 或者您可以直接实例化该工具
from langchain.tools import HumanInputRun
tool = HumanInputRun(input_func=get_input)
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
)
agent_chain.run("I need help attributing a quote")
> 进入新的AgentExecutor链...
我应该向人类寻求指导
动作:人类
动作输入:“你能帮我归属一句引语吗?”
你能帮我归属一句引语吗?
插入您的文本。输入 'q' 或按Ctrl-D(或Windows上的Ctrl-Z)结束。
vini
vidi
vici
q
观察:vini
vidi
vici
思考:我需要提供关于引语的更多上下文
动作:人类
动作输入:“这句引语是 'Veni, vidi, vici'”
这句引语是 'Veni, vidi, vici'
插入您的文本。输入 'q' 或按Ctrl-D(或Windows上的Ctrl-Z)结束。
oh 谁说的
q
观察:oh 谁说的
思考:我可以使用DuckDuckGo搜索来找出是谁说的这句引语
动作:DuckDuckGo搜索
动作输入:“谁说过 'Veni, vidi, vici'?”
观察:更新于2019年9月6日。据说罗马皇帝尤利乌斯·凯撒(公元前100-公元前44年)在一次引人注目的自夸中说过“Veni, vidi, vici”这句著名的话,这句话给他当时及以后的许多作家留下了深刻的印象。这句话的意思大致是“我来了,我看到了,我征服了”,它的发音大致可以近似为Vehnee,Veedee ... Veni, vidi, vici(古典拉丁语:[weːniː wiːdiː wiːkiː],教会拉丁语:[ˈveni ˈvidi ˈvitʃi];“我来了;我看到了;我征服了”)是一个拉丁短语,用于指代迅速而决定性的胜利。这句话通常被归功于尤利乌斯·凯撒,根据阿皮安的说法,他在公元前47年左右给罗马参议院写信时使用了这句话,此时他已经取得了一次快速的胜利... veni, vidi, vici 来自尤利乌斯·凯撒的拉丁引语 ve· ni, vi· di, vi· ci ˌwā-nē ˌwē-dē ˈwē-kē ˌvā-nē ˌvē-dē ˈvē-chē :我来了,我看到了,我征服了与veni, vidi, vici相关的文章 'In Vino Veritas' and Other Latin... Dictionary Entries Near veni, vidi, vici Venite veni, vidi, vici Venizélos See More Nearby Entries Cite this Entry Style veni, vidi, vici是一个流行的说法的最简单的解释是它来自于尤利乌斯·凯撒,历史上最著名的人物之一,具有简单而强大的含义:我很强大和快速。但不仅仅是这个意义使这个短语如此强大。凯撒是一位有才华的作家,这个短语利用了拉丁语的语法... veni, vidi, vici是最著名且最常引用的拉丁表达之一,可以在几个世纪中数百次找到,用作胜利的表达。据说这些话是凯撒在他享受胜利时使用的。
思考:我现在知道最终答案
最终答案:尤利乌斯·凯撒说过引语“Veni, vidi, vici”,意思是“我来了,我看到了,我征服了”。
> 完成链.
'尤利乌斯·凯撒说过引语“Veni, vidi, vici”,意思是“我来了,我看到了,我征服了”。'