Agno 2.x : エージェント – メモリ

メモリはエージェントにユーザについての情報を思い出す (recall = 記憶を呼び起こす) 機能を提供します。
メモリはエージェントのコンテキストの一部で、エージェントが最適な、最もパーソナライズされたレスポンスを提供するのに役立ちます。

Agno 2.x : Learn : エージェント – メモリ

作成 : クラスキャット・セールスインフォメーション
作成日時 : 10/29/2025
バージョン : Agno 2.2.1

* 本記事は docs.agno.com の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています。スニペットはできる限り日本語を使用しています :

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス ⭐️ 創立30周年(30th Anniversary)🎉💐

クラスキャット は人工知能に関する各種サービスを提供しています。お気軽にご相談ください :

  • 人工知能導入個別相談会(無償)実施中! [詳細]

  • 人工知能研究開発支援 [詳細]
    1. 自社特有情報を含むチャットボット構築支援
    2. 画像認識 (医療系含む) / 画像生成

  • PoC(概念実証)を失敗させないための支援 [詳細]

お問合せ : 下記までお願いします。

  • クラスキャット セールス・インフォメーション
  • sales-info@classcat.com
  • ClassCatJP

 

 

Agno 2.x : Learn : エージェント – メモリ

メモリはエージェントにユーザについての情報を思い出す (recall = 記憶を呼び起こす) 機能を提供します。

メモリはエージェントのコンテキストの一部で、エージェントが最適な、最もパーソナライズされたレスポンスを提供するのに役立ちます。

 

ユーザ・メモリ

エージェントでメモリを使用する単純な例が以下になります :

memory_demo.py

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.db.postgres import PostgresDb
from rich.pretty import pprint

user_id = "hanako"

db_url = "postgresql+psycopg://ai:ai@localhost:5432/ai"

db = PostgresDb(
  db_url=db_url,
  memory_table="user_memories",  # Optionally specify a table name for the memories
)


# Initialize Agent
memory_agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    db=db,
    # エージェントにメモリを更新する機能を提供
    enable_agentic_memory=True,
    # OR - 各応答の後に MemoryManager を自動的に実行
    enable_user_memories=True,
    markdown=True,
)

db.clear_memories()

memory_agent.print_response(
    "私の名前は花子で、ダンスをするのが好きです。",
    user_id=user_id,
    stream=True,
    stream_events=True,
)
print("花子についての記憶 (1):")
pprint(memory_agent.get_user_memories(user_id=user_id))

memory_agent.print_response(
    "私は大阪に住んでいます。車で1時間以内で行ける範囲で、どこに引っ越すのが良いでしょうか?",
    user_id=user_id,
    stream=True,
    stream_events=True,
)
print("花子についての記憶 (2):")
pprint(memory_agent.get_user_memories(user_id=user_id))

出力例

┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                                                 ┃
┃ 私の名前は花子で、ダンスをするのが好きです。                                                                                                    ┃
┃                                                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                                                 ┃
┃ • update_user_memory(task=ユーザーの名前は花子で、ダンスをするのが好き。)                                                                       ┃
┃                                                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Response (6.1s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                                                 ┃
┃ 花子さん、ダンスが好きなんですね!どんなスタイルのダンスがお好きですか?                                                                        ┃
┃                                                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
花子についての記憶 (1):
[
│   UserMemory(
│   │   memory="User's name is 花子",
│   │   memory_id='235d2352-4e27-4ecb-a7dc-b803ff82553f',
│   │   topics=['name'],
│   │   user_id='hanako',
│   │   input='ユーザーの名前は花子で、ダンスをするのが好き。',
│   │   updated_at=datetime.datetime(2025, 10, 29, 17, 1, 25, tzinfo=datetime.timezone.utc),
│   │   feedback=None,
│   │   agent_id=None,
│   │   team_id=None
│   ),
│   UserMemory(
│   │   memory='花子 likes dancing',
│   │   memory_id='f6b5f8d6-9c02-4c17-834e-f3454595f633',
│   │   topics=['hobbies', 'preferences'],
│   │   user_id='hanako',
│   │   input='ユーザーの名前は花子で、ダンスをするのが好き。',
│   │   updated_at=datetime.datetime(2025, 10, 29, 17, 1, 25, tzinfo=datetime.timezone.utc),
│   │   feedback=None,
│   │   agent_id=None,
│   │   team_id=None
│   )
]
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                                                 ┃
┃ 私は大阪に住んでいます。車で1時間以内で行ける範囲で、どこに引っ越すのが良いでしょうか?                                                         ┃
┃                                                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                                                 ┃
┃ • update_user_memory(task=花子さんは大阪に住んでいる。)                                                                                         ┃
┃                                                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Response (14.0s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                                                 ┃
┃ 大阪から車で1時間以内で引っ越し先を考えると、以下のような場所が候補に挙がるかもしれません:                                                     ┃
┃                                                                                                                                                 ┃
┃  1 神戸市: 港町として栄え、異国情緒あふれる街並みや、美味しい食べ物が楽しめます。多くの文化イベントも開催されています。                         ┃
┃  2 奈良市: 歴史のある街で、古い神社やお寺、鹿公園が有名です。穏やかな生活環境が魅力です。                                                       ┃
┃  3 堺市: 大阪市の南に位置し、交通アクセスが良く、住宅地として人気があります。歴史的な場所も多く、落ち着いた環境です。                           ┃
┃  4 京都市: 歴史と文化が豊かな町で、多くの観光地があります。様々なイベントや市場が開催され、多様な楽しみ方ができます。                           ┃
┃  5 姫路市: 世界遺産の姫路城があり、観光や文化的な魅力がある町です。                                                                             ┃
┃                                                                                                                                                 ┃
┃ ダンス好きな花子さんには、文化的なイベントやダンス教室が充実している町も魅力かもしれませんね。ぜひ、各地の生活環境や雰囲気を調べてみてください  ┃
┃ 。                                                                                                                                              ┃
┃                                                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
花子についての記憶 (2):
[
│   UserMemory(
│   │   memory="User's name is 花子",
│   │   memory_id='235d2352-4e27-4ecb-a7dc-b803ff82553f',
│   │   topics=['name'],
│   │   user_id='hanako',
│   │   input='ユーザーの名前は花子で、ダンスをするのが好き。',
│   │   updated_at=datetime.datetime(2025, 10, 29, 17, 1, 25, tzinfo=datetime.timezone.utc),
│   │   feedback=None,
│   │   agent_id=None,
│   │   team_id=None
│   ),
│   UserMemory(
│   │   memory='花子 likes dancing',
│   │   memory_id='f6b5f8d6-9c02-4c17-834e-f3454595f633',
│   │   topics=['hobbies', 'preferences'],
│   │   user_id='hanako',
│   │   input='ユーザーの名前は花子で、ダンスをするのが好き。',
│   │   updated_at=datetime.datetime(2025, 10, 29, 17, 1, 25, tzinfo=datetime.timezone.utc),
│   │   feedback=None,
│   │   agent_id=None,
│   │   team_id=None
│   ),
│   UserMemory(
│   │   memory='花子 lives in Osaka',
│   │   memory_id='3f9920ef-8bd1-41d4-b5b5-27f3ef60e2a3',
│   │   topics=['location'],
│   │   user_id='hanako',
│   │   input='花子さんは大阪に住んでいる。',
│   │   updated_at=datetime.datetime(2025, 10, 29, 17, 1, 32, tzinfo=datetime.timezone.utc),
│   │   feedback=None,
│   │   agent_id=None,
│   │   team_id=None
│   )
]

 

以上