AI代理工具链

基于Qwen 2.5的本地AI代理,可自主选择并使用多种工具(如网页搜索、arXiv、YouTube等)来回答用户查询,适用于自动化任务处理和智能问答场景。

  • by ekant1999
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ekant1999/qwen-mcp-agent

使用说明

Qwen 2.5 MCP代理

一个使用Qwen 2.5(通过Ollama)的本地AI代理,可以自主使用工具回答用户查询。代理根据用户问题自动决定何时使用工具(网络搜索、arXiv、YouTube等),执行这些工具,并提供智能响应。

🎯 特性

  • 自主工具选择:代理自动决定使用哪些工具
  • 多工具连锁:可以按顺序使用多个工具
  • 7强大的工具:
    • 🔍 网络搜索(DuckDuckGo)
    • 📰 新闻(谷歌新闻RSS)
    • 📄 arXiv搜索与下载
    • 📑 PDF摘要
    • 🎥 YouTube搜索和下载
  • 对话记忆:在转弯时保持上下文
  • 错误处理:优雅的失败和有用的信息
  • Web用户界面:可选Gradio界面,便于交互
  • 微调支持:准备好使用LoRA/QLoRA微调脚本来定制模型

📁 项目结构

qwen-mcp-agent/
├── main.py              # Agent + tool implementations
├── web_ui.py           # Gradio interface (optional)
├── fine_tune.py        # Fine-tuning script (LoRA/QLoRA)
├── requirements.txt
├── config.json
├── README.md
├── FINE_TUNING.md      # Fine-tuning guide
├── training_data/      # Training data directory
│   └── example_training_data.json
└── downloads/          # For PDFs, videos

🚀 快速开始

先决条件

  1. 安装Ollama: https://ollama.ai
  2. 启动Ollama:
    ollama serve
    
  3. 拉动Qwen 2.5型号:
    ollama pull qwen2.5:7b
    

安装

  1. 克隆或导航到项目目录:

    cd qwen-mcp-agent
    
  2. 安装依赖项:

    pip install -r requirements.txt
    

用法

命令行接口命令模式

python main.py

选项:

  • --model MODEL:指定Ollama模型(默认值: qwen2.5:7b)
  • --quiet:禁用详细日志记录

Web UI模式

python web_ui.py

然后打开浏览器 http://localhost:7860

🔧 可用工具

1.网络搜索

使用DuckDuckGo搜索网络。

示例:“在网上搜索量子计算”

2.获取新闻

从谷歌新闻RSS获取最新新闻文章。

示例:“最新的人工智能新闻是什么?”

3.arXiv搜索

搜索arXiv的研究论文。

示例:“查找有关变压器的最新论文”

4.arXiv下载

按ID从arXiv下载PDF文件。

示例:“下载arXiv论文2301.12345”

5.PDF摘要

从PDF文件中提取文本并提供摘要。

示例:“在下载/paper.PDF中总结PDF”

6.YouTube搜索

在YouTube上搜索视频。

示例:“在YouTube上搜索机器学习教程”

7.YouTube下载

通过URL从YouTube下载视频。

示例:“下载此YouTube视频:https://youtube.com/watch?v=..."

🧪 测试用例

尝试以下查询以测试代理:

  1. “查找有关变压器的最新论文” → 应使用 arxiv_search

  2. “最新的人工智能新闻是什么?” → 应使用 get_news

  3. “在YouTube上搜索机器学习教程” → 应使用 youtube_search

  4. “下载arXiv论文2301.12345并对其进行总结” → 应使用 arxiv_download + pdf_summary

  5. “在网上搜索量子计算” → 应使用 web_search

💡 运作原理

  1. 用户提问 → 代理收到查询
  2. 代理分析 → Qwen 2.5模型决定使用哪些工具
  3. 工具执行 → 使用适当的参数调用选定的工具
  4. 已处理结果 → 工具结果反馈给代理
  5. 最终答案 → Agent综合信息并做出响应

代理可以自动将多个工具链接在一起。例如,如果你要求“下载并总结一篇论文”,它将:

  1. 在arXiv上搜索论文
  2. 下载PDF
  3. 从PDF中提取文本
  4. 提供摘要

🛠️ 配置

编辑 config.json 自定义:

  • 默认模型
  • 详细模式
  • 最大迭代次数
  • 工具默认值

🎓 对…微调

想为您的特定用例定制模型吗?使用LoRA/QLoRA对其进行微调!

看 FINE_TUNING.md 完整的指南。

快速启动:

# Install fine-tuning dependencies
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install trl peft transformers datasets accelerate bitsandbytes

# Prepare your training data (see training_data/example_training_data.json)
# Run fine-tuning
python fine_tune.py --data training_data/my_data.json --epochs 3

📝 示例用法

CLI示例

$ python main.py

============================================================
Qwen 2.5 MCP Agent - Ready!
============================================================
Type your questions. The agent will automatically use tools.
Type 'quit' or 'exit' to end.

You: What's the latest news about AI?
Agent: [Agent searches news, processes results, and responds]

You: Find papers about transformers
Agent: [Agent searches arXiv, lists papers, and responds]

Web UI示例

  1. 发射 python web_ui.py
  2. 点击“初始化代理”
  3. 在聊天中键入您的问题
  4. 代理自动使用工具并做出响应

🔍 故障排除

Ollama连接错误

  • 确保Ollama正在跑步: ollama serve
  • 检查Ollama是否可用: ollama list

未找到型号

  • 拉动模型: ollama pull qwen2.5:7b
  • 查看可用型号: ollama list

工具执行错误

  • 检查网络工具的互联网连接
  • 验证PDF操作的文件路径
  • 确保YouTube网址有效

📦 依赖项

  • ollama -Ollama Python客户端
  • arxiv -arXiv API客户端
  • feedparser -RSS源解析器
  • beautifulsoup4 -HTML解析
  • PyPDF2 -PDF文本提取
  • yt-dlp -YouTube下载器
  • duckduckgo-search -网络搜索
  • gradio -Web UI框架

🎯 成功标准

✅ Agent在没有明确指示的情况下自动使用工具
✅ 所有7个工具均正常工作
✅ 处理多步骤查询(搜索→ 下载→ 总结)
✅ 干净的错误处理
✅ 与just合作 agent.chat("your question")

📄 许可证

该项目是开源的,可用于教育目的。

🤝 贡献

您可以随时提交问题、分叉存储库,并为任何改进创建pull请求。