使用Azure OpenAI和LangChain来学习ReAct的概念

首先
本文是AP通信2023年圣诞日历的第十二篇文章。
我们将使用 Azure OpenAI 服务和 LangChain 来学习 ReAct 的概念。因为我们从大规模语言模型的概念解释开始写,所以即使是初学者也可以放心阅读并继续阅读。
如果您对人工智能和大规模语言模型(LLM)感兴趣的话,欢迎一读。
大規模言語模型(LLM)的概述及挑戰
大規模言語模型(LLM)指的是在自然语言处理(NLP)领域使用大量文本数据进行训练的机器学习模型。
LLM 可以做以下的事情。
-
- 自然言語生成
-
- 質問応答
-
- 翻訳
-
- 要約
-
- 文書分類
-
- 要素認識
- 感情分析
特别是问答方面,在ChatGPT的出现下变得非常熟悉了吧。
虽然ChatGPT很有名,但实际上还有其他公司发布了大规模语言模型。

请使用以下的链接查看我提供的论文:
https://arxiv.org/pdf/2104.04473.pdf
如果以最近备受关注的ChatGPT为例进行介绍,可以描述如下。
-
- 2022 年 11 月 30 日リリース
-
- GPT モデルを使って作られたチャットアプリサービス
-
- リリース後 2 ヶ月で1億ユーザ突破
- GPT3/4 モデルの学習データは 2022 年 1 月までのデータしかない
需要注意的是,GPT3/4 模型的训练数据只有截至2022年1月的数据。考虑到要将新的信息和未知信息(如各公司的独特信息)纳入AI并加以利用,我们需要加强语言模型。
提升LLM的方法
就像前面提到的,大型语言模型(LLM)的问题是人工智能只能在其学习范围内提供答案。随着近年来人工智能的需求增加,以下是一些需求的例子。
-
- 2022 年 1 月以降の情報が必要となる回答も正確に返してほしい
-
- 外部には公開していない社内の情報への質問にも正確に返してほしい
- …etc
要实现以上目标,必须加强 LLM。
因此,有两种方法可以提升LLM的能力。
-
- Prompt Engineering:
-
- 通过向 LLM 提供包含附加数据的提示,或者在提示中调用外部工具来添加数据,以提高答案准确度的方法。
以前的信息作为提示来回答问题
在网上搜索来回答问题…等。
Fine-tuning:
通过重新训练 LLM 并调整参数来提高答案准确度的方法。
创建全新的 GPT3.5 或 GPT4…等。
当然,通过Fine-tuning可以提高回答的准确性的可能性增加。
然而,LLM本身是通过投入数亿、数十亿的资金和大量数据创建的,所以要实施Fine-tuning需要巨大的成本和数据量。
在这种情况下,Prompt Engineering 的方法论 ReAct 是一个很好的应用。
ReAct是什么?
ReAct(REasoning and ACTing)是一种使用语言模型(LLM)同时进行推理和行动的新框架。
ReAct的主要目标是通过整合自然语言推理和决策任务,实现更高级的语言理解和知识应用。
(ReAct 的论文在此处)[https://react-lm.github.io/]。
ReAct的操作主要分为以下两个步骤。
-
- 推理(Reasoning):对问题领域进行分析,考虑搜索的方法和内容。
行动(Acting) + 观察(Observation):根据问题领域的分析结果进行具体信息的搜索和收集,
将搜索结果进行总结并制作答案。
如果举一个具体的例子,就会变成以下图片中的感觉。

ReAct的运行过程
-
- 对于来自他人的问题,
-
- 向OpenAI提出问题(在发送到OpenAI的提示中包含使用Bing搜索工具的选项)。
-
- 在仅用OpenAI回答困难的情况下,
-
- 使用Bing搜索进行信息查询。
-
- 将从Bing搜索获得的信息再次发送给OpenAI,以制作答案的摘要。
- 将答案发送给提问者。
只需要一个版本:
从2022年1月开始,通过再次将搜索信息发送给OpenAI,就可以提供答案。
在上述例子中,虽然使用了BingSearch,但还可以使用各种不同的工具。
例如,可以将BingSearch部分更改为公司内部信息,这样就可以创建一个能回答公司内部问题的OpenAI。
我认为可以构建一个高度可扩展、相当方便和有趣的系统。我认为在未来,各个企业将不断推动数字转型,我个人期望在这个过程中会广泛应用ReAct概念。
我們來實際創建一個簡單的應用程式,並驗證其運作!
ReAct 应用程序的操作验证及解释
由于我已经发布了一个有关”Hands-on”的文章,请参考并尝试进行。
-
- 前編
-
- まだ OpenAI 使ったことないの?この記事で全員ハンズオンさせてやんよ!https://zenn.dev/yusu29/articles/azure_openai_handson
後編
OpenAI よ。2022 年 1 月より先の未来を見たくないか?【Azure OpenAI × LangChain ハンズオン】
https://zenn.dev/yusu29/articles/azure_openai__langchain_handson
代码已经部署在此处:
https://github.com/SatakeYusuke19920527/poc-react-app
最后
我认为ReAct是一个非常有趣的概念,并且将在未来的人工智能发展中做出重要贡献。
也许不远的将来,人工智能会将所有工作自动化。
辛苦了。