#!/usr/bin/env python3 # -*- coding: utf-8 -*- """作业 5 · 步骤 2:在 Dify 注册 OpenAPI 工具(vLLM 健康检查)。""" from __future__ import annotations import sys from pathlib import Path import _bootstrap # noqa: F401 import _config as C from dify_api import Dify, pp SCHEMA_PATH = ( Path(__file__).resolve().parents[2] / "patches_cursor" / "作业5_vLLM健康检查Agent" / "作业5_vllm_health_openapi.yaml" ) def main() -> int: schema = SCHEMA_PATH.read_text(encoding="utf-8") d = Dify(C.DIFY_EMAIL, C.DIFY_PASSWORD) try: d.login() existing = d.get("/workspaces/current/tools/api") names = [] for item in existing.get("json") or []: names.append(item.get("name") or item.get("provider")) print("existing api tools:", names) if C.VLLM_HEALTH_PROVIDER in names: r_del = d.post( "/workspaces/current/tool-provider/api/delete", body={"provider": C.VLLM_HEALTH_PROVIDER}, ) pp("delete old", r_del) body = { "provider": C.VLLM_HEALTH_PROVIDER, "credentials": {"auth_type": "none"}, "schema_type": "openapi", "schema": schema, "icon": {"background": "#E0F2FE", "content": "🩺"}, "privacy_policy": "", "custom_disclaimer": "", "labels": ["ops", "homework5", "aiops"], } r = d.post("/workspaces/current/tool-provider/api/add", body=body) pp("add api tool", r) if r.get("code") not in ("200", "201"): return 1 r2 = d.get( "/workspaces/current/tool-provider/api/tools?provider=%s" % C.VLLM_HEALTH_PROVIDER ) pp("list tools", r2, limit=4000) return 0 finally: d.close() if __name__ == "__main__": sys.exit(main())