使用说明
研究助理
基于MCP(模型上下文协议)构建的全面的人工智能研究系统,提供智能网络搜索、内容提取、项目组织和引文管理功能。
特性
- 智能网络搜索:Google自定义搜索API与结果过滤的集成
- 内容提取:自动网页内容提取和清理
- 项目管理:组织对具有SQLite持久性的结构化项目的研究
- 引文生成:自动APA风格引文格式
- 聊天界面:LangChain驱动的会话研究助理
- 现代用户界面:基于Streamlit的web界面,实时更新
建筑
┌─────────────────┐ HTTP/MCP ┌──────────────────┐
│ Streamlit UI │◄──────────────►│ Research │
│ (research_ui) │ │ Client │
└─────────────────┘ │ (LangChain) │
└─────────┬────────┘
│ MCP
│
┌────────▼────────┐
│ MCP Server │
│ (FastMCP) │
└─────────┬────────┘
│
┌────────▼────────┐
│ SQLite DB │
│ (Research │
│ Storage) │
└─────────────────┘
安装
先决条件
- Python 3.8+
- Azure OpenAI API访问
- Google自定义搜索API凭据(可选)
依赖项
pip install -r requirements.txt
requirements.txt:
# Core MCP and LangChain
mcp>=0.4.0
langchain>=0.1.0
langchain-openai>=0.1.0
langchain-mcp-adapters>=0.1.0
langchain-community>=0.0.20
# Web framework and UI
streamlit>=1.28.0
fastapi>=0.100.0
uvicorn>=0.20.0
# Web scraping and search
httpx>=0.24.0
beautifulsoup4>=4.12.0
feedparser>=6.0.0
# Database and data processing
pandas>=2.0.0
# Environment and utilities
python-dotenv>=1.0.0
环境配置
创建一个 .env 项目根目录中的文件:
# Azure OpenAI Configuration (Required)
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your_api_key_here
AZURE_OPENAI_DEPLOYMENT=gpt-4o
AZURE_OPENAI_API_VERSION=2025-01-01-preview
# Google Search API (Optional - for web search functionality)
GOOGLE_API_KEY=your_google_api_key
GOOGLE_CSE_ID=your_custom_search_engine_id
# Server Configuration
RESEARCH_MCP_URL=http://127.0.0.1:8000/mcp
快速开始
1.启动MCP服务器
python server.py
服务器将于启动 http://127.0.0.1:8000
2.使用CLI客户端进行测试(可选)
python client.py
3.启动Streamlit UI
streamlit run ui.py
UI将在以下时间打开 http://localhost:8501
用法
web界面
- 快速搜索:在搜索框中输入查询以查找web内容
- 内容提取:单击搜索结果上的“提取”以保存内容
- 项目管理:创建和组织研究项目
- 聊天界面:使用自然语言进行研究
- 引用:自动生成APA风格的引用
聊天指令
Search for information about renewable energy
Create a project called "Green Technology Research"
Extract content from https://example.com and save to project 1
List my research projects
Generate citations for project 2
API使用
该系统公开了可以以编程方式调用的MCP工具:
# Example: Direct tool usage
from research_client import ResearchAssistantClient, ResearchClientConfig
client = ResearchAssistantClient(ResearchClientConfig())
await client.connect()
# Perform research
result = await client.research_query("Search for AI ethics research")
projects = await client.get_projects()
组件
MCP服务器(research_server.py)
- 工具:8个研究工具,包括搜索、提取和项目管理
- 数据库:带有项目、源代码和搜索历史表的SQLite
- API:基于FastMCP的HTTP服务器,具有强大的错误处理功能
研究客户(research_client.py)
- 代理:具有对话记忆的LangChain ReAct代理
- 工具:包装好的MCP工具,带有参数验证
- 接口:编程API和CLI
流线型UI(research_ui.py)
- 仪表盘:项目管理和分析
- 搜索:具有内容提取功能的实时网络搜索
- 聊天:对话式研究界面
- 响应式:具有适当状态管理的现代UI
配置
Azure OpenAI设置
- 创建Azure OpenAI资源
- 部署GPT-4模型
- 获取端点URL和API密钥
- 更新
.env文件
Google Search API设置(可选)
- 创建谷歌云项目
- 启用自定义搜索API
- 创建自定义搜索引擎
- 获取API密钥和搜索引擎ID
- 更新
.env文件
数据库配置
系统在以下位置自动创建SQLite数据库 research_data/research.db 如下表所示:
projects:研究项目元数据sources:提取的内容和URLsearch_history:查询跟踪
功能概述
网页搜索
- Google自定义搜索集成
- 结果过滤和排名
- 域提取和元数据
- 搜索历史跟踪
内容提取
- 基于BeautifulSoup的HTML解析
- 内容清理和格式化
- 自动重复数据删除
- 项目协会
项目管理
- 分层组织
- 源计数和时间戳
- 项目切换和背景
- 批量操作
引文生成
- APA格式支持
- 元数据自动抽取
- 批量引文生成
- 导出功能
测试
测试提示
基本功能:
Search for climate change solutions
Create a project called "Environmental Research"
Extract content from search results
高级工作流:
Research sustainable agriculture, create a project for it, and save the top 3 sources
Find information about renewable energy, extract content, and generate citations
错误处理:
Extract content from invalid-url
Create duplicate project names
Search with empty queries
预期行为
- 使用提取按钮显示搜索结果
- 项目出现在下拉菜单中
- 内容提取更新源计数
- 聊天提供连贯的回应
- 错误显示有用的消息,没有崩溃
故障排除
常见问题
连接错误:
- 验证服务器是否在端口8001上运行
- 检查Azure OpenAI凭据
- 确保MCP URL正确
搜索失败:
- 验证Google API证书
- 检查API配额和帐单
- 网络搜索是可选的-系统在没有它的情况下工作
数据库问题:
- 确保项目目录中的写入权限
- 检查SQLite数据库文件的创建
- 数据库丢失时自动创建
UI问题:
- 如果出现状态问题,请刷新浏览器
- 检查浏览器控制台是否存在JavaScript错误
- 如果需要,重新启动Streamlit
性能优化
- 限制搜索结果以获得更快的响应
- 大型数据集的定期数据库维护
- 调整复杂查询的代理超时
- 监控API使用情况和配额
发展
添加新工具
- 添加工具功能
research_server.py - 更新客户端包装器
research_client.py - 在中添加UI集成
research_ui.py - 更新文档
扩展功能
- 添加新的搜索引擎或API
- 实施其他引用格式
- 创建导出功能(PDF、Word)
- 添加协作功能
测试框架
# Run server tests
python -m pytest tests/test_server.py
# Run client tests
python -m pytest tests/test_client.py
# Run integration tests
python -m pytest tests/test_integration.py
贡献
- 复刻仓库
- 创建要素分支
- 通过测试进行更改
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
更新日志
版本1.0.0
- 具有核心功能的初始版本
- MCP服务器和客户端实现
- 具有完整功能集的流线型UI
- 全面的错误处理和测试
版本1.1.0(最新)
- 修复了参数验证问题
- 改进了URL处理和内容提取
- 增强的UI响应能力和状态管理
- 添加了全面的测试套件和文档
支持
对于问题和疑问:
- 检查故障排除部分
- 查看测试提示以正确使用
- 验证环境配置
- 检查服务器日志以获取详细的错误信息
教育价值
该系统展示了:
- MCP(模型上下文协议)实现
- LangChain代理模式与工具集成
- 现代异步Python编程
- 人工智能应用程序的SQLite数据库设计
- Streamlit用于快速UI开发
- Web抓取和内容处理
- API集成和错误处理模式
该代码库是构建具有适当架构、错误处理和用户体验考虑的生产就绪AI应用程序的综合示例。
