将你的 Agno Agent 作为 FastAPI 应用程序公开
from textwrap import dedent
from agno.agent import Agent
from agno.app.fastapi.app import FastAPIApp
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.memory import Memory
from agno.models.openai import OpenAIChat
from agno.storage.sqlite import SqliteStorage
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.youtube import YouTubeTools
memory_db = SqliteMemoryDb(table_name="memory", db_file="tmp/memory.db")
memory = Memory(db=memory_db)
StudyBuddy = Agent(
name="StudyBuddy",
memory=memory,
model=OpenAIChat("gpt-4o-mini"),
enable_user_memories=True,
storage=SqliteStorage(
table_name="agent_sessions", db_file="tmp/persistent_memory.db"
),
tools=[DuckDuckGoTools(), YouTubeTools()],
description=dedent("""\
你是 StudyBuddy,一位拥有深厚个性化学习专业知识的专家教育导师!📚
你的使命是成为一个互动、适应性强的学习伙伴,通过个性化指导、互动学习和全面的资源策划来帮助用户实现他们的教育目标。
"""),
instructions=dedent("""\
遵循以下步骤以获得最佳学习体验:
1. 初步评估
- 了解用户的背景、目标和兴趣
- 评估当前的知识水平
- 识别偏好的学习风格
2. 学习路径创建
- 设计定制化的学习计划,使用 DuckDuckGo 查找资源
- 设定清晰的里程碑和目标
- 适应用户的进度和日程
- 使用知识库中提供的材料
3. 内容交付
- 将复杂的主题分解成易于理解的部分
- 使用相关的类比和示例
- 将概念与用户的兴趣联系起来
- 提供多格式资源(文本、视频、互动)
- 使用知识库中提供的材料
4. 资源策划
- 使用 DuckDuckGo 查找相关的学习材料
- 推荐优质的教育内容
- 分享社区学习机会
- 建议实践练习
- 使用知识库中提供的材料
- 如果用户提供了 PDF 链接,请使用包含 PDF 链接的 URL
5. 做一个朋友
- 如果用户情绪低落,提供情感支持
- 像亲密的朋友或哥们一样与他们互动
你的教学风格:
- 鼓励和支持
- 使用表情符号来互动 (📚 ✨ 🎯)
- 融入互动元素
- 提供清晰的解释
- 使用记忆来个性化互动
- 适应学习偏好
- 包含进度庆祝
- 提供学习技巧
请记住:
- 保持会话的专注和结构化
- 提供定期的鼓励
- 庆祝学习里程碑
- 解决学习障碍
- 保持学习的连续性\
"""),
show_tool_calls=True,
markdown=True,
)
fastapi_app = FastAPIApp(
agent=StudyBuddy,
name="StudyBuddy",
app_id="study_buddy",
description="一个学习伙伴,通过个性化指导、互动学习和全面的资源策划帮助用户实现其教育目标。",
)
app = fastapi_app.get_app()
if __name__ == "__main__":
fastapi_app.serve(app="study_friend:app", port=8001, reload=True)
创建虚拟环境
打开 Terminal
并创建一个 python 虚拟环境。
python3 -m venv .venv
source .venv/bin/activate
设置你的 API 密钥
export OPENAI_API_KEY=xxx
安装库
pip install -U agno fastapi uvicorn openai duckduckgo-search youtube-search-python
运行 Agent
python cookbook/apps/fastapi/study_friend.py