多模型AI代理工具

一个基于Streamlit的AI代理应用,支持多种大语言模型提供商,并集成模型上下文协议(MCP)服务器以增强功能。

  • by NovaAI-innovation
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 novaai-innovation/ai-agent-mcp

使用说明

集成MCP的AI代理

基于Streamlit的AI代理应用程序,支持多个LLM提供者,并与模型上下文协议(MCP)服务器集成,通过工具、资源和提示增强功能。

特性

  • 🤖 多个LLM提供商:支持OpenAI、Anthropic和谷歌模型
  • 🔧 MCP集成:连接到MCP服务器以获取工具和资源
  • 💬 交互式聊天:实时对话,流式响应
  • ⚙️ 可配置设置:可定制的系统提示、温度和令牌限制
  • 🛠️ 工具执行:自动解析和执行工具调用
  • 📁 资源访问:访问MCP资源和提示
  • 🎨 现代用户界面:干净、响应迅速的Streamlit界面

快速开始

1.安装

# Clone the repository
git clone <repository-url>
cd ai-agent-mcp

# Install dependencies
pip install -r requirements.txt

2.环境设置

创建一个 .env 文件基于 env_example.txt:

# Copy the example file
cp env_example.txt .env

# Edit with your API keys
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GOOGLE_API_KEY=your_google_api_key_here

3.运行应用程序

streamlit run app.py

应用程序将在您的浏览器中打开 http://localhost:8501.

配置

LLM提供商

该应用程序支持三个LLM提供者:

OpenAI

  • 模型:GPT-4、GPT-4涡轮增压器、GPT-3.5涡轮增压器
  • API密钥:设置 OPENAI_API_KEY 在您的环境中

Anthropic

  • 模型:第三篇作品,第三篇十四行诗,第三章俳句
  • API密钥:设置 ANTHROPIC_API_KEY 在您的环境中

谷歌

  • 模型:Gemini Pro,Gemini Pro Vision
  • API密钥:设置 GOOGLE_API_KEY 在您的环境中

MCP服务器

MCP(模型上下文协议)服务器提供工具、资源和提示来扩展代理的功能。该应用程序使用与Claude Desktop相同的配置格式。

添加MCP服务器

  1. 转到“MCP服务器”选项卡
  2. 点击“➕ 添加新MCP服务器”
  3. 提供:
    • 服务器名称:唯一标识符(例如,文件系统、勇敢搜索)
    • 命令:要运行的命令(例如npx、uvx、python)
    • 参数:每行一个(例如-y、@modelcontextprotocol/server文件系统)
    • 环境变量:KEY=VALUE格式(可选)
  4. 点击“添加服务器”

MCP服务器配置示例

文件系统服务器:

{
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
}

勇敢的搜索:

{
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-brave-search"],
  "env": {
    "BRAVE_API_KEY": "your-api-key"
  }
}

PostgreSQL:

{
  "command": "uvx", 
  "args": ["mcp-server-postgres", "postgresql://user:pass@localhost/db"]
}

Claude桌面配置兼容性

应用程序可以直接从/向加载和保存配置 claude_desktop_config.json,使其与Claude Desktop的MCP服务器设置完全兼容:

  • 从克劳德桌面加载:单击“📁 从claude_desktop_config“加载以导入现有服务器
  • 保存到克劳德桌面:单击“💾 保存到claude_desktop_config.json“导出配置
  • 相同格式:使用与Claude Desktop相同的JSON结构,实现无缝兼容

用法

基本聊天

  1. 在侧栏中配置LLM提供者
  2. 初始化代理
  3. 在聊天选项卡中开始聊天

使用工具

代理可以自动使用可用的MCP工具。只需询问需要使用工具的内容:

"Can you list the files in my documents folder?"
"What's the weather like in New York?"
"Search for information about Python asyncio"

代理人将:

  1. 确定合适的工具
  2. 执行工具调用
  3. 以用户友好的格式提供结果

高级配置

系统提示

使用系统提示自定义代理的行为:

You are a helpful coding assistant. Always provide code examples and explain your reasoning.

温度控制

  • 0.0:确定性、重点明确的回应
  • 0.7:平衡创造力和一致性(默认)
  • 1.0+:更具创造性和多样性的回应

令牌限制

使用最大令牌控制响应长度(100-8000)。

API集成

创建自定义LLM提供程序

扩展 BaseLLMProvider 类别:

from src.llm_providers import BaseLLMProvider, Message, LLMResponse

class CustomProvider(BaseLLMProvider):
    async def generate_response(self, messages, system_prompt=None, **kwargs):
        # Implement your custom logic
        pass
    
    async def stream_response(self, messages, system_prompt=None, **kwargs):
        # Implement streaming logic
        pass

自定义MCP服务器

创建实现模型上下文协议的MCP服务器:

# Example tool registration
tools = [
    {
        "name": "calculate",
        "description": "Perform mathematical calculations",
        "inputSchema": {
            "type": "object",
            "properties": {
                "expression": {"type": "string"}
            }
        }
    }
]

建筑

核心组件

  • src/agent.py:主要AI代理实现
  • src/llm_providers.py:LLM提供程序抽象
  • src/mcp_client.py:MCP服务器集成
  • src/config.py:配置管理
  • app.py:流线型UI应用程序

数据流

  1. 用户输入→ 流线型UI
  2. UI → AI 代理
  3. 代理→ LLM提供者(用于生成响应)
  4. 代理→ MCP服务器(用于工具执行)
  5. 结果→ UI → User

故障排除

常见问题

“初始化代理失败”

  • 检查API密钥设置是否正确
  • 验证网络连接
  • 确保LLM提供程序可访问

“找不到MCP服务器”

  • 验证服务器路径是否正确
  • 检查服务器是否可执行
  • 查看服务器参数

“工具调用失败”

  • 检查MCP服务器是否正在运行
  • 验证工具参数
  • 查看服务器日志

日志记录

启用调试日志记录:

import logging
logging.basicConfig(level=logging.DEBUG)

演出

为了获得更好的性能:

  • 对长输出使用流式响应
  • 限制对话历史记录长度
  • 优化MCP服务器响应时间

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

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

支持

如有疑问和支持:

  • 在GitHub上创建问题
  • 检查文档
  • 查看示例配置