项目简介

CodeArkt是一个强大的多智能体开发框架,专注于让智能体能够安全地执行Python代码,并通过Model Context Protocol (MCP) 与各种工具和上下文服务进行交互。它提供了一个电池齐全的解决方案,用于构建可推理、可编码、可执行和可迭代的自主智能体。

主要功能点

  • 多智能体编排: 支持构建和协调分层结构的专家智能体。
  • 安全Python沙盒: 提供安全、临时的Docker执行环境,用于智能体执行代码操作。
  • MCP工具生态系统: 能够自动发现并注册MCP协议定义的工具,支持智能体调用外部功能。
  • 上下文服务代理: 自身可作为MCP服务器运行,并能代理其他MCP服务器的工具,为客户端提供统一的上下文和工具访问接口。
  • 内置UI: 提供了一个优雅的Gradio聊天界面和终端客户端,方便用户与智能体交互。

安装步骤

确保您的系统安装了Python 3.12或更高版本,并且Docker服务正在运行。

  1. 安装 'codearkt' 包:
    pip install codearkt
    此命令将安装所有必要的依赖项,包括 'uvicorn' 和 'fastmcp'。

服务器配置

CodeArkt作为一个MCP服务器,可以代理其他MCP服务器,并提供智能体服务。您的MCP客户端(如LangChain、AutoGen等)需要连接到CodeArkt运行的端口。以下是MCP客户端连接到CodeArkt服务器的配置示例:

{
  "mcpServers": {
    "codearkt_agent_server": {
      "url": "http://0.0.0.0:5055/mcp",
      "transport": "streamable-http",
      "description": "连接到CodeArkt智能体平台提供的MCP服务接口"
    }
  }
}
  • 'url': CodeArkt服务器运行的地址和端口。默认情况下,它会在 'http://0.0.0.0:5055' 监听。'/mcp' 是MCP协议的默认路径。
  • 'transport': 通信协议类型,'streamable-http' 是FastMCP支持的一种高效传输方式。
  • 'description': 可选,用于描述此MCP服务器的用途。

基本使用方法

首先,您需要运行一个或多个上游的MCP服务器来提供工具。例如,运行 'academia_mcp'(一个示例MCP服务器):

python -m academia_mcp --port 5056

接着,在另一个终端中,使用CodeArkt启动一个包含智能体的服务器,并将其连接到上游的MCP服务器(例如 'academia_mcp'):

import os
from codearkt.codeact import CodeActAgent
from codearkt.llm import LLM
from codearkt.server import run_server

# 配置CodeArkt将代理的上游MCP服务器
mcp_config = {
    "mcpServers": {"academia": {"url": "http://0.0.0.0:5056/mcp", "transport": "streamable-http"}}
}

# 创建一个CodeAct智能体
api_key = os.getenv("OPENROUTER_API_KEY", "")
assert api_key, "请提供OpenRouter API密钥!"
agent = CodeActAgent(
    name="manager",
    description="一个简单的智能体",
    llm=LLM(model_name="deepseek/deepseek-chat-v3-0324", api_key=api_key),
    tool_names=["arxiv_download", "arxiv_search"], # 智能体可用的工具,这些工具将通过MCP代理访问
)

# 运行CodeArkt服务器,它将作为MCP代理并托管智能体API
run_server(agent, mcp_config, port=5055)

现在,CodeArkt服务器已经在 'http://0.0.0.0:5055' 启动,它提供了一个MCP代理服务(路径 '/mcp')和智能体API(路径 '/agents')。您可以使用其内置的客户端或任何其他MCP客户端与之交互。

使用内置Python客户端与智能体交互:

from codearkt.client import query_agent
from codearkt.llm import ChatMessage

history = [ChatMessage(role="user", content="查找论文2402.01030的摘要")]

for event in query_agent(history, port=5055):
    if event.content:
        print(event.content, end="", flush=True)

您还可以运行基于Gradio或终端的交互界面:

uv run -m codearkt.terminal --port 5055
# 或者
uv run -m codearkt.gradio --port 5055

信息

分类

AI与计算