项目简介

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())

要运行此示例,您需要:

  1. 安装 Mnemo ('pip install mnemo').
  2. 安装并运行 'filesystem' 和 'fetch' MCP 服务器(这些通常是独立的进程或服务)。
  3. 配置 Mnemo 应用使其知道如何找到并连接到这些服务器(通常通过 'mnemo_agent.config.yaml' 文件)。
  4. 设置您的 OpenAI API 密钥。

信息

分类

AI与计算