此示例演示了如何创建可以访问 HackerNews 实时数据的上下文感知代理。

代码

cookbook/agent_concepts/context/01-add_context.py
import json
from textwrap import dedent

import httpx
from agno.agent import Agent
from agno.models.openai import OpenAIChat


def get_top_hackernews_stories(num_stories: int = 5) -> str:
    """获取并返回 HackerNews 的热门帖子。

    Args:
        num_stories: 要检索的热门帖子数量(默认值:5)
    Returns:
        包含帖子详细信息(标题、URL、分数等)的 JSON 字符串
    """
    # 获取热门帖子
    stories = [
        {
            k: v
            for k, v in httpx.get(
                f"https://hacker-news.firebaseio.com/v0/item/{id}.json"
            )
            .json()
            .items()
            if k != "kids"  # 排除讨论串
        }
        for id in httpx.get(
            "https://hacker-news.firebaseio.com/v0/topstories.json"
        ).json()[:num_stories]
    ]
    return json.dumps(stories, indent=4)


# 创建一个可以访问 HackerNews 实时数据的上下文感知代理
agent = Agent(
    model=OpenAIChat(id="gpt-4"),
    # 上下文中的每个函数在代理运行时都会被解析,
    # 可以将其视为代理的依赖注入
    context={"top_hackernews_stories": get_top_hackernews_stories},
    # 我们可以将整个上下文字典添加到用户消息中
    add_context=True,
    markdown=True,
)

# 示例用法
agent.print_response(
    "总结 HackerNews 的热门帖子,并找出任何有趣的趋势。",
    stream=True,
)

用法

1

创建虚拟环境

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

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

安装库

pip install -U agno httpx
3

运行示例

python cookbook/agent_concepts/context/01-add_context.py