Prompt中文指南(四)让模型循环思考行动
“ Prompt中文指南,帮助你从0开始学习如何写提示。建议一定要按照提示案例一个一个尝试,你会发现,写好Prompt其实很简单……”
“ 另外我创建了AI交流群,里面会实时分享AI最新有用的信息,群里信息密度和新鲜度非常高,交流氛围也很好,欢迎感兴趣的朋友可以后台回复关键词【微信】,扫码入群。
”
但是GPT的大模型是预训练的,知识库的信息无法及时更新,譬如:GPT-3的模型知识库只更新到2021年9月,那么知识库里没有的事实他就很可能瞎编。
Shunyu Yao[1]提出了一种方法在语言模型中协同推理和行动来解决这个问题,方法叫:ReAct。
01
—
ReAct的逻辑
和自我提问(Self-Ask)方式的差别是:
ReAct让大模型LLM按照以下三步循环,直到给出结果:
【思考1 Thought1】【行动1 Action 1 】【观察1 Observation1】
【思考2 Thought1】【行动1 Action 1 】【观察1 Observation1】
… …
【思考 N Thought N】【行动 N Action N 】【观察N Observation N】
【思考1:是让大模型LLM思考当前情况下用户的问题应该怎么行动才能回答。
【行动1】并不只限于检索信息,是可以调用任何外部工具,类似ChatGPT插件的逻辑(ChatGPT根据插件提供的描述、还有它自己的知识库来决定,什么时候调用什么工具,目前是只能从用户选择的3个插件里选)。
【观察1】行动的结果
【思考2 】结合上一次的行动结果变成当前情况下的思考环境(【行动1】的行动结果【观察1】),根据当前的思考环境,思考用户的问题应该采取什么样的下一步行动才能回答。
整个过程是根据上一步的行动结果逐步推进的,并且可以直观的输出整个思考逻辑的执行过程,增加了ChatGPT决策的透明性,提高了对用户的可信度。
ReAct引入了外部工具的概念,让LLM能够通过这种方式逐步思考并调用外部工具,再根据外部工具的结果进一步思考,完成 思考 - 行动 - 观察 - 思考 的循环,直到找出答案。
02
—
ReAct与Self-Ask的区别
自我提问(Self-Ask)只在打样(few-shot)的时候提出了一个思考:
是否需要拆分出子问题?
这个思考按照ReAct的逻辑,可以理解为Self-Ask只提出了【思考1】,其他的交给大模型LLM自己去处理了。
03
—
看案例
Prompt(Model: GPT-4) |
按照以下的思考方式,回答我的问题。 我的问题是:Pavel Urysohn 和 Leonid Levin 是否因同一类型的作品而闻名? 思考方式: 问题:尼古拉斯·雷和埃利亚·卡赞有什么共同的职业? 思路1:我需要搜索尼古拉斯·雷和埃利亚·卡赞,找出他们的职业,然后找到他们共同的职业。 行动1:搜索【尼古拉斯·雷】。 观察1:尼古拉斯·雷(原名雷蒙德·尼古拉斯·金兹尔,1911年8月7日-1979年6月16日)是美国电影导演、编剧和演员,以1955年的电影《无因的叛逆》而闻名。 思路2:尼古拉斯·雷的职业是导演、编剧和演员。接下来我需要搜索埃利亚·卡赞,找到他的职业。 行动2:搜索【埃利亚·卡赞】。 观察2:埃利亚·卡赞是美国电影和戏剧导演、制片人、编剧和演员。 思路3:埃利亚·卡赞的职业是导演、制片人、编剧和演员。所以尼古拉斯·雷和埃利亚·卡赞共同的职业是导演、编剧和演员。 行动3:完成【导演、编剧、演员】。 |
Completion |
03
—
看论文图
参考文献:
[1]ReAct: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
Shunyu Yao∗*,1, Jeffrey Zhao2 , Dian Yu2 , Nan Du2 , Izhak Shafran2 , Karthik Narasimhan1 , Yuan Cao2
https://arxiv.org/pdf/2210.03629.pdf