卫报文章代理🤖📰
一个准备生产的LangGraph代理,使用模型上下文协议(MCP)和Tavily API从《卫报》中查找并提取阅读量最高的三篇文章。
🎯 特性
- LangGraph编排:具有状态管理的复杂代理工作流
- MCP集成:使用模型上下文协议进行标准化工具通信
- 塔维利搜索:专门针对Guardian.co.uk的人工智能网络搜索
- 内容提取:检索完整的文章内容并创建摘要
- LangSmith监测:完全可观察性和代理执行跟踪
- 生产就绪:错误处理、日志记录和配置管理
🏗️ 建筑
┌─────────────────────────────────────────┐
│ Guardian Agent (LangGraph) │
│ - Agent Node (Reasoning) │
│ - Tool Node (Tool Execution) │
│ - Summarizer Node (Final Output) │
└──────────────┬──────────────────────────┘
│ MCP Protocol
│ (JSON-RPC over stdio)
│
┌───────▼────────┐
│ Tavily MCP │
│ Server │
│ │
│ Tools: │
│ - search │
│ - extract │
└────────────────┘📋 先决条件
- Python 3.10或更高版本
- OpenAI API密钥(适用于GPT-4o)
- Tavilly API密钥(用于网络搜索)
- LangSmith API密钥(用于监控-可选但推荐)
🚀 快速开始
1.克隆和设置
cd /path/to/guardian-agent
bash setup.sh2.配置API密钥
编辑 .env 使用API密钥文件:
# OpenAI API Key (required)
OPENAI_API_KEY=sk-...
# Tavily API Key (required) - Get it from https://tavily.com
TAVILY_API_KEY=tvly-...
# LangSmith API Key (optional) - Get it from https://smith.langchain.com
LANGSMITH_API_KEY=lsv2_pt_...
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=guardian-agent获取API密钥的位置:
- OpenAI:https://platform.openai.com/api-keys
- 塔维利:https://app.tavily.com/home(免费套餐:每月1000个请求)
- 朗史密斯:https://smith.langchain.com/settings
3.运行代理
# Activate virtual environment
source venv/bin/activate
# Run the agent
python src/agent.py📁 项目结构
guardian-agent/
├── config/
│ └── mcp_config.json # MCP server configuration
├── logs/ # Application logs (created automatically)
├── src/
│ ├── agent.py # Main LangGraph agent
│ └── tavily_mcp_server.py # Tavily MCP server implementation
├── .env # API keys (create from .env.example)
├── .env.example # Environment template
├── requirements.txt # Python dependencies
├── setup.sh # Setup script
└── README.md # This file🔧 配置
代理设置
编辑 .env 要自定义代理行为,请执行以下操作:
# Model to use (gpt-4o, gpt-4-turbo, gpt-3.5-turbo)
AGENT_MODEL=gpt-4o
# Temperature for LLM (0.0 = deterministic, 1.0 = creative)
AGENT_TEMPERATURE=0.0
# Number of articles to extract
MAX_ARTICLES=3MCP服务器配置
这 config/mcp_config.json 该文件定义了MCP服务器连接。如果需要,您可以添加更多服务器:
{
"mcpServers": {
"tavily": {
"url": "https://mcp.tavily.com/mcp/",
"transport": "sse",
"description": "Tavily search and extract API"
}
}
}🎭 运作原理
代理工作流
- 代理节点:
- 接收查找《卫报》前3篇文章的任务 - 使用思维链推理规划方法 - 决定调用哪些工具
- 工具节点:
- 执行 tavily_search 查找《卫报》的热门文章 - 执行 tavily_extract 获取完整的文章内容 - 将结果返回给代理
- 摘要生成器节点:
- 处理提取的文章 - 创建简明摘要 - 格式化最终输出
MCP工具
tavily_search
{
"query": "most read articles guardian",
"include_domains": ["theguardian.com"],
"max_results": 5,
"search_depth": "advanced"
}烟草提取物
{
"urls": ["https://www.theguardian.com/article1", ...],
"extract_depth": "advanced"
}📊 与LangSmith一起监控
LangSmith提供了完全的可观察性:
- 访问https://smith.langchain.com
- 导航到您的项目:
guardian-agent - 查看:
- 代理执行跟踪 - 工具调用和响应 - 令牌使用情况 - 延迟度量 - 错误日志
🧪 测试
手动测试
运行代理并验证输出:
python src/agent.py预期产量:
╭──────────────────────────────────────╮
│ Guardian Articles Agent │
│ Powered by LangGraph + MCP + Tavily │
│ Model: gpt-4o │
╰──────────────────────────────────────╯
[yellow]Initializing MCP tools...[/yellow]
[green]✓ Loaded 2 MCP tools[/green]
- tavily_search: Search the web using Tavily's AI-powered...
- tavily_extract: Extract full content from specific URLs...
[yellow]Building LangGraph workflow...[/yellow]
[green]✓ LangGraph workflow built successfully[/green]
[blue]→ Agent reasoning...[/blue]
[green]→ Executing tools...[/green]
[magenta]→ Creating summary...[/magenta]
╭─ Final Summary ─╮
│ │
│ 1. Article 1... │
│ 2. Article 2... │
│ 3. Article 3... │
│ │
╰─────────────────╯
✓ Task completed successfully!独立测试MCP服务器
# Set environment variable
export TAVILY_API_KEY=your_key_here
# Run MCP server
python src/tavily_mcp_server.py🐛 故障排除
常见问题
1. ModuleNotFoundError: No module named 'mcp'
source venv/bin/activate
pip install -r requirements.txt2. OPENAI_API_KEY not found
- 确保您已创建
.env文件 - 检查API密钥是否在中正确设置
.env
3. TAVILY_API_KEY not found
- 从获取免费API密钥https://tavily.com
- 增添
.env文件
4.代理商不退货
- 检查Guardian网站是否可访问
- 尝试不同的搜索查询
- 验证Tavily API密钥是否有效
5.LangSmith没有留下痕迹
- 验证
LANGSMITH_API_KEY已设置 - 检查
LANGSMITH_TRACING=true - 确保项目名称匹配
调试模式
启用详细日志记录:
export LANGCHAIN_VERBOSE=true
python src/agent.py🔒 安全最佳实践
- 永不承诺
.env文件 -它在里面.gitignore - 定期旋转API键
- 使用环境变量 用于生产部署
- 监控API使用情况 检测异常
- 设置速率限制 用于生产用途
📈 演出
- 平均执行时间:10-30秒
- 代币使用量:每次运行约2000-5000个代币
- Tavilly API调用:每次运行2-4次
🔄 定制
更改目标网站
编辑 src/agent.py,第210行:
query = f"""
Find the {MAX_ARTICLES} most read articles on theguardian.com right now.
...
Use the tavily_search tool with include_domains=['theguardian.com'] to find articles,
"""改变 theguardian.com 到任何其他域。
添加更多工具
- 在中创建新的MCP服务器
src/ - 将服务器配置添加到
config/mcp_config.json - 更新
agent.py加载其他服务器
修改摘要
编辑 summarizer_node 方法in src/agent.py 更改输出格式。
📚 了解更多
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
📄 许可证
MIT许可证-您可以在自己的项目中自由使用!
🎓 鸣谢
内置:
______________________________________________________________________
问题或议题? 打开一个问题或联系我们!
快乐建筑! 🚀
