2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
リンクをコピー
記事をブックマーク
大嶋勇樹氏:最後に、一番おもしろいモジュールであるAgentsを見ていこうと思います。質問をまあまあもらっていますが、最後までいってから回答できればと思います。最後に、一番おもしろいのがこのAgentsです。
まずAgentsのモチベーションですが、Indexesを使ってVector Storeを検索する以外にも、LLMが必要に応じていろいろなことをしてくれたら夢が広がると思います。
例えば、必要に応じて知らない知識だったらGoogleで検索してくれるとか。例えば「この環境について知りたい」みたいな状況だったら、Bashでコマンドを実行してくれるとか、Pythonのスクリプトを実行してくれるとかしてくれたら、本当に夢が広がるんじゃないかと思います。そこで登場するのがAgentsというものになります。
Agentsを使うとLLMがいろいろなツールを選択して使いながら動作します。実際にはLLMがツールを使うわけじゃないんですが、まるでLLMがツールを使うかのように動きます。例えばBash、Google Search、IFTTT、Python、PythonのRequestsとか、Wikipedia APIなど、いろいろなものを使いながらLLMが課題を解決してくれます。
まずコードを見ようと思いますが、モデル、text-davinci-003を用意して、load_toolsというものでterminalというツールを用意しています。このterminalはいわゆるBash、コマンドを打てるツールですね。これを設定したagent_executorを作り、それをrun(させます)。
その時に「現在のディレクトリにあるファイルの一覧を教えてください」としてrunを実行します。すると、LLMは本来僕の今いるディレクトリにどんなファイルがあるかなんて知らないはずなんですが、このツールを使ってちゃんと答えてくれます。
poetry run python...。これを実行します。
verboseに出力するようになっているので中の動きもちょっと見えるんですが、いろいろやります。(画面を示して)最終結果はこれですね。ちゃんとこのディレクトリにあるものを答えてくれているんですね。
一時期ChatGPTにlsとかそういうコマンドを実行させるようなことがちょっと流行ったというか、「コマンドを実行したらどうなると思いますか?」みたいに妄想させることが流行ったことがあると思うんですが、これは妄想させているわけじゃなくて、ディレクトリにあるものを表示しているんですね。APIの応答としてこれが返ってきています。
なぜLLMがlsコマンドを実行した結果を返せるのかを見ていこうと思います。
このAgentsは「MRKL」や「ReAct」といった仕組みのプロンプトで動いています。MRKLは“ミラクル”と読むらしいですね。中の細かい紹介まではできませんが、こういった仕組みで動いています。
どんな動きか見ていこうと思います。まずはLLMを呼び出します。「Answer the following questions as best you can. You have access to the following tools:」ということで、「下のほうにある質問にできるだけベストな回答をしてね」と(渡します)。
「次に続くツールが使えますよ」ということでツールを紹介しています。これはツールとしてコードで設定したものですね。「『Terminal』という名前で、コマンドを実行できるツールです」という説明が書いてあります。
そして「LLMに求めるフォーマットはこうしてください」ということが書いてあります。例えば「Question:」と来たら「ここに質問があります」と。「Thought:」と来たら「ここにあなたの考え、AIの考えを書いてください」と。ポイントは、「Action:」と書いて「使うツールの名前を書いてください」、「Action Input:」の箇所に、「使うツールの引数を書いてくださいみたい」なことが書いてあるんですね。
そして続きの説明がいろいろあって、最後に「Question: 」。現在のディレクトリにあるファイルの一覧を教えてください。「Thought:」。考えてね。これをAPIに投げます。
すると、LLMは「I need to find a command that will list the files in the current directory」、つまりカレントディレクトリにあるファイルをリストアップするコマンドを見つける必要がある。「Action: Terminal」「Action Input: ls」、こんな応答を返してくるんですね。
LangChainのAgentsはこの応答からActionとAction Inputを抽出して実行します。ソースコードを見ると無理矢理に正規表現で抽出しているんですが、これを抽出してTerminal、lsと来たからBashでlsを実行するんだなとLangChainのAgentsが判断して実行します。
LangChainのAgentsはそれを実行できるので、実行した結果を先ほどまでのプロンプトの下のほうに入れて、またLLMのAPIを叩きます。
すると今度LLMは、「I now know the final answer」「最終的な回答がわかった、ファイナルアンサーはこれだ」という回答をくれるんですね。これに対してLangChainのAgentsは、「Final Answer:」の箇所を抜き出して、こんなふうに表示してくれます。
ということで、Agentsはややこしいことをしているわりにちょっと駆け足で来ちゃいましたが、MRKLやReActといったプロンプトの仕組みを実装したAgentsを使うことで、LLMとの対話にとどまらず、LLMにアクションを起こさせることができたわけですね。このAgentsを応用すると、LLMで実現できることは本当に大きく広がると思います。
ちなみに、LangChainには「Human as a tool」という人間を使うツールも提供されていて、なかなかおもしろいなと。「Human are AGI so they can certainly be……」、人間はAGIなのでAIが困った時に助けてくれますよ、と。AGIは汎用人工知能ですね。人間が人工かはちょっと置いておいて、こんなツールも提供されていてなかなかおもしろいですね。
というところで駆け足ではありますが、ひととおりLangChainの主な概念を紹介したので、最後にちょっとまとめさせていただきます。
今日の勉強会、大変駆け足ではありましたが、LangChainに登場する基本的な概念を整理してきました。LangChainに登場する概念を理解するには、中で行われているプロンプトエンジニアリングがポイントだと思います。プロンプトエンジニアリングの手法自体も、本当にいろいろあると思いますが、調べていくとけっこうおもしろいですね。
LangChain自体は簡単に触ることができます。インストールはpip installだけです。ぜひ触ってみてもらえればと思います。
関連タグ:
プロンプトエンジニアリングから始めるLangChain入門講座 大嶋勇樹氏が教える、OpenAIのモデルとAPIの使い方
AIモデルへの入力を最適化し、意図した出力を得るために 例から学ぶ、プロンプトエンジニアリングの概要
そもそもLangChainは何に使えるのか 3つの基礎的なモジュール「Models」「Prompts」「Chains」から考える活用事例
保存した文章を利用する「Indexes」、過去のやりとりを記憶する「Memory」 LLMにできることを拡張する2つのLangChainモジュール
まるで“LLMがツールを使う”かのように動作する デモから見るLangChainのモジュール「Agents」の使い方
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ