项目简介
本项目是一个示例应用,展示了如何将Amazon Bedrock上的基础模型与Chainlit前端以及一个自定义的MCP(模型上下文协议)服务器集成,以创建一个具有工具增强功能的交互式聊天界面。该MCP服务器提供基础的数学计算能力,例如加、减、乘、除,供LLM客户端通过标准化的MCP协议调用。
主要功能点
- Amazon Bedrock 集成: 使用Amazon Bedrock上的Anthropic Claude 3.7 Sonnet模型作为LLM。
- Chainlit 交互界面: 提供友好的Web聊天界面,方便用户与LLM进行对话。
- MCP 数学工具服务器: 实现了一个简单的MCP服务器,提供加、减、乘、除四种数学运算工具。
- 工具调用: LLM可以通过MCP协议调用数学工具服务器提供的工具进行数学计算。
- LangGraph ReAct Agent: 使用LangGraph构建ReAct(Reasoning and Acting)代理,智能地决定何时以及如何使用数学工具。
- 流式响应: 支持流式响应,提供更流畅的用户体验。
安装步骤
-
克隆仓库
git clone https://github.com/aws-samples/sample-bedrock-mcp.git cd sample-bedrock-mcp -
创建虚拟环境并安装依赖
uv sync --all-groups确保已安装 UV 包管理器 (可以使用 'pip install uv' 安装)。
-
配置 AWS 凭证 如果尚未配置 AWS CLI,请运行 'aws configure' 并配置您的 AWS 凭证和区域 (需要具有Bedrock访问权限的账户)。
-
构建项目
uv build构建完成后,会在 'dist/' 目录下生成 wheel 文件 'sample_bedrock_chainlit_mcp-0.1.0-py3-none-any.whl',这个 wheel 文件将作为 MCP 服务器运行。
服务器配置
MCP 服务器需要通过 MCP 客户端(本例中为 Chainlit 应用)进行配置连接。在 Chainlit 聊天界面中,点击输入框下方的插头图标,打开 MCP 连接对话框,填写以下信息:
{ "server name": "math", // MCP 服务器名称,可以自定义,例如 "math" "command": "uvx dist/sample_bedrock_chainlit_mcp-0.1.0-py3-none-any.whl", // MCP 服务器启动命令,指向构建生成的 wheel 文件 "type": "default" // 连接类型,默认为 stdio }
- server name (服务器名称): 为 MCP 连接指定一个名称,例如 "math",在Chainlit界面中用于标识该连接。
- command (命令): MCP 服务器的启动命令。这里使用 'uvx' 运行构建生成的 wheel 文件。'uvx' 是 'uv' 包管理器提供的命令运行器,用于执行 wheel 文件。'dist/sample_bedrock_chainlit_mcp-0.1.0-py3-none-any.whl' 是上一步构建生成的 MCP 服务器 wheel 文件路径。
- type (类型): MCP 连接类型,默认为 'default' (stdio),表示使用标准输入/输出流进行通信。
基本使用方法
-
启动 Chainlit 应用 打开终端,导航到项目根目录,运行以下命令启动 Chainlit 应用:
chainlit run src/ui/app.pyChainlit 应用启动后,通常会在浏览器中打开一个 Web 界面(默认地址为 http://localhost:8000)。
-
连接 MCP 服务器 在 Chainlit Web 界面中,按照 "服务器配置" 步骤配置并连接 MCP 服务器。连接成功后,界面会给出提示。
-
与 LLM 对话并使用数学工具 在 Chainlit 聊天界面中,您可以向 LLM 提出包含数学问题的对话,例如:
- "What's (3 + 5) x 12?" ( (3 + 5) 乘以 12 是多少?)
- "Can you calculate 144 divided by 12?" (你能计算 144 除以 12 吗?)
- "If I have 7 apples and get 9 more, then give 4 away, how many do I have left?" (如果我有 7 个苹果,又得到 9 个,然后送走 4 个,我还剩下多少个?)
LLM 会自动判断是否需要使用数学工具,并通过 MCP 服务器调用相应的数学工具进行计算,最终返回结果。
信息
分类
AI与计算