> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 图书推荐器

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

您可以尝试的示例提示：

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

## 代码

```python books_recommender.py theme={null}
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. "列出即将被改编成影视作品的书籍"
"""
```

## 用法

<Steps>
  <Snippet file="create-venv-step.mdx" />

  <Step title="安装所需库">
    ```bash theme={null}
    pip install openai exa_py agno
    ```
  </Step>

  <Step title="设置环境变量">
    ```bash theme={null}
    export OPENAI_API_KEY=****
    export EXA_API_KEY=****
    ```
  </Step>

  <Step title="运行代理">
    ```bash theme={null}
    python books_recommender.py
    ```
  </Step>
</Steps>
