此示例展示了如何创建一个智能图书推荐系统,该系统可根据您的偏好提供全面的文学建议。该代理结合了图书数据库、评分、评论和即将发布的图书信息,以提供个性化的阅读推荐。
您可以尝试的示例提示:
from textwrap import dedent
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.exa import ExaTools
book_recommendation_agent = Agent(
name="Shelfie",
tools=[ExaTools()],
model=OpenAIChat(id="gpt-4o"),
description=dedent("""\
你是 Shelfie,一位充满热情且知识渊博的文学策展人,精通世界各地的图书!📚
你的使命是通过提供详细的、个性化的推荐,根据读者的偏好、阅读历史和最新的文学资讯,帮助读者发现他们下一本喜爱的图书。你结合了深厚的文学知识以及当前的评分和评论,来推荐真正能引起读者共鸣的书籍。"""),
instructions=dedent("""\
在进行每次推荐时,请遵循以下步骤:
1. 分析阶段 📖
- 理解读者从他们输入的信息中表达的偏好
- 考虑提及的喜爱图书的主题和风格
- 考虑任何具体要求(类型、篇幅、内容警告)
2. 搜索与策划 🔍
- 使用 Exa 搜索相关图书
- 确保推荐的多样性
- 验证所有图书数据都是最新的且准确的
3. 详细信息 📝
- 图书名称和作者
- 出版年份
- 类型和子类型
- Goodreads/StoryGraph 评分
- 页数
- 简明扼要且引人入胜的情节摘要
- 内容提示
- 所获奖项和认可
4. 额外特色 ✨
- 如有适用,包含系列信息
- 推荐相似的作者
- 说明有声读物的可用性
- 注意任何即将改编的影视作品
呈现风格:
- 使用清晰的 markdown 格式
- 以结构化的表格形式呈现主要推荐内容
- 将相似的图书分组
- 为图书类型添加表情符号指示器(📚 🔮 💕 🔪)
- 每条查询至少推荐 5 本书
- 为每条推荐包含简要说明
- 突出作者和观点的多样性
- 在相关时注明触发警告"""),
markdown=True,
add_datetime_to_instructions=True,
show_tool_calls=True,
)
# 使用不同类型的图书查询进行示例使用
book_recommendation_agent.print_response(
"我真的很喜欢《焦虑的人》和《化学课》,你能推荐一些类似的图书吗?",
stream=True,
)
# 更多示例提示可供探索:
"""
特定类型查询:
1. "推荐像《美丽的世界,你在哪里》这样的当代文学小说"
2. "过去 5 年里最好的奇幻系列有哪些?"
3. "找一些像《墨西哥哥特》和《第九宫》这样的哥特风格小说"
4. "今年のベストデビュー小説は?" (今年的最佳处女作小说是什么?)
当代议题:
1. "推荐一些关于气候变化但又不至于太令人沮丧的书籍"
2. "有哪些适合非技术读者的关于人工智能的最佳书籍?"
3. "推荐关于移民经历的回忆录"
4. "找一些结局有希望的关于心理健康的书籍"
读书俱乐部精选:
1. "哪些是适合引发讨论的读书俱乐部书籍?"
2. "推荐篇幅在 350 页以下的文学小说"
3. "找一些探讨当前社会问题的发人深省的小说"
4. "推荐具有多视角/多叙事的小说"
即将发布的图书:
1. "下个月最受期待的文学作品有哪些?"
2. "展示我最喜欢的作者即将出版的新书"
3. "这个季度备受关注的处女作小说有哪些?"
4. "列出即将被改编成影视作品的书籍"
"""
创建虚拟环境
打开 Terminal
并创建一个 python 虚拟环境。
python3 -m venv .venv
source .venv/bin/activate
安装所需库
pip install openai exa_py agno
设置环境变量
export OPENAI_API_KEY=****
export EXA_API_KEY=****
运行代理
python books_recommender.py