项目简介
Mnemo 是一个强大的 Python 框架,专为构建可组合的 AI 代理和实时数据接口而设计。它基于 Model Context Protocol (MCP) 构建,使开发者能够轻松地将大型语言模型 (LLM) 与外部工具、数据源和服务连接起来。Mnemo 既可以作为使用 MCP 服务器提供能力的 MCP 客户端,也可以将 Mnemo 代理和工作流封装后作为 MCP 服务器 提供给其他客户端使用。
主要功能点
- MCP 兼容性: 完全支持 MCP 客户端和服务模式,可以方便地连接和使用任何 MCP 兼容的服务,或将自身能力封装为 MCP 服务。
- AI 代理构建: 提供灵活的 Agent 类,可以为代理定义指令、分配 MCP 服务器或本地函数作为其可用工具。
- 工作流编排: 支持多种高级工作流模式,如检索增强生成 (RAG)、多步任务编排 (Orchestrator)、并行执行 (Parallel) 和智能路由 (Router)。
- 实时数据集成: 通过 MCP 服务器连接文件系统、网页抓取、数据库等数据源,实现 LLM 对实时数据的访问和处理。
- 工具调用: 允许 LLM 代理调用外部工具或本地函数,执行特定任务。
- 多模态支持: 设计上支持处理文本、图像、结构化文档等多种模态输入。
安装步骤
需要 Python 3.10 或更高版本。推荐使用 'uv' 或 'pip' 进行安装。
使用 'uv' 安装:
uv add "mnemo"
或使用 'pip' 安装:
pip install mnemo
Mnemo 还需要依赖特定的 MCP 服务器(如文件系统、网络抓取等)来提供实际能力。这些服务器通常需要另外安装和运行。例如,可以使用 'uvx' 或 'npx' 来运行一些标准的 MCP 服务器。具体的服务器安装和运行方式取决于您希望使用的服务器类型。
MCP 服务器配置(供 MCP 客户端连接 Mnemo 服务器时使用)
当您使用 Mnemo 提供的示例(如 'examples/basic/mnemo_mcp_agent_server/server.py')将 Mnemo 工作流作为 MCP 服务器运行时,其他 MCP 客户端可以连接到此服务器。以下是连接到这样一个 Mnemo MCP 服务器的典型配置信息示例(请注意,这只是一个示例,具体路径和命令可能需要根据您的实际环境调整):
这是一个通过标准输入输出 (Stdio) 协议启动 Mnemo Agent 服务器的配置示例:
{ "servers": { "mnemo_agent": { "name": "mnemo_agent", "description": "MCP server exposing Mnemo Agent workflows and capabilities.", "transport": "stdio", "command": "python", "args": [ "examples/basic/mnemo_mcp_agent_server/server.py" ] } } }
- '"mnemo_agent"': 这是客户端用于标识此服务器的名称。
- '"name"': MCP 服务器自身声明的名称。
- '"description"': 服务器的功能描述。
- '"transport"': 使用的传输协议,此处为 Stdio。
- '"command"': 启动服务器进程的命令。
- '"args"': 传递给启动命令的参数,通常是服务器脚本的路径。
请注意,实际运行服务器脚本可能需要先激活正确的 Python 环境并安装 Mnemo 及其依赖。
基本使用方法
Mnemo 通常作为库在您的 Python 项目中使用,用于构建使用 MCP 服务器的代理和工作流。以下是一个简单的示例,展示了如何创建一个使用 'filesystem' 和 'fetch' MCP 服务器的 Mnemo 代理:
import asyncio from mnemo_agent.app import MCPApp from mnemo_agent.agents.agent import Agent from mnemo_agent.workflows.llm.augmented_llm_openai import OpenAIAugmentedLLM # 1. 初始化 Mnemo 应用 app = MCPApp(name="my_mnemo_app") async def main(): # 使用应用运行上下文 async with app.run() as mnemo_app_context: # 确保 MCP 服务器配置已加载 (通常通过 mnemo_agent.config.yaml 或编程方式) # 例如,如果需要使用 filesystem 服务器访问当前目录,可以在配置中或此处修改 args # mnemo_app_context.context.config.mcp.servers["filesystem"].args.extend([os.getcwd()]) # 2. 创建一个 Mnemo Agent,并指定它将使用的 MCP 服务器名称 my_agent = Agent( name="researcher", instruction="You are a helpful researcher.", server_names=["filesystem", "fetch"], # 这些名称应与您的 MCP 配置匹配 ) # 3. 在代理的上下文中使用它 (初始化连接等) async with my_agent: # 4. 将一个 LLM (如 OpenAI) 附加到代理 llm = await my_agent.attach_llm(OpenAIAugmentedLLM) # 5. 使用 LLM 通过代理的工具执行任务 # LLM 会根据 instruction 和可用的工具自动决定如何调用工具 result = await llm.generate_str( "Read the first 5 lines of README.md and summarize this article: https://www.wikipedia.org/" ) print("Agent response:", result) # 运行异步主函数 if __name__ == "__main__": asyncio.run(main())
要运行此示例,您需要:
- 安装 Mnemo ('pip install mnemo').
- 安装并运行 'filesystem' 和 'fetch' MCP 服务器(这些通常是独立的进程或服务)。
- 配置 Mnemo 应用使其知道如何找到并连接到这些服务器(通常通过 'mnemo_agent.config.yaml' 文件)。
- 设置您的 OpenAI API 密钥。
信息
分类
AI与计算