python-utcp

GitHub
640 43 非常简单 1 次阅读 1周前MPL-2.0开发框架Agent图像语言模型
AI 解读 由 AI 自动生成,仅供参考

python-utcp 是通用工具调用协议(UTCP)的官方 Python 实现,旨在让 AI 智能体能够直接调用各类 API,无需依赖额外的中间件。它主要解决了当前 AI 生态中工具接入标准不一、集成流程繁琐以及扩展性受限的痛点,通过统一的开放标准简化了智能体与外部服务的交互过程。

这款工具非常适合需要构建灵活 AI 应用的开发者及研究人员使用。无论是希望快速对接 HTTP 接口、命令行工具,还是探索 Model Context Protocol (MCP) 的专业工程师,都能从中受益。

python-utcp 的核心亮点在于其模块化与插件化架构。它将核心逻辑与通信协议分离,支持通过插件轻松扩展 HTTP、SSE、CLI、MCP 等多种通信方式,甚至允许开发者自定义存储和搜索策略。这种设计不仅确保了系统在面对大量工具时的高性能与可扩展性,还极大地提升了互操作性。基于简洁明确的 Pydantic 数据模型,python-utcp 降低了开发门槛,让构建安全、可扩展的 AI 工具链变得更加直观高效。

使用场景

某电商公司的后端团队正致力于构建一个智能运维助手,需要让 AI 代理同时调用内部遗留的 CLI 脚本、新的 HTTP 微服务以及第三方 GraphQL 接口来自动处理订单异常。

没有 python-utcp 时

  • 中间件冗余:为了统一不同协议的调用方式,团队不得不开发和维护一套沉重的自定义网关作为中间层,导致架构复杂且延迟增加。
  • 扩展困难:每当接入新类型的工具(如从 HTTP 切换到 WebSocket),都需要修改核心代码逻辑,无法实现真正的插件化热插拔。
  • 协议孤岛:CLI 命令、REST API 和 GraphQL 查询各自为政,AI 代理难以理解统一的工具描述格式,导致意图识别准确率低下。
  • 维护成本高:缺乏标准化的数据模型,每次更新接口文档都需要同步修改多处适配代码,测试工作量巨大。

使用 python-utcp 后

  • 直连任意 API:python-utcp 允许 AI 代理通过标准协议直接调用各类接口,彻底移除了多余的中间件,显著降低了系统延迟。
  • 插件化极速扩展:借助其模块化架构,团队只需安装 utcp-cliutcp-gql 等插件即可无缝支持新协议,无需触碰核心逻辑。
  • 统一交互标准:所有工具被抽象为一致的 Pydantic 模型,AI 代理能以统一视角理解和调度跨协议工具,大幅提升了执行成功率。
  • 开发效率飞跃:基于清晰的接口定义和内置搜索策略,开发人员能快速封装现有基础设施,将新工具接入时间从数天缩短至小时级。

python-utcp 通过建立通用的工具调用标准,打破了协议壁垒,让 AI 代理能像人类一样灵活、直接地操控任何异构系统。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具为纯 Python 协议库,无 GPU 或大内存需求。核心包与通信协议插件(如 HTTP, CLI, MCP 等)需分开安装。支持通过 JSON 配置文件、字典或配置对象初始化客户端。变量替换支持从 .env 文件加载。工具名称采用命名空间格式(manual_name.tool_name)。部分插件(如 Socket, GraphQL)仍在开发中。
python3.8+
pydantic
utcp
utcp-http
utcp-cli
utcp-mcp
utcp-text
python-dotenv
python-utcp hero image

快速开始

通用工具调用协议 (UTCP)

关注组织 PyPI 下载量 许可证 CDTM S23

简介

通用工具调用协议 (UTCP) 是一种安全、可扩展的标准,用于在多种通信协议中定义和交互工具。UTCP 1.0.0 引入了基于插件架构的模块化核心,使其更具扩展性、可测试性,并且更易于打包。

与其他协议相比,UTCP 强调以下几点:

  • 可扩展性:UTCP 旨在处理大量工具和提供商,同时不降低性能。
  • 可扩展性:可插拔的架构使开发者能够轻松添加新的通信协议、工具存储机制和搜索策略,而无需修改核心库。
  • 互操作性:随着越来越多的协议插件(包括 HTTP、SSE、CLI 等)的出现,UTCP 可以与几乎任何现有服务或基础设施集成。
  • 易用性:该协议基于简单且定义明确的 Pydantic 模型,使得开发者可以轻松实现和使用。

MCP 与 UTCP 对比

仓库结构

此仓库包含完整的 UTCP Python 实现:

架构概览

UTCP 采用模块化架构,由核心库和协议插件组成:

核心包 (utcp)

core/ 目录包含基础组件:

  • 数据模型:用于 ToolCallTemplateUtcpManualAuth 的 Pydantic 模型
  • 客户端接口:用于工具交互的主要 UtcpClient
  • 插件系统:用于协议、仓库和搜索的可扩展接口
  • 默认实现:内置的工具存储和搜索策略

快速入门

安装

安装核心库和所需的任何协议插件:

# 安装核心 + HTTP 插件(最常用)
pip install utcp utcp-http

# 根据需要安装其他插件
pip install utcp-cli utcp-mcp utcp-text

基本用法

from utcp.utcp_client import UtcpClient

# 使用 HTTP API 创建客户端
client = await UtcpClient.create(config={
    "manual_call_templates": [{
        "name": "my_api",
        "call_template_type": "http",
        "url": "https://api.example.com/utcp"
    }]
})

# 调用工具
result = await client.call_tool("my_api.get_data", {"id": "123"})

协议插件

UTCP 通过专用插件支持多种通信协议:

插件 描述 状态 文档
utcp-http HTTP/REST API、SSE、流式传输 ✅ 稳定 HTTP 插件 README
utcp-cli 命令行工具 ✅ 稳定 CLI 插件 README
utcp-mcp 模型上下文协议 ✅ 稳定 MCP 插件 README
utcp-text 本地基于文件的工具 ✅ 稳定 Text 插件 README
utcp-websocket WebSocket 实时双向通信 ✅ 稳定 WebSocket 插件 README
utcp-socket TCP/UDP 协议 🚧 开发中 Socket 插件 README
utcp-gql GraphQL API 🚧 开发中 GraphQL 插件 README

在开发过程中,您可以从克隆的仓库中以可编辑模式安装这些包:

# 克隆仓库
git clone https://github.com/universal-tool-calling-protocol/python-utcp.git
cd python-utcp

# 以可编辑模式安装核心包及其开发依赖项
pip install -e "core[dev]"

# 以可编辑模式安装特定的协议插件
pip install -e plugins/communication_protocols/http

从 0.x 迁移到 1.0.0 的迁移指南

版本 1.0.0 引入了多项破坏性变更。请按照以下步骤迁移您的项目。

  1. 更新依赖:安装新的 utcp 核心包以及您使用的特定协议插件(例如 utcp-httputcp-cli)。
  2. 配置
    • 配置对象UtcpClient 现在通过一个 UtcpClientConfig 对象、字典或包含配置的 JSON 文件路径来初始化。
    • 手动调用模板:移除了 providers_file_path 选项。现在不再使用文件路径,而是直接在 UtcpClientConfig 中提供 manual_call_templates 列表。
    • 术语变化provider 一词已被替换为 call_template,而 provider_type 现在称为 call_template_type
    • 可流式 HTTPcall_template_type 中的 http_stream 已更名为 streamable_http
  3. 更新导入语句:更改您的导入语句以反映新的模块化结构。例如,from utcp.client.transport_interfaces.http_transport import HttpProvider 将变为 from utcp_http.http_call_template import HttpCallTemplate
  4. 工具搜索:如果您之前使用的是默认搜索策略,新的策略是 TagAndDescriptionWordMatchStrategy。这是新的默认设置,除非您实现了自定义策略,否则无需进行任何更改。
  5. 工具命名:工具名称现在采用命名空间格式,即 manual_name.tool_name。客户端会自动处理这一点。
  6. 变量替换命名空间:在不同 call_templates 中被替换的变量,首先会使用手册名称进行命名空间划分,并将 _ 重复一次。因此,在名为 manual_1 的手册中的工具调用模板里有一个键为 API_KEY 的变量,它会被转换为 manual__1_API_KEY

使用示例

1. 使用 UTCP 客户端

config.json(可选)

您可以在一个 JSON 文件中定义全面的客户端配置。这些字段都是可选的。

{
  "variables": {
    "openlibrary_URL": "https://openlibrary.org/static/openapi.json"
  },
  "load_variables_from": [
    {
      "variable_loader_type": "dotenv",
      "env_file_path": ".env"
    }
  ],
  "tool_repository": {
    "tool_repository_type": "in_memory"
  },
  "tool_search_strategy": {
    "tool_search_strategy_type": "tag_and_description_word_match"
  },
  "manual_call_templates": [
    {
        "name": "openlibrary",
        "call_template_type": "http",
        "http_method": "GET",
        "url": "${URL}",
        "content_type": "application/json"
    }
  ]
}

client.py

import asyncio
from utcp.utcp_client import UtcpClient
from utcp.data.utcp_client_config import UtcpClientConfig

async def main():
    # UtcpClient 可以通过配置文件路径、字典或 UtcpClientConfig 对象来创建。

    # 选项 1:从配置文件路径初始化
    # client_from_file = await UtcpClient.create(config="./config.json")

    # 选项 2:从字典初始化
    client_from_dict = await UtcpClient.create(config={
        "variables": {
            "openlibrary_URL": "https://openlibrary.org/static/openapi.json"
        },
        "load_variables_from": [
            {
                "variable_loader_type": "dotenv",
                "env_file_path": ".env"
            }
        ],
        "tool_repository": {
            "tool_repository_type": "in_memory"
        },
        "tool_search_strategy": {
            "tool_search_strategy_type": "tag_and_description_word_match"
        },
        "manual_call_templates": [
            {
                "name": "openlibrary",
                "call_template_type": "http",
                "http_method": "GET",
                "url": "${URL}",
                "content_type": "application/json"
            }
        ],
        "post_processing": [
            {
                "tool_post_processor_type": "filter_dict",
                "only_include_keys": ["name", "key"],
                "only_include_tools": ["openlibrary.read_search_authors_json_search_authors_json_get"]
            }
        ]
    })

    # 选项 3:使用功能齐全的 UtcpClientConfig 对象初始化
    from utcp_http.http_call_template import HttpCallTemplate
    from utcp.data.variable_loader import VariableLoaderSerializer
    from utcp.interfaces.tool_post_processor import ToolPostProcessorConfigSerializer

    config_obj = UtcpClientConfig(
        variables={"openlibrary_URL": "https://openlibrary.org/static/openapi.json"},
        load_variables_from=[
            VariableLoaderSerializer().validate_dict({
                "variable_loader_type": "dotenv", "env_file_path": ".env"
            })
        ],
        manual_call_templates=[
            HttpCallTemplate(
                name="openlibrary",
                call_template_type="http",
                http_method="GET",
                url="${URL}",
                content_type="application/json"
            )
        ],
        post_processing=[
            ToolPostProcessorConfigSerializer().validate_dict({
                "tool_post_processor_type": "filter_dict",
                "only_include_keys": ["name", "key"],
                "only_include_tools": ["openlibrary.read_search_authors_json_search_authors_json_get"]
            })
        ]
    )
    client = await UtcpClient.create(config=config_obj)

    # 调用工具。工具名称采用命名空间格式:`manual_name.tool_name`
    result = await client.call_tool(
        tool_name="openlibrary.read_search_authors_json_search_authors_json_get",
        tool_args={"q": "J. K. Rowling"}
    )

    print(result)

if __name__ == "__main__":
    asyncio.run(main())

2. 提供 UTCP 手册

UTCPManual 描述了您提供的工具。关键变化是将 tool_provider 替换为 tool_call_template

server.py

使用 UTCP 装饰器的版本:

from fastapi import FastAPI
from utcp_http.http_call_template import HttpCallTemplate
from utcp.data.utcp_manual import UtcpManual
from utcp.python_specific_tooling.tool_decorator import utcp_tool

app = FastAPI()

# 发现端点返回工具手册
@app.get("/utcp")
def utcp_discovery():
    return UtcpManual.create_from_decorators(manual_version="1.0.0")

# 实际的工具端点
@utcp_tool(tool_call_template=HttpCallTemplate(
    name="get_weather",
    url=f"https://example.com/api/weather",
    http_method="GET"
), tags=["weather"])
@app.get("/api/weather")
def get_weather(location: str):
    return {"temperature": 22.5, "conditions": "Sunny"}

不使用 UTCP 依赖的服务器版本:

from fastapi import FastAPI

app = FastAPI()

# 发现端点返回工具手册
@app.get("/utcp")
def utcp_discovery():
    return {
        "manual_version": "1.0.0",
        "utcp_version": "1.0.2",
        "tools": [
            {
                "name": "get_weather",
                "description": "获取某个地点的当前天气",
                "tags": ["weather"],
                "inputs": {
                    "type": "object",
                    "properties": {
                        "location": {"type": "string"}
                    }
                },
                "outputs": {
                    "type": "object",
                    "properties": {
                        "temperature": {"type": "number"},
                        "conditions": {"type": "string"}
                    }
                },
                "tool_call_template": {
                    "call_template_type": "http",
                    "url": "https://example.com/api/weather",
                    "http_method": "GET"
                }
            }
        ]
    }

# 实际的工具端点
@app.get("/api/weather")
def get_weather(location: str):
    return {"temperature": 22.5, "conditions": "Sunny"}

3. 完整示例

您可以在 examples repository 中找到完整的示例。

协议规范

UtcpManualTool 模型

Tool 中的 tool_provider 对象已被 tool_call_template 替代。

{
  "manual_version": "string",
  "utcp_version": "string",
  "tools": [
    {
      "name": "string",
      "description": "string",
      "inputs": { ... },
      "outputs": { ... },
      "tags": ["string"],
      "tool_call_template": {
        "call_template_type": "http",
        "url": "https://...",
        "http_method": "GET"
      }
    }
  ]
}

调用模板配置示例

针对每种协议的配置示例。请记住将 provider_type 替换为 call_template_type

HTTP 调用模板

{
  "name": "my_rest_api",
  "call_template_type": "http", // 必需
  "url": "https://api.example.com/users/{user_id}", // 必需
  "http_method": "POST", // 必需,默认值为 "GET"
  "content_type": "application/json", // 可选,默认值为 "application/json"
  "allowed_communication_protocols": ["http"], // 可选,默认为 [call_template_type]。限制工具可以使用的通信协议。
  "auth": { // 可选,用于 HTTP 请求的身份验证(例如使用 ApiKeyAuth 提供 Bearer 令牌)
    "auth_type": "api_key",
    "api_key": "Bearer $API_KEY", // 必需
    "var_name": "Authorization", // 可选,默认值为 "X-Api-Key"
    "location": "header" // 可选,默认值为 "header"
  },
  "auth_tools": { // 可选,用于转换后的工具的身份验证,如果此调用模板指向一个应自动转换为 utcp 手册的 openapi 规范(仅适用于按 OpenAPI 规范需要身份验证的端点)
    "auth_type": "api_key",
    "api_key": "Bearer $TOOL_API_KEY", // 必需
    "var_name": "Authorization", // 可选,默认值为 "X-Api-Key"
    "location": "header" // 可选,默认值为 "header"
  },
  "headers": { // 可选
    "X-Custom-Header": "value"
  },
  "body_field": "body", // 可选,默认值为 "body"
  "header_fields": ["user_id"] // 可选
}

SSE(服务器发送事件)调用模板

{
  "name": "my_sse_stream",
  "call_template_type": "sse", // 必需
  "url": "https://api.example.com/events", // 必需
  "event_type": "message", // 可选
  "reconnect": true, // 可选,默认值为 true
  "retry_timeout": 30000, // 可选,默认值为 30000 毫秒
  "auth": { // 可选,示例使用 BasicAuth
    "auth_type": "basic",
    "username": "${USERNAME}", // 必需
    "password": "${PASSWORD}" // 必需
  },
  "headers": { // 可选
    "X-Client-ID": "12345"
  },
  "body_field": null, // 可选
  "header_fields": [] // 可选
}

流式 HTTP 调用模板

请注意名称已从 http_stream 更改为 streamable_http

{
  "name": "streaming_data_source",
  "call_template_type": "streamable_http", // 必需
  "url": "https://api.example.com/stream", // 必需
  "http_method": "POST", // 可选,默认值为 "GET"
  "content_type": "application/octet-stream", // 可选,默认值为 "application/octet-stream"
  "chunk_size": 4096, // 可选,默认值为 4096
  "timeout": 60000, // 可选,默认值为 60000 毫秒
  "auth": null, // 可选
  "headers": {}, // 可选
  "body_field": "data", // 可选
  "header_fields": [] // 可选
}

CLI 调用模板

{
  "name": "multi_step_cli_tool",
  "call_template_type": "cli", // 必需
  "commands": [ // 必需——按顺序执行命令
    {
      "command": "git clone UTCP_ARG_repo_url_UTCP_END temp_repo",
      "append_to_final_output": false
    },
    {
      "command": "cd temp_repo && find . -name '*.py' | wc -l"
      // 默认返回最后一道命令的输出
    }
  ],
  "env_vars": { // 可选
    "GIT_AUTHOR_NAME": "UTCP Bot",
    "API_KEY": "${MY_API_KEY}"
  },
  "working_dir": "/tmp", // 可选
  "auth": null // 可选(CLI 始终为 null)
}

CLI 协议特性:

  • 多命令执行:命令在单个子进程中按顺序运行
  • 跨平台:Windows 上使用 PowerShell,Unix/Linux/macOS 上使用 Bash
  • 状态保留:目录更改(cd)在各命令之间保持有效
  • 参数占位符UTCP_ARG_argname_UTCP_END 格式
  • 输出引用:可通过 $CMD_0_OUTPUT、$CMD_1_OUTPUT 访问先前的输出
  • 灵活的输出控制:可选择将哪些命令的输出包含在最终结果中

文本调用模板

{
  "name": "my_text_manual",
  "call_template_type": "text", // 必需
  "file_path": "./manuals/my_manual.json", // 必需
  "auth": null, // 可选(文本始终为 null)
  "auth_tools": { // 可选,用于从 OpenAPI 规范生成的工具的身份验证
    "auth_type": "api_key",
    "api_key": "Bearer ${API_TOKEN}",
    "var_name": "Authorization",
    "location": "header"
  }
}

MCP(模型上下文协议)调用模板

{
  "name": "my_mcp_server",
  "call_template_type": "mcp", // 必需
  "config": { // 必需
    "mcpServers": {
      "server_name": {
        "transport": "stdio",
        "command": ["python", "-m", "my_mcp_server"]
      }
    }
  },
  "auth": { // 可选,示例使用 OAuth2
    "auth_type": "oauth2",
    "token_url": "https://auth.example.com/token", // 必需
    "client_id": "${CLIENT_ID}", // 必需
    "client_secret": "${CLIENT_SECRET}", // 必需
    "scope": "read:tools" // 可选
  }
}

安全性:协议限制

UTCP 通过 allowed_communication_protocols 字段,对每个手册可使用的通信协议提供细粒度控制。这可以防止潜在的危险协议升级(例如,基于 HTTP 的手册意外调用 CLI 工具)。

默认行为(默认安全)

allowed_communication_protocols 未设置或为空时,手册只能注册和调用与手册本身使用 相同协议类型 的工具:

from utcp_http.http_call_template import HttpCallTemplate

# 此手册仅能注册/调用 HTTP 工具(默认限制)
http_manual = HttpCallTemplate(
    name="my_api",
    call_template_type="http",
    url="https://api.example.com/utcp"
    # allowed_communication_protocols 未设置 → 默认为 ["http"]
)

允许多种协议

若要允许手册使用来自多种协议的工具,请显式设置 allowed_communication_protocols

from utcp_http.http_call_template import HttpCallTemplate

# 此手册可以注册/调用 HTTP 和 CLI 工具
multi_protocol_manual = HttpCallTemplate(
    name="flexible_manual",
    call_template_type="http",
    url="https://api.example.com/utcp",
    allowed_communication_protocols=["http", "cli"]  # 显式允许两种协议
)

JSON 配置

{
  "name": "my_api",
  "call_template_type": "http",
  "url": "https://api.example.com/utcp",
  "allowed_communication_protocols": ["http", "cli", "mcp"]
}

行为总结

allowed_communication_protocols 手册类型 允许的工具协议
未设置 / null "http" "http"
[](空) "http" "http"
["http", "cli"] "http" "http""cli"
["http", "cli", "mcp"] "cli" "http""cli""mcp"

注册时的过滤

register_manual() 过程中,不符合允许协议的工具会被自动过滤掉,并发出警告:

WARNING - 工具 'dangerous_tool' 使用通信协议 'cli',该协议不在手册 'my_api' 的允许协议 ['http'] 中。该工具将不会被注册。

调用时的验证

即使工具以某种方式存在于仓库中,如果其协议未被允许,调用也会失败:

# 抛出 ValueError:工具 'my_api.some_cli_tool' 使用通信协议 'cli',而该协议不被手册 'my_api' 允许。允许的协议:['http']
await client.call_tool("my_api.some_cli_tool", {"arg": "value"})

测试

测试结构已更新,以反映新的核心与插件分离。

运行测试

要运行核心库和所有插件的所有测试:

# 确保已安装所有开发依赖项
python -m pytest

要运行特定包的测试(例如,核心库):

python -m pytest core/tests/

要运行特定插件的测试(例如,HTTP):

python -m pytest plugins/communication_protocols/http/tests/ -v

要运行带有覆盖率的测试:

python -m pytest --cov=utcp --cov-report=xml

构建

构建过程现在涉及单独构建每个包(coreplugins),尽管它们是独立发布到 PyPI 的。

  1. 创建并激活虚拟环境。
  2. 安装构建依赖项:pip install build
  3. 导航到包目录(例如,cd core)。
  4. 运行构建:python -m build
  5. 可分发文件(.whl.tar.gz)将位于 dist/ 目录中。

OpenAPI 摄取——零基础设施工具集成

🚀 无需修改服务器即可将任何现有 REST API 转换为 UTCP 工具!

UTCP 的 OpenAPI 摄取功能会自动将 OpenAPI 2.0/3.0 规范转换为 UTCP 工具,使 AI 代理能够直接与现有 API 交互——无需包装服务器、无需更改 API、无需额外基础设施。

使用 OpenAPI 快速入门

from utcp_http.openapi_converter import OpenApiConverter
import aiohttp

# 将任意 OpenAPI 规范转换为 UTCP 工具
async def convert_api():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.github.com/openapi.json") as response:
            openapi_spec = await response.json()
    
    converter = OpenApiConverter(openapi_spec)
    manual = converter.convert()
    
    print(f"从 GitHub API 生成了 {len(manual.tools)} 个工具!")
    return manual

# 或使用 UTCP 客户端配置进行自动检测
from utcp.utcp_client import UtcpClient

client = await UtcpClient.create(config={
    "manual_call_templates": [{
        "name": "github",
        "call_template_type": "http", 
        "url": "https://api.github.com/openapi.json",
        "auth_tools": {  # 为需要认证的生成工具添加认证
            "auth_type": "api_key",
            "api_key": "Bearer ${GITHUB_TOKEN}",
            "var_name": "Authorization",
            "location": "header"
        }
    }]
})

主要优势

  • 零基础设施:无需部署或维护服务器
  • 直接 API 调用:原生性能,无代理开销
  • 自动转换:OpenAPI 模式 → UTCP 工具
  • 选择性认证:仅受保护的端点需要认证,公开端点仍可访问
  • 保留认证信息:支持 API 密钥、OAuth2、Basic 认证
  • 多格式支持:JSON、YAML、OpenAPI 2.0/3.0
  • 批量处理:可同时转换多个 API

多种摄取方法

  1. 直接转换器OpenApiConverter 类,提供完全控制
  2. 远程 URL:从任意 URL 获取并转换规范
  3. 客户端配置:直接在 UTCP 配置中包含规范
  4. 批量处理:以编程方式处理多个规范
  5. 基于文件:转换本地 JSON/YAML 规范

📖 完整的 OpenAPI 摄取指南 —— 详细示例和高级用法


贡献者

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架