在Dify中创建自定义Drools工具
文章目录
- 前言
- 一、生成Schema格式文件
- 二.创建自定义工具
前言
上篇文章开发出了Drools的demo,后续我将程序部署到了测试服务器中。
原本的需求逻辑是大部分用户的问题通过业务系统调用Dify的接口使用本地大模型推理出结果返回,另一部分特定的问题通过业务系统调用Drools程序的接口,通过规则校验返回数据的问题。
但是这样一来业务系统就要调用两个接口甚至更多的接口。所以后面想能不能让业务系统只调用Dify的接口,然后在Dify中调用Drools服务的接口。
调研后发现Dify可以在工作流中使用Python语言调用接口,但是我是Java开发,不会Python语言。
最后确定的技术方案为:将Drools的服务封装成Dify中的工具,然后在Dify的工作流中直接使用工具。
一、生成Schema格式文件
可以看到创建自定义工具Dify只支持传入openapi schema格式的接口文档,所以需要获取到Drools接口的schema格式的json。
新版的IDEA支持直接生成OpenAPI的JSON,版本低的IDEA我记得是没有这个图标的
openapi: "3.1.0"
info:title: "drools_demo API"description: "drools_demo API"version: "1.0.0"
servers:- url: "https://drools_demo"
paths:/drools/test:post:summary: "POST drools/test"operationId: "validateClinicalData"requestBody:content:application/json:schema:$ref: "#/components/schemas/ClinicalData"required: trueresponses:"200":description: "OK"content:'*/*':schema:$ref: "#/components/schemas/ValidationResult"
components:schemas:ClinicalData:type: "object"properties:anesthesiaMethod:type: "string"emergencyDiagnosisCode:type: "string"ruleTypes:type: "array"items:type: "string"ValidationResult:type: "object"properties:errors:type: "array"items:type: "string"
这是根据我上篇文章中的接口生成出的schema格式的JSON,然后我们修改下url地址等信息,然后将json复制粘贴
二.创建自定义工具
dify会对你的schema文本的正确性进行检测,如果语法、结构没有问题,可用工具下面会根据你的Json生成一条接口信息,点击测试就可以测试接口是否好用。
测试没有问题后点击保存,这样一个自定义工具就创建成功了。