Agent 是自主运行的 AI 程序。传统软件遵循预先编程的步骤顺序。Agent 使用机器学习模型动态确定其行动方案。

Agent 的核心是模型工具指令

  • **模型:**控制执行流程。它决定是进行推理、执行操作还是响应。
  • **工具:**使 Agent 能够执行操作并与外部系统进行交互。
  • **指令:**是我们编程 Agent 的方式,教它如何使用工具和进行响应。

Agent 还拥有记忆知识存储推理能力:

  • **推理:**使 Agent 能够在响应前“思考”并“分析”其操作(即工具调用)的结果,这提高了响应的可靠性和质量。
  • 知识:是 Agent 可以在运行时搜索的领域特定信息,以做出更好的决策并提供准确的响应(RAG)。知识存储在矢量数据库中,这种在运行时搜索的模式被称为 Agentic RAG/Agentic Search。
  • **存储:**用于 Agent 将会话历史记录和状态保存在数据库中。模型 API 是无状态的,而存储使我们能够从中断的地方继续对话。这使得 Agent 具有状态,从而能够进行多轮、长期的对话。
  • **记忆:**使 Agent 能够存储和回忆先前交互中的信息,从而使它们能够学习用户偏好并个性化其响应。

如果您是第一次构建 Agent,请在深入研究高级概念之前,遵循这些示例

示例:研究 Agent

让我们使用 Exa 构建一个研究 Agent,以展示如何指导 Agent 以特定格式生成报告。在高级场景中,我们应该改用 结构化输出

描述和指令已转换为系统消息,输入作为用户消息传递。设置 debug_mode=True 可查看后台日志。

1

创建研究 Agent

创建一个文件 research_agent.py

research_agent.py
from datetime import datetime
from pathlib import Path
from textwrap import dedent

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.exa import ExaTools

today = datetime.now().strftime("%Y-%m-%d")

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    tools=[ExaTools(start_published_date=today, type="keyword")],
    description=dedent("""\
        您是 X-1000 教授,一位杰出的 AI 研究科学家,精通分析和综合复杂信息。您的专长在于创建引人入胜、基于事实的报告,将学术严谨性与引人入胜的叙事相结合。

        您的写作风格是:
        - 清晰且权威
        - 引人入胜但专业
        - 以事实为导向,带有适当的引用
        - 受过教育的非专业人士易于理解\
    """),
    instructions=dedent("""\
        首先进行 3 次不同的搜索以收集全面信息。
        分析和交叉引用来源的准确性和相关性。
        遵循学术标准构建报告,同时保持可读性。
        仅包含可验证的事实和恰当的引用。
        创作引人入胜的叙事,引导读者了解复杂主题。
        最后给出可操作的要点和未来启示。\
    """),
    expected_output=dedent("""\
    专业的 markdown 格式研究报告:

    # {引人入胜的标题,抓住主题精髓}

    ## 执行摘要
    {对主要发现和意义的简要概述}

    ## 引言
    {主题的背景和重要性}
    {研究/讨论的当前状态}

    ## 主要发现
    {重大发现或发展}
    {支持性证据和分析}

    ## 意义
    {对该领域/社会的影响}
    {未来方向}

    ## 主要收获
    - {要点 1}
    - {要点 2}
    - {要点 3}

    ## 参考资料
    - [来源 1](链接) - 主要发现/引文
    - [来源 2](链接) - 主要发现/引文
    - [来源 3](链接) - 主要发现/引文

    ---
    报告由 X-1000 教授生成
    高级研究系统部
    日期:{当前日期}\
    """),
    markdown=True,
    show_tool_calls=True,
    add_datetime_to_instructions=True,
)

# 示例用法
if __name__ == "__main__":
    # 生成关于前沿主题的研究报告
    agent.print_response(
        "研究脑机接口的最新进展", stream=True
    )

# 更多示例提示供尝试:
"""
尝试这些研究主题:
1. "分析固态电池的当前状态"
2. "研究 CRISPR 基因编辑的最新突破"
3. "调查自动驾驶汽车的发展"
4. "探索量子机器学习的进展"
5. "研究人工智能对医疗保健的影响"
"""
2

运行 Agent

安装库

pip install openai exa-py agno

运行 Agent

python research_agent.py