此示例展示了如何创建一个智能图书推荐系统,该系统可根据您的偏好提供全面的文学建议。该代理结合了图书数据库、评分、评论和即将发布的图书信息,以提供个性化的阅读推荐。

您可以尝试的示例提示:

  • “我喜欢《伊芙琳·雨果的七任丈夫》和《戴茜·琼斯和六个人》,接下来我应该读什么?”
  • “推荐一些像《消失的爱人》和《沉默的病人》这样的心理惊悚小说给我”
  • “过去 2 年里最好的奇幻小说有哪些?”
  • “我喜欢有强大女性主角的历史小说,有什么建议吗?”
  • “想找一些读起来像小说一样的科学书籍,类似于《亨丽埃塔·拉克斯的非凡生命》”

代码

books_recommender.py
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. "列出即将被改编成影视作品的书籍"
"""

用法

1

创建虚拟环境

打开 Terminal 并创建一个 python 虚拟环境。

python3 -m venv .venv
source .venv/bin/activate
2

安装所需库

pip install openai exa_py agno
3

设置环境变量

export OPENAI_API_KEY=****
export EXA_API_KEY=****
4

运行代理

python books_recommender.py