3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Agent Development KitのセッションがDBに作成するスキーマを調べてみた

Posted at

個人的チャットアプリで大変な部分ランキング!!!

  1. スレッド管理
  2. LLMコンテキスト管理
  3. 長期記憶の実装

スレッドを作るのは割と大変

チャットアプリで当たり前のように使われる単位、スレッド。
正直大変じゃないですか?

  • DBからどれだけ読み出すのか
  • LLMにどの様に渡すか
  • 忘れられると困る情報は何か

この非機能要件ともいえる会話の継続性について、最適なバランスを見つけることは大変です。
それをマネージしてくれるサービスとして、OpenAIのAssistant APIが有力でしたが、Googleが開発したAgent Development Kitではセルフマネージも可能だったので調べてみました。

ADK(Agent Development Kit)のスレッド管理

呼称はセッションですが、実質的にコンテキストを包括的に管理し終了すると破棄されるスレッドのようなものです。

image.png

セッションはInMemorySessionServiceDatabaseSessionServiceVertexAiSessionServiceから選ぶことができ、GCPでデプロイするならVertexAiSessionServiceを使うことで費用を抑えることができそうです。
Google Agent Engineにデプロイされ、計算時間に応じた従量課金となります。

しかし、DatabaseSessionServiceでセルフマネージすることも可能です。
DB接続情報を与えるだけでスレッド管理ができるようになってしまうのですね。素晴らしいです。

postgreSQLでやってみた

pgadminでER図を出してみました。

Runner(
    app_name="test",
    agent=agent,
    artifact_service=InMemoryArtifactService(),
    session_service=DatabaseSessionService(
        db_url="postgresql://postgres:postgres@db:5432/postgres",
    ),
    memory_service=VertexAiRagMemoryService(),
)

image.png

良い感じですね。ブラックボックス感がないことはいいことです。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?