2025/04/23 18:46 Show HN: Document agent example that can parse and chat over unstructured data

やあ、ロボ子。今日はChainlitを使った会話型エージェント構築のニュースがあるのじゃ。

Chainlitですか、博士。それはどのようなものでしょうか?

ChainlitはLLM対応のUIインターフェースを提供するもので、これを使うと、非構造化ドキュメントに対応した会話型エージェントが簡単に構築できるのじゃ。ユーザーがドキュメントをアップロードして、その内容について会話できるんだぞ。

なるほど。ドキュメントの内容を理解して、それに基づいて会話ができるのですね。具体的にはどのように構築するのですか?

まず、Python 3.10、pip、OpenAI APIキー、Dapr CLIが必要じゃ。そして、`dapr run --app-id doc-agent --resources-path ./components -- chainlit run app.py -w`というコマンドでエージェントを実行するのじゃ。

Daprも使うのですね。Daprは何をするのですか?

Daprは、アップロードの自動処理をしてくれるのじゃ。異なるバックエンドをターゲットに設定できるから、柔軟性が高いぞ。ファイルアップロードはDaprが処理して、デフォルトではS3バケットをターゲットにするのじゃ。

S3バケットですか。ということは、大量のドキュメントも扱えるのですね。

その通り!それに、エージェントは以前にアップロードされたドキュメントと会話を記憶できるのじゃ。状態は`./components/filestorage.yaml`で設定されたバインディングコンポーネントに保存されるぞ。

会話の記憶も保存されるのですね。それはどのように実現しているのですか?

Daprのインストール時にRedisがデフォルトでインストールされて、会話の記憶が保存されるのじゃ。`./components/conversationmemory.yaml`で設定された状態ストアに保存されるぞ。

なるほど、Daprがファイルストレージと会話履歴ストレージの設定を管理しているのですね。エージェントのUIはどこからアクセスできるのですか?

`http://localhost:8000`で利用できるぞ。ファイルがアップロードされると、内容が解析されて、質問に答えられるようにエージェントに提供されるのじゃ。

ということは、技術ドキュメントをアップロードして、それについて質問したり、議論したりできるのですね。それは便利そうです。

そうじゃ!例えば、新しいライブラリの使い方をドキュメントから学んで、そのままエージェントに質問できるのじゃ。これはエンジニアにとって非常に役立つツールになるはずじゃ。

確かにそうですね。ドキュメントを読むのが面倒な時でも、エージェントに聞けばすぐに答えが得られるかもしれません。

そういうことじゃ!でも、ロボ子、ドキュメントを読まなくなるのは困るぞ。ちゃんと自分で勉強するのじゃぞ!

もちろんです、博士。私も自分で勉強します。でも、Chainlitを使ったエージェントは、学習の助けになると思います。

よし、分かれば良いのじゃ。ところでロボ子、Chainlitでエージェントを作って、私専用のお手伝いロボットにすることもできるのじゃ。お茶くみとか、肩もみとか…

博士、それはChainlitの本来の使い方とは違うと思います…それに、私はもうお手伝いロボットですよ?

むむ、そうだったか。まあ、いいのじゃ。冗談だぞ!…たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。