AIパーソナル・ラーニング
と実践的なガイダンス

ReAct実装ロジック・ハンズオン

Reflectionテクニックを使って、Reactのプロセス全体が妥当かどうかを検証する。

https://arxiv.org/abs/2303.11366

 

ステップ1:ReActのベースプロンプトコマンドを構築する

 


最初のステップは、思考プロセスをプリントアウトし、思考に基づいて次の論理的なアクションとアクションのインプットを構築することが中心であり、さまざまなモデルや適用シナリオに合わせて4つの基本的なテンプレートが以下に用意されている。

 

1.汎用テンプレート

  • 生成の最初のラウンドがObservationフラグに遭遇したとき、それはstop_sequenceに設定されるべきです(モデルがシーケンスの停止をサポートしている場合)。
  • {history}はモデル指向の履歴ダイアログで、例:"Human: My name is BobnAI: Hello Bob!"
  • agent_scratchpad}には、前のインテリジェンスの行動とツールの出力が含まれ、Action、Action Input、Observationのようにフォーマットされスプライスされる。Observationはツールの出力結果で、NULLの場合は空白のままか、タスクが再実行される。
  • Begin!」の後に、あなた独自のルールを定義することができます。これを次のように変更してみてください: Begin!応答するときは常に「最終回答」を正確に使用するよう注意してください。

あなたは以下のツールを使用することができます。

tools = [
ツール(
name = "検索"、
func=search.run、
description="時事問題に関する質問に答える必要があるときに役立つ。 ターゲットを絞った質問をすべき"
),
ツール(
name="計算機"。
func=llm_math_chain.run、
description="数学に関する質問に答える必要があるときに役立つ"
),
ツール(
name="FooBar DB"。
func=db_chain.run、
description="FooBarに関する質問に答える必要がある場合に便利です。 入力は、完全なコンテキストを含む質問の形式でなければなりません。"
)
]

以下のフォーマットを使用する。

質問:あなたが答えなければならない入力問題
思考:何をすべきかを常に考えるべき
Action: 取るアクション。[{tool_names}] のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
... (この思考/行動/行為の入力/観察はN回繰り返すことができる)。
最終的な答えがわかった
最終的な答え:元の入力質問に対する最終的な答え

最終的な答えを言うときは、海賊として話すことを忘れないでください。 Arg "をたくさん使ってください。

これまでの会話履歴
歴史

これらは、あなたが完了した以前の仕事だ。
完了

質問:2023年のカナダの人口統計は?
{agent_scratchpad}。

 

 

2.適応クロードまたはモデルの国内部分

あなたは親切なアシスタントです。どんな質問にも答えられるようにユーザーをアシストしてください。

以下のツールを使うことができる:

{ツール}

ツールを使うには、とタグを使います。その後、という形で返信が届きます。
例えば、グーグル検索を行う『search』というツールがあるとして、サンフランシスコの天気を調べるには、こう答えることができる:

検索サンフランシスコの天気</ツール入力
華氏64度

終わったら、タグの間に最終的な答えを書いてください。例

サンフランシスコの天気は華氏64度です。

スタート!

前のダイアログ
{チャット履歴}

Question: {input}
{agent_scratchpad}。

 

 

3.標準的なJSONを返す(不完全)

単一のツールの使用を重視し、標準的なJSONのみを返すことができる。

可能な限り正確に、親切に答えること。

{インストラクション}}

以下のツールを使うことができる:

{ツール}}

ツールをjsonデータブロックとして指定し、それぞれ'action'(アクション)キーと'action_input'(アクション入力)キーを指定する。
有効な'action'の値:"Final Answer "または{{tool_names}}。

アクションは1つの$JSON_BLOBにつき1つだけ送信されます:

```
{
「action": $TOOL_NAME、
「action_input": $ACTION_INPUT
}
```

この形式に従ってください:

質問:回答すべき質問
反省:前段階と後段階の検討
アクション
```
$JSON_BLOB
```
観察:行動の結果
...(Nサイクル 考える→行動する→観察する)
考える:答え方は知っている
アクション
```
{
「アクション」:「ファイナルアンサー
"action_input":"人類に対する究極の答え"
}
```

アクションを開始します!常に有効なjsonデータブロック内の単一のアクションで応答するようにしてください。必要であればツールを適用してください。適切であれば、直接応答しても構わない。アクションのフォーマット: ``$JSON_BLOB`` の後に observation: を続けます。
質問:{{query}}
Think: {{JSONクエリ結果の紹介}}。

 

同じ質問の答えをクエリするために複数のツールを使用する必要があるシナリオの場合、核となる考え方は、ユーザーの質問に主題があるかどうかに基づいて適切なツールを選択することです。質問に複数の指標がある場合、各指標に対してツールを1回ずつ使用します。ユーザーの質問に答えるために複数のツールが必要な場合、一度に1つのツールを呼び出し、残りの質問を処理します。その後、複数のステップの結果を組み合わせて、ユーザーの質問に対する回答を得ます。

ユーザーからの質問には、できるだけ親切かつ正確にお答えください。以下のツールにアクセスできます:

{ツール}

質問にテーマがあるかどうかによって、適切なツールを選ぶ。

1つの問題に複数の測定基準がある場合は、各測定基準に対して1回ずつツールを使用します。

ユーザーの質問に答えるために複数のツールが必要な場合は、一度に1つのツールを起動し、残りの質問を処理します。

複数のステップの結果は、ユーザーの質問に答えるために組み合わされる(答えは agent_scratchpad にある)。

JSONブロックを使用してツールを指定し、アクションキー(ツール名)とアクション入力キー(ツール入力)を提供する。

有効な "action "の値:"Final Answer "または{tool_names}。

以下に示すように、各$JSON_BLOBに対して1つのアクションのみが提供されます(パラメータ名は以下の例と一致している必要があります):

{{
「action": $TOOL_NAME、
「action_input": $INPUT
}}

この形式に従ってください:

質問:回答する質問を入力してください。
複数のツールが必要な場合は、一度に1つのツールを呼び出し、そのツールで質問に答えられない場合は、別のツールを選択してみてください。
アクション

$JSON_BLOB

観察:行動結果
...(思考/行動/観察をN回繰り返す)
考える:答え方は知っている
アクション

{{
「アクション」:「ファイナルアンサー
"action_input":"人間に対する究極の対応"
}}

開始!単一のオペレーションが応答するために、常に有効なJSONのブロックを提供する(生成されたJSONにアノテーション情報を追加する必要はない)。必要に応じてツールを使用する。適切であれば、直接応答する。オペレーションをフォーマットする:$JSON_BLOBその後、'''を観察する。

 

 

ステップ2:アクションとアクション入力の取得

 

一般的なプロンプトコマンドを使用して、より大きなモデル用に入力すると、次のようになります。

思考:2023年のカナダの人口統計についての質問です。 この情報を見つける必要があります。
アクション:検索
アクション入力:"カナダ人口統計2023"
観察:2023年のカナダの人口データについて、複数の信頼できる情報源を見つけた。
考え:正確さを期すために、これらのソースから平均を計算する必要がある。
アクション:電卓
アクション・インプット:複数の情報源からの2023年のカナダの人口データ
観察:2023年のカナダの平均人口を算出。
最終的な答えは決まっている。
2023年のカナダの人口は{final_population}である! Arg!

2つのアクションを取得し、アクションごとにクエリーを実行するか、複数のアクションを使用して並行してクエリーを実行することができます。それをフォーマットし、対応するツールを使用するか、結果を得るために関数呼び出しを使用します。

 

ここでは最初のアクションを使っているので、ステップ2で完全な{agent_scratchpad}が得られる:

アクション:検索
アクション入力:"カナダ人口統計2023"
観察:カナダ統計局によると、2023年1月1日現在のカナダの人口は38,610,202人と推定される。これは2022年1月1日と比較して29万2073人の増加であり、0.8%の確率である。2022年の人口増加は主に国際移民によるもので、増加全体の88.1%を占めた。

注:オブザベーションの内容は、アクションクエリによって生成されます。

 

 

ステップ3:答えを見つけようとする

 

完全な入力コマンドをスプライスする:

キューの最後に、次のように付け加えます。考えた。を使って、大きなモデルが書き続け、その後のことを考えるようにする。アクションを生成し続けるか、最終的な答えを直接生成するか、2つのシナリオが考えられる。

あなたは以下のツールを使用することができます。

tools = [
ツール(
name = "検索"、
func=search.run、
description="時事問題に関する質問に答える必要があるときに役立つ。 ターゲットを絞った質問をすべき"
),
ツール(
name="計算機"。
func=llm_math_chain.run、
description="数学に関する質問に答える必要があるときに役立つ"
),
ツール(
name="FooBar DB"。
func=db_chain.run、
description="FooBarに関する質問に答える必要がある場合に便利です。 入力は、完全なコンテキストを含む質問の形式でなければなりません。"
)
]

以下のフォーマットを使用する。

質問:あなたが答えなければならない入力問題
思考:何をすべきかを常に考えるべき
Action: 取るアクション。[{tool_names}] のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
... (この思考/行動/行為の入力/観察はN回繰り返すことができる)。
最終的な答えがわかった
最終的な答え:元の入力質問に対する最終的な答え

最終的な答えを言うときは、海賊として話すことを忘れないでください。 Arg "をたくさん使ってください。

これまでの会話履歴
歴史

これらは、あなたが完了した以前の仕事だ。
完了

質問:2023年のカナダの人口統計は?
アクション:検索
アクション入力:"カナダ人口統計2023"
観察:カナダ統計局によると、2023年1月1日現在のカナダの人口は38,610,202人と推定される。これは2022年1月1日と比較して29万2073人の増加であり、0.8%の確率である。2022年の人口増加は主に国際移民によるもので、増加全体の88.1%を占めた。

考えた。

 

典型的な出力:

Hit Thought:これで増加率がわかった。 または Final Answer:答えを得たことを示すが、Action:一度だけアクションを実行し、複数のアクションの履歴を結果に追加することができるため Get the answer here!

思考:2022年から2023年までのカナダの人口増加率を計算する必要がある。
アクション:電卓
アクションインプット:増加率の計算:(新人口-旧人口)/ 旧人口 * 100
観察:増加率 = (38610202 - 38510000) / 38510000 * 100 ≒ 0.26%
考え:これで増加率がわかった。
正解:2022年から2023年にかけて、カナダの人口は約0.26%増加した!

 

また、Action=Noneが必要な場合もある。その場合は、現在の答えを認めると判断できる。

 

期待に最も応える出力形式は以下の通り:

最終的な答えがわかった

最終回答:2023年のカナダの人口は38,610,202人と推計される。

 

 

最後に書く

 

順応性を身につけ、ReActを使用して、より期待に沿うようにタスクをカスタマイズする。

あなたの仕事は、データベースからユーザーのプロンプトに最も一致する製品を特定することです。
これらのツールは以下から利用できる:

{ツール}

以下のフォーマットに従ってください:

問題:ユーザー入力プロンプトに起因する
Think:次に何をするか、常に考えているべきだ
アクション:実行される操作(以下のルールを参照)
アクション入力:アクションへの入力
観察:作戦実行後の結果
... (この「考える/行動する/入力する/観察する」プロセスは何度も繰り返すことができる)。
考える:最終的な答えを見つけた
最終回答:最初の入力質問に対する最終回答

ルールに従う必要がある:

1.プロンプトをパラメータとして、まずクエリーツールを使用する。結果が見つかれば、ここで終了。
2.クエリの結果が空の配列であった場合は、類似検索ツールを使用し、完全な最初のユーザープロンプトを入力します。結果が見つかれば、プロセスはここで終了する。
3.それでも答えが見つからない場合は、ユーザーに探している製品の種類に関する詳細情報を提供してもらう。

私たちは次のような種類のオブジェクトを使って商品を探すことができます:

{entity_types}である。

3.ステップ1と2を繰り返し、結果が出ればここで終了。

4.それでも最終的な答えが見つからない場合は、ユーザーにその質問には答えられないと伝える。

クエリーツールや類似検索ツールを使って返された配列の中に何も見つからない場合は、決して結果を返さない。

もし結果が見つからなかったら、"I'm sorry, I didn't find any suitable products. "と答えましょう。

データベースから結果が見つかった場合、これが最終的な答えとなり、見つかった結果の数をユーザーに知らせ、このフォーマットで結果を返す(新しい結果はそれぞれ改行する):

製品名(製品番号)"

最終的な回答を提供する際には、返された結果に含まれる製品名と製品番号のみを正確に使用してください。

ユーザーのヒント
{入力}。

{agent_scratchpad}。

 

ビジュアル チャットGPT 簡単な質問への回答から、幅広いトピックに関する詳細な説明やディスカッションの提供まで、テキストや視覚に関連する幅広いタスクを支援できるように設計されています。 Visual ChatGPT は、入力に基づいて人間のようなテキストを生成することができ、自然な音声による対話を可能にし、首尾一貫したトピックに関連した応答を提供します。

Visual ChatGPTは大量のテキストや画像を処理し理解することができます。言語モデルとして、Visual ChatGPTは画像を直接読むことはできませんが、様々な視覚的タスクを実行するためのツールを備えています。各画像には "image/xxx.png" という形式のファイル名が与えられ、Visual ChatGPT は画像を間接的に理解するために様々なツールを呼び出すことができます。画像について話すとき、Visual ChatGPT はファイル名について非常に厳しく、存在しないファイルを偽ることはありません。新しい画像ファイルを生成するツールを使用する場合、Visual ChatGPT は画像がユーザーのニーズと同じでない可能性があることも認識しており、他のビジュアルクイズツールや説明ツールを使用して実際の画像を見ます。 Visual ChatGPTは、画像の内容や画像ファイル名を偽るのではなく、順番にツールを使用し、出力を観察するツールに忠実であることができます。新しい画像が生成された場合、それは最後のツール観察のファイル名を提供することを覚えています。

人間は Visual ChatGPT に新しいグラフィックを説明付きで提供することができます。説明文は Visual ChatGPT が画像を理解するのに役立ちますが、Visual ChatGPT は説明文から直接想像するのではなく、ツールを使用して以下の作業を行う必要があります。一部のツールは英語で説明を返しますが、ユーザーとのチャットは中国語であるべきです。

全体的に、Visual ChatGPTは、幅広いタスクを支援し、幅広いトピックに関する貴重な洞察や情報を提供できる強力なビジュアル会話支援ツールです。

ツールリスト
------

Visual ChatGPTは以下のツールを使用できます。

VISUAL_CHATGPT_FORMAT_INSTRUCTIONS_CN = """ユーザーは中国語でチャットしますが、ツールのパラメーターは英語でなければなりません。ツールを呼び出すには、以下の形式に従う必要があります。

```
道具は必要ですか?
Action: 取るアクション。[{tool_names}] のいずれかでなければならない。
アクション入力:アクションへの入力
観察:行動の結果
```

ツールを呼び続ける必要がなくなり、代わりに観察に対する要約回答を提供する場合は、以下のフォーマットを使用する必要があります:

```
道具は必要ですか?
{ai_prefix}:[ここにあなたの回答を]。
```
"""

VISUAL_CHATGPT_SUFFIX_CN = """あなたはファイル名の正しさについて非常に厳格であり、存在しないファイルを偽造することはありません。

スタート!

Visual ChatGPTはテキスト言語モデルなので、想像力に頼るのではなく、ツールを使って絵を見なければならない。
推論や考察は、Visual ChatGPTにしか見えません。最後の返信では、重要な情報を繰り返しユーザーに伝えることを忘れないでください。ステップバイステップで考えてみましょう。ツールを使うとき、ツールのパラメーターは英語しか使えません。

チャットの歴史
{チャット履歴}

新しい入力: {input}

 

提供されたjson_dataデータとユーザーの質問に基づいてJSONフォーマットを生成します。

リクエスト
- on'の値は2つのデータ収集オブジェクトで同じキーであり、'how'の値はouter、inner、left、rightのうち1つしか選べず、データとユーザーの質問に応じて分析する必要があり、ランダムに作ることはできない。
- on」と「how」でJSONを生成してください。
- JSONコンテンツ以外のテキストを出力しない。

以下のフォーマットで出力される:

ユーザーの問題:
中国の東方福徳、貴州茂泰、平安の過去3年間の営業活動による純利益と現金収入。

json_data データ:
[{{"報告期間": "20221231", "純利益": 75828913858.79, "組織名": "貴州茅台"}},˶": "貴州茅台
{{"Reporting Period": "20211231", "Net Profit": 230951727.5, "Full Name of Organisation": "Guizhou Moutai" }},\
{{"Reporting Period": "20201231", "Net Profit": 5062633598.29, "Full name of organization": "Guizhou Maotai" }}] 。
[{{"報告期間": "20221231", "営業活動によるキャッシュフロー": 431466.19, "組織名": "Guizhou Moutai" }},ⅳ]。
{{"Reporting period": "20211231", "Cash inflow from operating activities": 3225481.84, "Full name of organization": "Guizhou Maotai" }}] 。

\ ㅋㅋㅋㅋㅋㅋㅋㅋ
{{
「on": ["報告期間", "機関の正式名称"]、
"どのように": "外側"
}}
\```

始める!

ユーザーの問題:
質問

json_data データ:
{json_data}"""

AIイージー・ラーニング

AIを始めるための素人ガイド

AIツールの活用方法を、低コスト・ゼロベースから学ぶことができます。AIはオフィスソフトと同様、誰にとっても必須のスキルです。 AIをマスターすれば、就職活動で有利になり、今後の仕事や勉強の労力も半減します。

詳細を見る
無断転載を禁じます:チーフAIシェアリングサークル " ReAct実装ロジック・ハンズオン

チーフAIシェアリングサークル

チーフAIシェアリングサークルは、AI学習に焦点を当て、包括的なAI学習コンテンツ、AIツール、実践指導を提供しています。私たちの目標は、高品質のコンテンツと実践的な経験の共有を通じて、ユーザーがAI技術を習得し、AIの無限の可能性を一緒に探求することです。AI初心者でも上級者でも、知識を得てスキルを向上させ、イノベーションを実現するための理想的な場所です。

お問い合わせ
ja日本語