Dify笔记-创建自定义工具连接到自建的OpenAPI Schema服务

背景

使用Python的Flask包创建OpenAPI Schema服务,提供给Dify创建自定义工具使用。

使用Flask的原因是,国产系统,内网系统,共用系统。安装OpenSSL开发环境不方便,特别是内网和共用系统,有很大风险。

甚至弄坏其他项目。所以采用Flask。不依赖OpenSSL。

操作

dify成功配置如下:

代码如下:

python 复制代码
from flask import Flask, jsonify, request

app = Flask(__name__)

# ------------------------------
# 1. OpenAPI 规范定义(给导入工具用的)
# ------------------------------
OPENAPI_SCHEMA = {
    "openapi": "3.0.0",
    "info": {
        "title": "FLASK_TEST API",
        "version": "1.0.0"
    },
    "servers": [
        {"url": "http://192.168.240.1:9123"}  # 这里改成实际IP
    ],
    "paths": {
        "/add": {
            "post": {
                "summary": "两数相加",
                "requestBody": {
                    "required": True,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "a": {"type": "number"},
                                    "b": {"type": "number"}
                                },
                                "required": ["a", "b"]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "成功返回和",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "result": {"type": "number"}
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/echo": {
            "post": {
                "summary": "返回输入的消息",
                "requestBody": {
                    "required": True,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "message": {"type": "string"}
                                },
                                "required": ["message"]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "成功返回消息",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "result": {"type": "string"}
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

# ------------------------------
# 2. 提供 OpenAPI Schema 接口(关键!给导入用)
# ------------------------------
@app.route('/openapi.json', methods=['GET'])
def openapi_schema():
    return jsonify(OPENAPI_SCHEMA)

# ------------------------------
# 3. 实际业务接口
# ------------------------------
@app.route('/add', methods=['POST'])
def add():
    data = request.get_json()
    a = data['a']
    b = data['b']
    return jsonify({"result": a + b})

@app.route('/echo', methods=['POST'])
def echo():
    data = request.get_json()
    message = data['message']
    return jsonify({"result": message})

# ------------------------------
# 启动服务
# ------------------------------
if __name__ == '__main__':
    app.run(host="0.0.0.0", port=9123, debug=False, use_reloader=False)

运行截图如下:

相关推荐
金伟API10247 小时前
SQL Server基础学习笔记
笔记·学习
砚凝霜7 小时前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
岑梓铭8 小时前
《考研408数据结构》第七章(7.1 查找:顺序查找、折半查找、分块查找)复习笔记
数据结构·笔记·考研·408·ds·查找
金伟API10248 小时前
常见的SQL面试题:经典50例
数据库·人工智能·笔记·sql·学习
DES 仿真实践家9 小时前
Plant Simulation SimTalk基础教程(3)SimTalk 变量与数据类型
开发语言·笔记·学习
逸模10 小时前
多业态连锁,如何同步铺开各类门店
大数据·人工智能·笔记·工程·公装·连锁店
乐橙开放平台10 小时前
明厨亮灶笔记:乐橙轻应用 H5 + 小程序插件,一套 BFF 出两张播放凭证
人工智能·笔记·物联网·小程序·音视频·notepad++
左左右右左右摇晃12 小时前
手写Tomcat原理整理
java·开发语言·笔记·tomcat
.Hypocritical.12 小时前
Maven笔记——2
java·笔记·maven
乐橙开放平台12 小时前
养殖 SaaS 笔记:乐橙 IoT 物模型管环境,视频 OpenAPI 管回看
数据库·笔记·物联网·mysql·音视频