用 Python UTCP 直调 HTTP、CLI、MCP……
近年来,AI 需要调用外部工具越来越普遍。传统的 MCP(Model Context Protocol)方式往往需搭建中间层代理,既臃肿又拖延。这是官方 Python 实现,GitHub 上有近 440 颗⭐,采用 MPL-2.0 开源许可 (你也可以用 JSON 配置文件初始化客户端,这些逻辑已现代化清晰划分 (,不绕道中间代理,延迟低、结构清晰。
为什么 UTCP 会火?
近年来,AI 需要调用外部工具越来越普遍。传统的 MCP(Model Context Protocol)方式往往需搭建中间层代理,既臃肿又拖延。UTCP(Universal Tool Calling Protocol)提出了更优雅的做法:AI 通过标准描述“手册”直连工具本体,不绕道中间代理,延迟低、结构清晰 。
核心设计理念:
- 不改活体接口:无需重写现有工具;
- 无需代理:AI 能直接对接工具本身的 API 或命令行;
- 标准手册:工具如何被调用通过 JSON 描述清晰可查;
- 高效灵活:兼容各种协议(HTTP、CLI、WebSocket 等)。
Python UTCP SDK:结构与核心
这是官方 Python 实现,GitHub 上有近 440 颗⭐,采用 MPL-2.0 开源许可 (GitHub)。其架构简洁但功能强大:
核心分为两部分:
1. utcp
核心模块
- 数据模型:使用 Pydantic 构建
Tool
、CallTemplate
、UtcpManual
、Auth
等; - 可插拔接口:
CommunicationProtocol
、ConcurrentToolRepository
、ToolSearchStrategy
、VariableSubstitutor
、ToolPostProcessor
; - 默认实现组件:如
UtcpClient
、内存版本的InMemToolRepository
,以及关键词匹配策略TagAndDescriptionWordMatchStrategy
(GitHub)。
2. 插件式协议支持
核心只保留协议无关的基础功能,协议实现用插件方式开发:
utcp-http
支持 HTTP、SSE、可流式 HTTP 等;utcp-cli
支持本地命令行工具调用;utcp-mcp
支持与 Model Context Protocol(MCP)的兼容;utcp-text
能读取文本文件;utcp-socket
(TCP/UDP)、utcp-gql
(GraphQL)目前仍在进行中 (GitHub)。
上手示例:Python 端如何使用?
安装核心 + HTTP 插件:
pip install utcp utcp-http
快速示例(简化流程)
import asyncio from utcp.utcp_client import UtcpClient from utcp_http.http_call_template import HttpCallTemplate from utcp.data.utcp_client_config import UtcpClientConfig async def main(): config = UtcpClientConfig( variables={"openlibrary_URL": "..."}, manual_call_templates=[ HttpCallTemplate( name="openlibrary", call_template_type="http", http_method="GET", url="${openlibrary_URL}", content_type="application/json" ) ] ) client = await UtcpClient.create(config=config) result = await client.call_tool( tool_name="openlibrary.read_search_authors_json_search_authors_json_get", tool_args={"q": "J. K. Rowling"} ) print(result) asyncio.run(main())
你也可以用 JSON 配置文件初始化客户端,这些逻辑已现代化清晰划分 (GitHub)。
为什么推荐这套方案?
- 极强的一致性:描述逻辑清晰,把协议和工具定义分开,结构理想;
- 统一调用方式:客户端只关注调用“手册”,不用写一堆冗余代码;
- 高扩展性:插件型协议支持,未来要加 WebSocket、GraphQL、CLI都轻松插入;
- 开源社区活跃:Python SDK 已有人提议新增 gRPC、GraphQL、Socket 等支持,说明正在迅速完善
更多推荐
所有评论(0)