项目简介
CodeArkt是一个强大的多智能体开发框架,专注于让智能体能够安全地执行Python代码,并通过Model Context Protocol (MCP) 与各种工具和上下文服务进行交互。它提供了一个电池齐全的解决方案,用于构建可推理、可编码、可执行和可迭代的自主智能体。
主要功能点
- 多智能体编排: 支持构建和协调分层结构的专家智能体。
- 安全Python沙盒: 提供安全、临时的Docker执行环境,用于智能体执行代码操作。
- MCP工具生态系统: 能够自动发现并注册MCP协议定义的工具,支持智能体调用外部功能。
- 上下文服务代理: 自身可作为MCP服务器运行,并能代理其他MCP服务器的工具,为客户端提供统一的上下文和工具访问接口。
- 内置UI: 提供了一个优雅的Gradio聊天界面和终端客户端,方便用户与智能体交互。
安装步骤
确保您的系统安装了Python 3.12或更高版本,并且Docker服务正在运行。
- 安装 'codearkt' 包:
此命令将安装所有必要的依赖项,包括 'uvicorn' 和 'fastmcp'。pip install codearkt
服务器配置
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与计算