使用说明

项目简介

Redpanda Agent Runtime 是一个用于构建和部署AI Agent的框架,它不仅提供了一个Agent运行时的gRPC服务器,允许客户端通过gRPC协议调用Agent执行任务,还能作为Model Context Protocol (MCP) 的客户端,集成外部MCP服务器提供的工具和服务,从而增强Agent的能力。该项目旨在简化企业级Agent的开发和部署流程,提供更好的开发者体验。

主要功能点

  • Agent 运行时托管: 提供gRPC服务器,用于托管和运行AI Agent。
  • gRPC 接口: 通过 gRPC 协议提供 'InvokeAgent' 接口,允许客户端调用 Agent 执行任务。
  • MCP 客户端集成: 可以作为 MCP 客户端,与外部 MCP 服务器集成,发现和调用 MCP 服务器提供的工具。
  • 工具扩展: Agent 可以使用本地定义的工具,也可以通过 MCP 协议动态发现和使用远程 MCP 服务器提供的工具,实现工具能力的扩展。
  • 灵活的 Agent 定义: 支持使用 Python 代码定义 Agent,包括模型选择、指令、工具配置等。
  • 多种 MCP 传输协议支持: 作为 MCP 客户端,支持 Stdio, SSE, WebSocket 等多种 MCP 服务器连接方式。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/redpanda-data/agent.git
    cd agent
  2. 安装依赖:
    pip install .

服务器配置

MCP客户端配置 (集成外部MCP服务器)

虽然该仓库主要实现的是 Agent Runtime 服务器,但它也具备 MCP 客户端能力,可以连接并使用外部 MCP 服务器的工具。以下是一个 MCP 客户端连接外部 MCP 服务器的配置示例 (JSON 格式,用于配置客户端程序,不是配置 'redpanda-data/agent' 仓库本身,因为该仓库是 服务器 端实现):

{
  "servers": [
    {
      "serverName": "ExternalMCPServer",
      "transport": "stdio",
      "command": "your-external-mcp-server-command",  // 外部MCP服务器的启动命令,例如: "mcp-server"
      "args": ["--config", "config.yaml"],             // 外部MCP服务器的启动参数,例如: ["--port", "8080"]
      "cwd": "/path/to/external/mcp/server"           // 外部MCP服务器的工作目录 (可选)
    },
    {
      "serverName": "AnotherMCPServer",
      "transport": "sse",
      "url": "http://external-mcp-server.com:8080/sse" // SSE MCP服务器的URL
    }
    // ... 更多 MCP 服务器配置
  ]
}

注意: 以上 JSON 配置是假设您正在开发一个 MCP 客户端程序,并希望连接到外部 MCP 服务器来使用工具。 'redpanda-data/agent' 仓库本身提供的 'redpanda.runtime.serve(agent)' 函数启动的是 Agent Runtime 服务器,它 作为服务器 运行,并 作为客户端 连接外部 MCP 服务器。 您无需配置 'redpanda-data/agent' 仓库作为 MCP 服务器的启动命令和参数,因为该仓库本身就是服务器实现。

Agent Runtime 服务器配置 (运行 'redpanda-data/agent' 提供的服务器)

要运行 'redpanda-data/agent' 提供的 Agent Runtime 服务器,您需要创建一个 Agent 实例,并使用 'redpanda.runtime.serve(agent)' 函数启动服务器。 例如,您可以参考 'examples/weather_agent_repl/agents/weather.py' 文件。

'examples/weather_agent_repl/agents/weather.py' 示例配置 (无需额外配置,直接运行即可):

该示例 'weather.py' 文件已经包含了启动 Agent Runtime 服务器的代码,您只需运行该文件即可启动服务器:

cd examples/weather_agent_repl/agents
python weather.py

运行 'weather.py' 后,Agent Runtime 服务器将会在 '127.0.0.1:动态端口' 启动,并通过标准输出打印 gRPC 服务器的地址信息,例如: '1|1|tcp|127.0.0.1:34567|grpc'。 MCP 客户端 需要解析这个输出,获取服务器地址和端口,才能与 Agent Runtime 服务器建立 gRPC 连接并调用 'InvokeAgent' 接口。

基本使用方法 (调用 Agent Runtime 服务器的 gRPC 接口)

  1. 启动 Agent Runtime 服务器: 运行 'examples/weather_agent_repl/agents/weather.py' 或您自定义的 Agent 启动脚本。
  2. 解析服务器地址: 从 Agent Runtime 服务器的标准输出中获取 gRPC 服务器的地址和端口 (例如: '127.0.0.1:34567')。
  3. 使用 gRPC 客户端: 使用 gRPC 客户端 (例如 Python gRPC 客户端) 连接到 Agent Runtime 服务器的地址和端口。
  4. 调用 'InvokeAgent' 接口: 使用 gRPC 客户端调用 'Runtime' 服务的 'InvokeAgent' 接口,发送请求消息 'InvokeAgentRequest',其中包含要 Agent 处理的输入信息 (例如文本消息)。
  5. 接收响应: 接收服务器返回的响应消息 'InvokeAgentResponse',其中包含 Agent 的输出结果。

示例 Python gRPC 客户端代码 (简略示例,仅供参考,需要安装 'grpcio' 和 'protobuf'):

import grpc
from redpanda.runtime.proto import runtime_pb2
from redpanda.runtime.proto import runtime_pb2_grpc

def invoke_agent(server_address, message_payload):
    with grpc.insecure_channel(server_address) as channel:
        stub = runtime_pb2_grpc.RuntimeStub(channel)
        request = runtime_pb2.InvokeAgentRequest(
            message=runtime_pb2.Message(serialized=message_payload.encode('utf-8'))
        )
        response = stub.InvokeAgent(request)
    return response.message.serialized.decode('utf-8')

if __name__ == '__main__':
    server_address = "127.0.0.1:34567" # 替换为实际的服务器地址和端口
    message_payload = "What is the weather in San Francisco?"
    response_output = invoke_agent(server_address, message_payload)
    print(f"Agent Response: {response_output}")

注意: 以上 gRPC 客户端代码仅为示例,实际使用中需要根据 'redpanda/runtime/proto/runtime.proto' 文件定义的消息格式进行更详细的请求构造和响应解析。

信息

分类

AI与计算