报告
该项目涉及创建一个MCP服务器-客户端系统,该系统配备了语言模型(LLM),允许使用预配置工具进行智能请求处理。该软件包为以自动化和上下文方式分析和执行订单提供了强大的体系结构。
1)创建MCP服务器和工具
- 在完成了创建MCP服务器及其工具(由@tool定义)的第一步后,我使用邮递员模拟客户端请求。
- 首先,以下是我们正在恢复的工具:
- 然后,我通过以下图像模拟了客户端通过向服务器发送请求初始化和发送/接收工具的过程。
- 它的工作方式从启动请求开始http://localhost:8085/sse从客户端到服务器,打开SSE(服务器发送事件)连接,以接收服务器实时发送的更新和更改,知道服务器为我们提供了身份验证令牌和会话ID
- 在接收到标识符和令牌后,客户端随后向服务器发送请求,通知其存在,同时添加有关其自身的一些信息。服务器随后将发送一个响应,该响应将在客户端的GET接口中自动接收,这表明它们现在彼此连接。
- 连接到服务器后,客户端现在将发送一个工具/列表请求,以便接收最初在MCP服务器级别启动的工具。然后,服务器将自动将工具发送到客户端。
- 最后,为了验证工具是否有效,我们对其中一个接收到的工具进行了测试,以便从客户端接收结果。
- 下图按顺序说明了执行的步骤及其成功的证明。
2)创建客户端
- 一旦通过邮递员创建并测试了MCP服务器,我就开始设置一组用Java、Node.js和Python开发的MCP客户端,所有这些客户端都通过MCP-servers.json配置文件连接到中央服务器。
为了启动客户端体系结构,我首先创建了一个名为AIAgentController的REST控制器,它接收来自用户的包含查询的GET请求。这个问题被传递给我也开发的AiAgent类。后者负责显示可用的MCP工具(用于调试),然后将处理委托给GroqService。 GroqService使用Groq提供的基于LLM LLAMA模型的免费API来解释请求。它依赖于一组配置的预处理(系统消息、MCP工具等),以指导模型并确保仅基于项目数据的可靠和准确响应。 如果出现超出范围的问题或项目中缺少数据,将向用户发送清晰的错误消息。
- 以下是客户成功执行和收到GetCompanyByName的图片:
- MCP服务器JSON的成功证明:
- 通过命令初始化Python环境的过程,并证明其服务器已成功运行:
- 尝试Swagger UI发送查询后的成功证明:
3)创建web聊天界面:
4)使用groq解释从客户端到服务器的查询管理过程
当用户通过web界面提交请求时,它将被转发到代理控制器(GroqService)。仅向LLM发送此请求将导致通用或错误响应。仅添加系统消息有助于限制模型的行为,但如果没有对可用工具的明确访问,这仍然不够。 为了解决这个问题,该服务使用getmcptoolsforgroq()通过MCP客户端提取用@tool注释的工具列表。然后,它构建一个完整的提示,包括用户消息、系统消息(定义使用规则)和工具描述(名称、描述、模式)。 此提示首先发送到Groq API。如果模型确定需要一个或多个工具,则返回tool-call语句。然后通过ExecuteMCTool在本地执行这些调用,结果将嵌入对话历史记录中。 最后,向GROQ发送第二个请求,其中包含丰富的上下文(初始请求、使用的工具、获得的响应)。然后,模型可以仅基于项目数据和定义的工具制定精确的响应,而无需使用一般知识。
