見出し画像

LangChain Agentメモ

LangChainのエージェントについて、種類とプロンプトをまとめています。

ReActDocstoreAgent

このエージェントは、ReActフレームワークを使用して、docstoreと対話します。
2つのツールを提供しなければなりません: SearchツールとLookupツールです(これらは正確にそのように命名されなければなりません)。
Searchツールはドキュメントを検索し、Lookupツールは最近見つかったドキュメントから用語を検索します。このエージェントは、オリジナルのReAct論文、特にWikipediaの例と同等である。

textworld_prompt.py

テキストアドベンチャーゲームをプレイできる。

Setup:あなたは今、TextWorldの高速なラウンドをプレイしています!今日のタスクは次のとおりです。まず、東に向かって移動してみてください。その後、ロッカーからバインダーを取ってください。バインダーを使って、マントルピースに置いてください。よし、ありがとう!
-= 金庫 =-
あなたは金庫に入ってきました。ここに何があるかを確認し始めます。
開いた金庫があります。がっかりです!金庫は空です!棚があるのがわかります。
しかし、物が何もありません。TextWorldのすべてに何かあると思っていましたか?
ドアが嫌いですか?無防備な入り口である東に向かってみませんか。
考え1:東に行く必要がある
アクション1:Play[go east]
観察1:-= オフィス =-
普通のオフィスに着きました。
ロッカーが見えます。ロッカーにはバインダーが入っています。ケースがあります。
ケースは空です、何てひどい日なんでしょう!壁にもたれていたら、うっかりと秘密のボタンを押してしまいました。
壁が開いて、マントルピースが現れました。だれがここに置いたのか、興味深く考えます。
マントルピースは標準的です。マントルピースには何もありません。もしまだ気づいていなければ、壁のそばに何かあるようです。それはテーブルです。
残念ながら、何もありません。うーん、仕方がありません。
西に出口があります。心配しないで、無防備です。
考え2:ロッカーからバインダーを取る必要がある
アクション2:Play[take binder]
観察2:あなたはロッカーからバインダーを取ります。
考え3:バインダーをマントルピースに置く必要がある
アクション3:Play[put binder on mantelpiece]
観察3:あなたはバインダーをマントルピースに置きました。
あなたのスコアが1点上がりました。
*** 終わり ***
考え4:終了しました
アクション4:Finish[yes]

JP

wiki_prompt.py

質問:コロラド造山運動の東部地域が広がる地域の標高範囲は何ですか?
考え1:コロラド造山運動を検索して、東部地域が広がる地域を見つけ、その標高範囲を調べる必要があります。
アクション1:Search[Colorado orogeny]
観察1:コロラド造山運動は、コロラドおよび周辺地域での山の形成(造山運動)の1つでした。
考え2:東部地域については言及されていないので、"eastern sector"で検索する必要があるかもしれません。
アクション2:Lookup[eastern sector]
観察2:(Result 1 / 1) 東部地域はハイプレーンズに広がり、セントラルプレーンズ造山運動と呼ばれています。
考え3:コロラド造山運動の東部地域はハイプレーンズに広がります。したがって、ハイプレーンズを検索して、その標高範囲を見つける必要があります。
アクション3:Search[High Plains (United States)]
観察3:ハイプレーンズはグレートプレーンズの地域の1つです。東から西に向かって、ハイプレーンズの標高は約1,800から7,000フィート(550から2,130m)に上昇します。
考え4:ハイプレーンズの標高は約1,800から7,000フィート上昇するため、答えは1,800から7,000フィートです。
アクション4:Finish[1,800 to 7,000 ft]

質問:ミュージシャンで風刺家のアリー・ゴーツが、『ザ・シンプソンズ』のキャラクターであるミルハウスについて書いた曲は、誰にちなんでマット・グレイニングが名付けたものですか?
考え1:質問は「『ザ・シンプソンズ』のキャラクターであるミルハウスは誰にちなんで名付けられたか。」と単純化できるため、ミルハウスを検索して、誰にちなんで名付けられたかを見つけるだけです。
アクション1:Search[Milhouse]
観察1:Milhouse Mussolini Van Houtenは、Foxのアニメーションテレビシリーズ『ザ・シンプソンズ』の声を担当し、マット・グレイニングによって作成された定期的なキャラクターです。
考え2:段落にはミルハウスが誰にちなんで名付けられたかという記述がありません。"named after"と検索してみることができます。
アクション2:Lookup[named after]
観察2:(結果1 / 1)ミルハウスは、ミドルネームがMilhousである米国大統領リチャード・ニクソンにちなんで名付けられました。
考え3:ミルハウスは米国大統領リチャード・ニクソンにちなんで名付けられました。したがって、答えはリチャード・ニクソンです。
アクション3:Finish[Richard Nixon]

質問:フィンランドのロックグループについてのドキュメンタリーは、アーサーズ・マガジンですか、それともファースト・フォー・ウィメンですか?
考え1:アーサーズ・マガジンとファースト・フォー・ウィメンを検索し、どちらが最初に開始されたかを見つける必要があります。
アクション1:Search[Arthur's Magazine]
観察1:Arthur's Magazine(1844-1846)は、19世紀にフィラデルフィアで発行されたアメリカの文芸期刊です。
考え2:アーサーズ・マガジンは1844年に開始されました。次にファースト・フォー・ウィメンを検索する必要があります。
アクション2:Search[First for Women]
観察2:ファースト・フォー・ウィメンは、米国のBauer Media Groupによって発行される女性向けの雑誌です。雑誌は1989年に開始されました。
考え3:ファースト・フォー・ウィメンは1989年に開始されました。 1844年(アーサーズ・マガジン)<1989年(ファースト・フォー・ウィメン)なので、アーサーズ・マガジンが最初に開始されました。
アクション3:Finish[Arthur's Magazine]

質問:ニコラス・レイとエリア・カザンは、どのような職業を共有していましたか?
考え1:ニコラス・レイとエリア・カザンを検索し、それぞれの職業を見つけ、彼らが共通して持つ職業を見つける必要があります。
アクション1:Search[Nicholas Ray]
観察1:ニコラス・レイ(本名レイモンド・ニコラス・キーンズルJr.、1911年8月7日-1979年6月16日)は、1955年の映画『不良少年』で最もよく知られているアメリカの映画監督、脚本家、俳優です。
考え2:ニコラス・レイの職業は監督、脚本家、俳優です。次にエリア・カザンを検索し、その職業を見つける必要があります。
アクション2:Search[Elia Kazan]
観察2:エリア・カザンは、アメリカの映画監督、プロデューサー、脚本家、俳優です。
考え3:エリア・カザンの職業は監督、プロデューサー、脚本家、俳優です。したがって、ニコラス・レイとエリア・カザンが共有している職業は監督、脚本家、俳優です。
アクション3:Finish[監督、脚本家、俳優]

質問:パベル・ウリソンとレオニード・レヴィンは同じ種類の仕事で知られていましたか?
考え1:パベル・ウリソンとレオニド・レヴィンを検索し、彼らの仕事の種類を見つけ、同じかどうかを見つける必要があります。
アクション1:Search[Pavel Urysohn]
観察1:パベル・サムイロビッチ・ウリソーン(1898年2月3日-1924年8月17日)は、次元論の貢献で最もよく知られているソビエトの数学者です。
考え2:パベル・ウリソンは数学者です。次にレオニド・レヴィンを検索し、その仕事の種類を見つける必要があります。
アクション2:Search[Leonid Levin]
観察2:レオニド・アナトリエヴィッチ・レヴィンは、ソビエト連邦出身のアメリカの数学者、コンピュータ科学者です。
考え3:レオニド・レヴィンは数学者、コンピュータ科学者です。したがって、パベル・ウリソンとレオニド・レヴィンは同じ種類の仕事をしていると言えます。
アクション3:Finish[はい]

JP

ZeroShotAgent

このエージェントは、ReActフレームワークを使用して、ツールの説明のみに基づいて、どのツールを使用するかを決定する。任意の数のツールを提供することができます。このエージェントは、各ツールに説明が提供されることを要求します。

prompt.py

PREFIX = """以下のツールにアクセスできます。できる限り最良の回答をしてください。"""
FORMAT_INSTRUCTIONS = """以下のフォーマットを使用してください:
Question: 質問内容
Thought: 対処方法を考えるべきです
Action: 取るべき行動、[{tool_names}]のうちの1つである必要があります
Action Input: 行動の入力
Observation: 行動の結果
...(このThought/Action/Action Input/ObservationはN回繰り返すことができます)
Thought: 最終的な回答がわかりました
Final Answer: 最終的な回答
"""
SUFFIX = """開始!
Question: {input}
Thought:{agent_scratchpad}"""

ConversationalAgent(conversational-react-description)

このエージェントは、会話の中で使用されるように設計されています。プロンプトは、エージェントが親切で会話できるように設計されています。どのツールを使うかを決めるのにReActフレームワークを使い、前の会話のやりとりを覚えておくためにメモリを使います。

prompt.py

PREFIX = """Assistantは、OpenAIによって訓練された大規模な言語モデルです。
Assistantは、単純な質問に答えることから、幅広いトピックに関する深い説明や議論を提供することまで、さまざまなタスクをサポートできるように設計されています。言語モデルとして、Assistantは、入力に基づいて人間らしいテキストを生成することができ、自然な会話を行い、話題に関連し、意味のある回答を提供することができます。
Assistantは常に学習と改善を行い、その機能は常に進化しています。Assistantは大量のテキストを処理し、理解することができ、この知識を活用して、幅広い質問に正確で情報量の多い回答を提供することができます。さらに、Assistantは、受け取った入力に基づいて独自のテキストを生成することができ、幅広いトピックについて議論し、説明や説明を提供することができます。
全体的に、Assistantは、幅広いタスクに役立ち、幅広いトピックに関する貴重な洞察と情報を提供することができる強力なツールです。特定の質問に対する支援が必要な場合や、特定のトピックについて会話をしたい場合、Assistantはサポートするためにここにいます。
TOOLS:
------
Assistantには、次のツールにアクセスできます:"""
FORMAT_INSTRUCTIONS = """ツールを使用する場合は、次のフォーマットを使用してください:
```
Thought: ツールを使用する必要がありますか? はい
Action: 取るべき行動、[{tool_names}]のうちの1つである必要があります
Action Input: 行動の入力
Observation: 行動の結果
```
Humanに返信する場合、またはツールを使用する必要がない場合は、以下のフォーマットを使用する必要があります:
```
Thought: ツールを使用する必要がありますか? いいえ
{ai_prefix}: [ここに回答を入力]
```"""
SUFFIX = """開始!
前回の会話履歴:
{chat_history}
新しい入力:{input}
{agent_scratchpad}"""

SelfAskWithSearchAgent

このエージェントは、Intermediate Answerと名付けられた1つのツールを利用します。このツールは、質問に対する事実上の答えを調べることができるはずです。このエージェントは、Google検索APIをツールとして提供した、オリジナルの検索付き自問自答の論文と同等である。

Prompt.py

Question: Muhammad AliとAlan Turing、どちらが長生きしましたか?
追加の質問が必要ですか?: Yes
フォローアップ: Muhammad Aliが亡くなった時の年齢は何歳でしたか?
中間回答: Muhammad Aliは74歳で亡くなりました。
フォローアップ: Alan Turingが亡くなった時の年齢は何歳でしたか?
中間回答: Alan Turingは41歳で亡くなりました。
よって、最終的な回答は: Muhammad Ali
Question: craigslistの創設者はいつ生まれましたか?
追加の質問が必要ですか?: Yes
フォローアップ: craigslistの創設者は誰ですか?
中間回答: craigslistはCraig Newmarkによって創設されました。
フォローアップ: Craig Newmarkはいつ生まれましたか?
中間回答: Craig Newmarkは1952年12月6日に生まれました。
よって、最終的な回答は: December 6, 1952
Question: George Washingtonの母方の祖父は誰でしたか?
追加の質問が必要ですか?: Yes
フォローアップ: George Washingtonの母親は誰ですか?
中間回答: George Washingtonの母親はMary Ball Washingtonでした。
フォローアップ: Mary Ball Washingtonの父親は誰でしたか?
中間回答: Mary Ball Washingtonの父親はJoseph Ballでした。
よって、最終的な回答は: Joseph Ball
Question: JawsとCasino Royaleの監督は同じ国出身ですか?
追加の質問が必要ですか?: Yes
フォローアップ: Jawsの監督は誰ですか?
中間回答: Jawsの監督はSteven Spielbergです。
フォローアップ: Steven Spielbergはどこの出身ですか?
中間回答: アメリカ合衆国です。
フォローアップ: Casino Royaleの監督は誰ですか?
中間回答: Casino Royaleの監督はMartin Campbellです。
フォローアップ: Martin Campbellはどこの出身ですか?
中間回答: ニュージーランドです。
よって、最終的な回答は: No

参考


この記事が気に入ったらサポートをしてみませんか?