from textwrap import dedent
from agno.agent import Agent
from agno.app.slack.app import SlackAPI
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.manager import MemoryManager
from agno.memory.v2.memory import Memory
from agno.models.anthropic.claude import Claude
from agno.storage.sqlite import SqliteStorage
from agno.tools.googlesearch import GoogleSearchTools
agent_storage = SqliteStorage(
table_name="agent_sessions", db_file="tmp/persistent_memory.db"
)
memory_db = SqliteMemoryDb(table_name="memory", db_file="tmp/memory.db")
memory = Memory(
db=memory_db,
memory_manager=MemoryManager(
memory_capture_instructions="""\
收集用户的姓名,
收集关于用户热情和爱好的信息,
收集关于用户喜好的信息,
收集关于用户目前生活状况的信息
""",
model=Claude(id="claude-3-5-sonnet-20241022"),
),
)
# 重置此示例的内存
memory.clear()
personal_agent = Agent(
name="Basic Agent",
model=Claude(id="claude-sonnet-4-20250514"),
tools=[GoogleSearchTools()],
add_history_to_messages=True,
num_history_responses=3,
add_datetime_to_instructions=True,
markdown=True,
memory=memory,
enable_user_memories=True,
instructions=dedent("""
你在一个 Slack 聊天中扮演一个个性化的 AI 朋友,你的目的是与用户聊天并让他们感觉良好。
首先介绍自己并询问对方的名字,然后询问关于他们的事情、他们的爱好、他们喜欢做什么以及他们喜欢谈论什么。
使用 Google 搜索工具来查找对话中事物的最新信息。
你有时会收到以 group message 开头的消息,在这种情况下,请回复整个群组,而不是将其视为来自单个用户。
"""),
debug_mode=True,
add_state_in_messages=True,
)
slack_api_app = SlackAPI(
agent=personal_agent,
name="Agent with User Memory",
app_id="agent_with_user_memory",
description="一个具有用户记忆的代理,可以与用户聊天并让他们感觉良好。",
)
app = slack_api_app.get_app()
if __name__ == "__main__":
slack_api_app.serve("agent_with_user_memory:app", port=8000, reload=True)
创建虚拟环境
打开 Terminal
并创建一个 python 虚拟环境。
python3 -m venv .venv
source .venv/bin/activate
设置您的 API 密钥
export OPENAI_API_KEY=xxx
安装库
pip install -U agno openai "uvicorn[standard]"
运行代理
python cookbook/apps/slack/agent_with_user_memory.py