見出し画像

OpenAI と LangChain の認知アーキテクチャ

以下の記事が面白かったので、かんたんにまとめました。

OpenAI's Bet on a Cognitive Architecture


1. 認知アーキテクチャ

認知アーキテクチャ」(cognitive architecture) とは、LLMがどのように情報を処理し、応答を生成するかを理解するための枠組みです。「Flo Crivello」(自律エージェントスタートアップのLindyの創設者)が使用したこの用語を初めて聞き、素晴らしい用語だと思いました。

多くの興味深いLLMアプリは、コンテキストを意識した推論アプリケーションと言えます。これには2つの主要な要素があります。
(1) 「コンテキスト」はどのようにアプリに提供されるか
(2) アプリはどのように「推論」するか
これらのコンポーネントの両方がアプリの「認知アーキテクチャ」を構成します。

「認知アーキテクチャ」には、以下が含まれます。

(1) Code
LLMを利用しないパターン。
(2) LLM Call
アプリの出力のみを決定する単一のLLMコール。
(3) Chain
アプリの出力のみを決定する複数のLLMコール。
(4) Router
LLMをルーターとして使用し、使用するアクション (Tool、Retrieval、Prompt) を選択。
(5) State Machine
LLMを使用してある種のループでステップ間をルーティングするが、コードが許可された遷移先にのみ遷移
(6) Agent
利用可能なステップのシーケンスを決定もLLMが行う。

2. OpenAIの認知アーキテクチャ

「OpenAI」の「Assistant API」「GPTs」はどちらも、上記の「認知アーキテクチャ」の「Agent」の例です。サム・アルトマンも、発表する際にその用語「Agent」を使用しました。「Agent」は、無数の異なるアプリを説明するために使用される過負荷な用語になる可能性がありますが、OpenAIによるこの用語の使用は、LLMのみでステップの移行先を決定するため上記と同じ理解になります。

このようなアプリは「ループ」と考えるとわかりやすいです。ユーザーの入力があると、このループに入ります。そして、LLMが呼び出され、ユーザーへの「応答」か、実行される「アクション」のどちらかが返されます。「応答」が必要と判断された場合、それがユーザーに渡され、そのサイクルは終了します。「アクション」が必要と判断された場合、そのアクションは実行され、観察 (アクション結果) を取得します。そのアクションと対応する観察はプロンプトに追加され、LLMが再び呼び出されます。

GPTs」も高レベルで「ループ」を実行しています。「GPTs」が与えたツール(RetrievalやCode Interpreterなど)を呼び出すと、画面に回転するウィジェットを見ることができます。これはアクションを表しており、「GPTs」は観察を待っています。ツールが必要ない場合は、テキストで応答するだけで、アクションは実行されず、ループは終了します。

Assistant API」も同じです。唯一の違いは、ツールを呼び出すかわりに、どのツールを呼び出すべきか (およびパラメータ) を伝え、クライアント側でツールを呼び出して結果が返されるのを待ちます。

「Agent」は、過去1年半にわたって進化してきました。「AI21 Labs」は1年半前に「MRKL」論文を発表しました。「ReAct」(1年以上前にリリース) は、このタイプのアーキテクチャを可能にする特定のタイプのプロンプト戦略でした。LangChainでは約1年前に「ReAct」を組み込み、より一般的なZero-Shotプロンプト戦略が急速に拡大しました。「AutoGPT」は約9ヶ月前に現場に登場し、同じ「認知アーキテクチャ」を使用していましたが、より多くのツール、より永続的な記憶、より大きなタスクを提供しました。

3. LangChainの認知アーキテクチャ

現在の「Agent」が本格的なアプリで利用するには十分に信頼できないことを考えると、OpenAIが「Agent」にどれほど期待しているかに非常に興味がありました。「OpenAI」は、「Agent」を悩ませる問題が時間とともに解決することに賭けています。

現在の「LangChain」での有用な自律エージェントの多くは「Agent」ではなく、精巧で複雑な「Chain」または「State Machine」に似ています。良い例は、「GPT-Researcher」と「Sweep.dev」です。

GPT-Researcher」の「認知アーキテクチャ」は複雑な「Chain」のようなものです。下図を見ると、一方向に流れていることがわかります。

Sweep.dev」も素晴らしい例です。明確に定義された移行とステップがあります。

「LangChain」では、「LCEL」と呼ばれるチェーンを構成する柔軟な方法があります。

4. おわりに

「LangChain」では、「LLM」が真に変革的なエージェントのようなシステムに電力を供給する世界を信じています。しかし、そこにたどり着くルートは、企業が「認知アーキテクチャ」を制御できるルートであると信じています。



いいなと思ったら応援しよう!