🚀 Sentinel Core Agent
本项目的 Sentinel Core Agent
主要提供了 client.py
和 server.py
两个核心文件,用于管理用户与语言模型 (LLM) 的交互以及实现 MCP 服务器的各项功能,帮助用户借助语言模型和各类工具高效处理问题。
🚀 快速开始
本部分提供了此仓库中 client.py
和 server.py
文件的摘要,帮助你快速了解其功能和使用方式。
✨ 主要特性
Client.py
- 管理用户与语言模型 (LLM) 以及各种工具之间的交互。
- 初始化并协调聊天会话,LLM 可使用工具回答用户问题。
- 处理服务器连接、工具执行(带重试机制)以及与 LLM 提供商的通信。
Server.py
- 实现一个 MCP 服务器,包含文件系统操作、网络抓取和人工智能搜索等多种工具。
- 使用
fastmcp
库创建并运行服务器。
- 初始化异步网络爬虫 (
crawl4ai
) 并设置嵌入模型用于内容向量化。
📚 详细文档
Client.py
client.py
文件主要负责管理用户与语言模型 (LLM) 以及各种工具之间的交互。它会初始化并协调聊天会话,在这个过程中,LLM 可以使用工具来回答用户的问题。客户端会处理服务器连接、工具执行(带重试机制)以及与 LLM 提供商的通信。
关键组件
- 配置:加载环境变量(包括 LLM API 密钥)和服务器配置文件中的设置。
- 服务器:管理与 MCP(微服务通信协议)服务器的连接,列出可用工具,执行工具并带重试机制,以及清理资源。
- 工具:表示一个工具及其属性(名称、描述、输入模式),并提供格式化工具信息以供 LLM 使用的方法。
- LLMClient:管理与 LLM 的通信,使用 Azure OpenAI 或 Google Gemini 模型进行交互。
- ChatSession:协调用户、LLM 和工具之间的交互。它处理 LLM 响应、执行工具(如果需要)并管理主要的聊天会话循环。
工作流程
客户端会设置一个系统消息,向 LLM 提供可用工具和使用工具的说明。然后进入一个循环,在循环中获取用户输入,将其发送到 LLM 并处理 LLM 的响应。如果响应包含工具调用,则客户端执行该工具并将结果返回给 LLM。这个过程会一直持续,直到用户退出聊天会话。
Server.py
server.py
文件实现了一个 MCP 服务器,其中包含各种工具,包括文件系统操作、网络抓取和人工智能搜索功能。它使用 fastmcp
库来创建并运行该服务器。
关键工具
- is_file_folder_present:检查文件或文件夹是否存在。
- current_datetime:返回当前日期和时间。
- browser_ai_search:使用 AI 代理(Brave Search)在网络上搜索并返回响应。
- read_file:读取文件内容。
- write_file:将内容写入文件(包括文本和二进制模式)。
- web_page_scrapper:抓取网页内容并以 Markdown 格式返回。它还可以对内容进行索引以便于向量搜索。
- get_all_vector_indexes:检索当前目录中的所有向量嵌入索引。
- search_via_index:通过向量嵌入索引搜索查询。
服务器管理
服务器还初始化了一个异步网络爬虫 (crawl4ai
) 并设置了一个嵌入模型用于内容向量化。服务器的生命周期使用异步上下文管理器进行管理,以确保爬虫的正确启动和关闭。服务器使用 mcp.run(transport="stdio")
启动 MCP 服务器循环,允许它接收并处理来自客户端的工具调用。