Skip to main content

人类作为工具 (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_funcinput_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”,意思是“我来了,我看到了,我征服了”。'