AI研究助手

一个基于MCP协议的AI研究系统,提供智能网页搜索、内容提取、项目组织和引用管理功能。

  • by Aftabbs
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Aftabbs/Research-Assistant

使用说明

研究助理

基于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界面

  1. 快速搜索:在搜索框中输入查询以查找web内容
  2. 内容提取:单击搜索结果上的“提取”以保存内容
  3. 项目管理:创建和组织研究项目
  4. 聊天界面:使用自然语言进行研究
  5. 引用:自动生成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设置

  1. 创建Azure OpenAI资源
  2. 部署GPT-4模型
  3. 获取端点URL和API密钥
  4. 更新 .env 文件

Google Search API设置(可选)

  1. 创建谷歌云项目
  2. 启用自定义搜索API
  3. 创建自定义搜索引擎
  4. 获取API密钥和搜索引擎ID
  5. 更新 .env 文件

数据库配置

系统在以下位置自动创建SQLite数据库 research_data/research.db 如下表所示:

  • projects:研究项目元数据
  • sources:提取的内容和URL
  • search_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使用情况和配额

发展

添加新工具

  1. 添加工具功能 research_server.py
  2. 更新客户端包装器 research_client.py
  3. 在中添加UI集成 research_ui.py
  4. 更新文档

扩展功能

  • 添加新的搜索引擎或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

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 通过测试进行更改
  4. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

更新日志

版本1.0.0

  • 具有核心功能的初始版本
  • MCP服务器和客户端实现
  • 具有完整功能集的流线型UI
  • 全面的错误处理和测试

版本1.1.0(最新)

  • 修复了参数验证问题
  • 改进了URL处理和内容提取
  • 增强的UI响应能力和状态管理
  • 添加了全面的测试套件和文档

支持

对于问题和疑问:

  1. 检查故障排除部分
  2. 查看测试提示以正确使用
  3. 验证环境配置
  4. 检查服务器日志以获取详细的错误信息

教育价值

该系统展示了:

  • MCP(模型上下文协议)实现
  • LangChain代理模式与工具集成
  • 现代异步Python编程
  • 人工智能应用程序的SQLite数据库设计
  • Streamlit用于快速UI开发
  • Web抓取和内容处理
  • API集成和错误处理模式

该代码库是构建具有适当架构、错误处理和用户体验考虑的生产就绪AI应用程序的综合示例。