使用说明

项目简介

本项目是一个基于Amazon Bedrock构建的文档问答聊天机器人,核心特色在于集成了 Model Context Protocol (MCP) 服务器。通过MCP,聊天机器人能够访问外部服务,例如获取当前日期和时间、进行网页搜索等,从而扩展了语言模型的上下文信息和功能。

主要功能点

  • 文档问答: 基于上传的文档内容进行问答,支持多种文档格式 (PDF, DOC, DOCX, PPT, PPTX, TXT, MD, HTML, CSV, XLS, XLSX)。
  • MCP 服务集成:
    • 日期/时间服务: 提供当前日期和时间信息。
    • Google 搜索服务: 通过 Google Custom Search API 提供网页搜索功能,获取实时信息。
  • 多种运行模式:
    • 基本模式: 提供基础的文档问答功能。
    • MCP 模式: 激活日期/时间服务和 Google 搜索服务,增强对话能力。
    • Reasoning 模式: 利用 Claude 3.7 Sonnet 的高级推理能力,提升复杂问题解决效果(Temperature 固定为 1.0,Top-K/Top-P 禁用)。
  • Streamlit Web UI: 提供用户友好的 Web 界面,方便文档上传和聊天交互。
  • 模型参数可调: 允许用户调整 Temperature, Top-P, Top-K, Max Token, Memory Window 等模型参数。

安装步骤

  1. 克隆仓库

    git clone https://github.com/jesamkim/simple-bedrock-chatbot.git
    cd simple-bedrock-chatbot
  2. 创建并激活虚拟环境 (可选)

    python3 -m venv venv
    source venv/bin/activate  # Linux/Mac
  3. 安装依赖

    cd claude-3-7
    pip install -r requirements.txt -U
  4. 配置 AWS 凭证和 Google API 密钥

    • 确保已配置 AWS CLI 或设置 AWS 环境变量 ('AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION=us-west-2'),以便访问 Amazon Bedrock 服务。
    • 获取 Google Custom Search API 密钥和引擎 ID,并设置为环境变量 ('GOOGLE_API_KEY', 'GOOGLE_SEARCH_ENGINE_ID')。

服务器配置

MCP 服务器集成在项目中,默认通过 'mcp.py' 启动,并使用 stdio 进行通信。MCP 客户端无需单独配置服务器地址,只需在 MCP 模式 下运行 'app.py' 即可自动启用 MCP 功能。

MCP 客户端配置示例 (JSON 格式,仅供参考,无需手动配置):

{
  "serverName": "simple-bedrock-chatbot-mcp-server",
  "command": "python",
  "args": ["mcp.py"],
  "transport": "stdio",
  "protocol": "json-rpc"
}

参数说明:

  • 'serverName': MCP 服务器名称,用于标识。
  • 'command': 启动 MCP 服务器的命令,这里使用 'python'。
  • 'args': 启动命令的参数,指定执行 'mcp.py' 文件。
  • 'transport': 通信传输协议,这里使用 'stdio' (标准输入输出)。
  • 'protocol': 通信协议,这里使用 'json-rpc'。

基本使用方法

  1. 启动 Streamlit 应用

    streamlit run app.py --server.port 8080
  2. 访问 Web 界面 在浏览器中打开 'http://localhost:8080'。

  3. 选择运行模式 在 Web 界面的侧边栏选择 MCP 模式Reasoning 模式 以体验 MCP 服务或模型推理增强功能。选择 基本模式 则为普通聊天机器人。

  4. 上传文档 (可选) 在侧边栏的 "Document Upload" 区域上传文档,支持多种文件格式。

  5. 开始聊天 在聊天输入框中输入问题,与聊天机器人进行交互。在 MCP 模式 下,可以体验到日期/时间查询和网页搜索功能。

信息

分类

网页与API