用 Python UTCP 直调 HTTP、CLI、MCP……

大家好,这里是架构资源栈 !点击上方关注,添加"星标",一起学习大厂前沿架构!

关注、发送C1即可获取JetBrains全家桶激活工具和码!


为什么 UTCP 会火?

近年来,AI 需要调用外部工具越来越普遍。传统的 MCP(Model Context Protocol)方式往往需搭建中间层代理,既臃肿又拖延。UTCP(Universal Tool Calling Protocol)提出了更优雅的做法:AI 通过标准描述"手册"直连工具本体,不绕道中间代理,延迟低、结构清晰 (GitHub1, UTCP2)。

核心设计理念:

  • 不改活体接口:无需重写现有工具;
  • 无需代理:AI 能直接对接工具本身的 API 或命令行;
  • 标准手册:工具如何被调用通过 JSON 描述清晰可查;
  • 高效灵活:兼容各种协议(HTTP、CLI、WebSocket 等)。

Python UTCP SDK:结构与核心

这是官方 Python 实现,GitHub 上有近 440 颗⭐,采用 MPL-2.0 开源许可 (GitHub1)。其架构简洁但功能强大:

核心分为两部分:

1. utcp 核心模块
  • 数据模型 :使用 Pydantic 构建 ToolCallTemplateUtcpManualAuth 等;
  • 可插拔接口CommunicationProtocolConcurrentToolRepositoryToolSearchStrategyVariableSubstitutorToolPostProcessor
  • 默认实现组件 :如 UtcpClient、内存版本的 InMemToolRepository,以及关键词匹配策略 TagAndDescriptionWordMatchStrategy (GitHub3)。
2. 插件式协议支持

核心只保留协议无关的基础功能,协议实现用插件方式开发:

  • utcp-http 支持 HTTP、SSE、可流式 HTTP 等;
  • utcp-cli 支持本地命令行工具调用;
  • utcp-mcp 支持与 Model Context Protocol(MCP)的兼容;
  • utcp-text 能读取文本文件;
  • utcp-socket(TCP/UDP)、utcp-gql(GraphQL)目前仍在进行中 (GitHub3)。

上手示例:Python 端如何使用?

安装核心 + HTTP 插件:

bash 复制代码
pip install utcp utcp-http

快速示例(简化流程)

python 复制代码
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 配置文件初始化客户端,这些逻辑已现代化清晰划分 (GitHub3)。


为什么推荐这套方案?

  • 极强的一致性:描述逻辑清晰,把协议和工具定义分开,结构理想;
  • 统一调用方式:客户端只关注调用"手册",不用写一堆冗余代码;
  • 高扩展性:插件型协议支持,未来要加 WebSocket、GraphQL、CLI都轻松插入;
  • 开源社区活跃:Python SDK 已有人提议新增 gRPC、GraphQL、Socket 等支持,说明正在迅速完善 (GitHub4)。

总结

UTCP 是 AI 工具调用的轻量革命:不再写桥、不再部署代理------直接通过 JSON 手册告诉 AI:如何调用、在哪调用。Python SDK 实现优雅,社区生态逐步完善,对 AI Agent 体系构建者来说值得关注。

喜欢就奖励一个"👍"和"在看"呗~


喜欢就奖励一个"👍"和"在看"呗~

相关推荐
烂蜻蜓1 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
jay神1 小时前
【计算机毕业设计】基于Flask+Vue的电影数据可视化与智能推荐系统
前端·vue.js·python·信息可视化·flask·毕业设计·课程设计
满怀冰雪2 小时前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
Chester_19997 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
DeepVisionary8 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃8 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰8 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
EXI-小洲8 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
cvcode_study8 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
会周易的程序员9 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm