本地使用springboot开发了很多接口,dify如何快速引入这些接口,作为aget的function call工具来使用,最近一直在相关学习,给大家做个分享。最终效果如下

java接口作为agent工具调用
Java引入swagger在我们本地的java项目中引入pom配置jar包
<!-- SpringDoc OpenAPI UI (用于生成接口文档页面) --><dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version></dependency>增加配置类OpenApiConfig
import io.swagger.v3.oas.models.OpenAPI;import io.swagger.v3.oas.models.info.Info;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic OpenApiConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("我的本地工具包") .version("1.0.0") .description("本地工具包,使用springdoc-openapi and OpenAPI 3.")); }}在相应的接口上增加对应的swagger注解描述
import io.swagger.v3.oas.annotations.Operation;import io.swagger.v3.oas.annotations.Parameter;import io.swagger.v3.oas.annotations.tags.Tag;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/tools")@Tag(name = "java接口工具", description = "java接口工具")public AgentToolsController { @Operation(summary = "发送邮件", description = "发送邮件",operationId = "send_mail") @GetMapping("/sendMail") public String sendMail(@Parameter(description = "The message to send in the email") @RequestParam String msg) { return "邮件发送成功" + msg; }}启动java服务之后,测试结果

Swagger UI界面: http://localhost:8080/swagger-ui.html
可以看到我们发送邮件的接口

OpenAPI JSON文档: http://localhost:8080/v3/api-docs

具体的json文件如下,我们要注意把localhost替换为host.docker.internal,我们在dify新建工具会用到这个json
{ "openapi": "3.0.1", "info": { "title": "我的本地工具包", "description": "本地工具包,使用springdoc-openapi and OpenAPI 3.", "version": "1.0.0" }, "servers": [ { "url": "http://host.docker.internal:8081", "description": "Generated server url" } ], "tags": [ { "name": "java接口工具", "description": "java接口工具" } ], "paths": { "/tools/sendMail": { "get": { "tags": [ "java接口工具" ], "summary": "发送邮件", "description": "发送邮件", "operationId": "send_mail", "parameters": [ { "name": "msg", "in": "query", "description": "The message to send in the email", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } } } } } }, "components": {}}dify新建自定义工具新建自定义工具,导入上面生成的json

点击测试工具是否能够正常访问

测试接口能够正常返回

保存成功之后,我们就能看到接口被作为工具保存在dify上面了

新建一个简单的agent

添加自定义工具

成功调用工具
