欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Dify調(diào)用Java的三種實現(xiàn)方式

 更新時間:2025年06月06日 08:26:23   作者:Java中文社群  
在一些復(fù)雜的業(yè)務(wù)中,我們可能需要使用?Dify?調(diào)用外部程序(如?Java?程序),因為這樣才能滿足業(yè)務(wù)的特殊需求,那么問題來了,使用?Dify?調(diào)用?Java?程序的實現(xiàn)方式有哪些呢?今天我們就來盤點一下,需要的朋友可以參考下

引言

在一些復(fù)雜的業(yè)務(wù)中,我們可能需要使用 Dify 調(diào)用外部程序(如 Java 程序),因為這樣才能滿足業(yè)務(wù)的特殊需求。

例如,當(dāng)我們使用 Dify 實現(xiàn)“AI 簡歷自動篩選器”的時候,我們首先會使用 AI 篩選出符合招聘要求的簡歷,然后再將簡歷存放到公司的“人才庫”系統(tǒng)中,完成后續(xù)流程的招聘需要(預(yù)約面試、面試評價、發(fā)送 Offer 等操作),這個時候就需要讓 Dify 調(diào)用 Java 程序了。

那么問題來了,使用 Dify 調(diào)用 Java 程序的實現(xiàn)方式有哪些呢?今天我們就來盤點一下。

1.解決方案概述

Dify 調(diào)用 Java 程序的解決方案有以下幾種:

  • 通過 “HTTP 請求” 的方式調(diào)用 Java 程序。
  • 通過 “自定義工具” 的方式調(diào)用 Java 程序。
  • 通過 MCP 的方式調(diào)用 Java 程序。

接下來,我們分別來看。

2.HTTP請求

HTTP 請求允許通過 HTTP 協(xié)議發(fā)送服務(wù)器請求,適用于獲取外部數(shù)據(jù)、webhook、生成圖片、下載文件等情景。它讓你能夠向指定的網(wǎng)絡(luò)地址發(fā)送定制化的 HTTP 請求,實現(xiàn)與各種外部服務(wù)的互聯(lián)互通。

它的使用也很簡單,我們只需要在 Dify 的工作流中添加“HTTP 請求”節(jié)點即可,如下圖所示:

它的參數(shù)配置包含以下這些:

當(dāng)然,我們也可以利用它來發(fā)送文件給 Java 程序,并且可以自定義失敗重試配置和錯誤異常配置。

對于被調(diào)用方 Java 來說,只需要提供一個 HTTP 接口即可,當(dāng)然生成環(huán)境要考慮添加 APIKey 以保證調(diào)用的安全性,這里提供一個簡單的 Java 服務(wù)接口:

import com.ai.difyhttpserver.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/it")
public class InterviewController {
    @RequestMapping("/add")
    public boolean add(User user) {
        // 執(zhí)行數(shù)據(jù)庫添加操作
        System.out.println(user.toString());
        return true;
    }
}

3.自定義工具

自定義工具的調(diào)用方式,需要先把 Java 程序發(fā)不成 Dify 中的自定義工具,才能正常調(diào)用,如下圖所示:

配置的 Schema 需要滿足 OpenAPI 協(xié)議,配置如下:

{
  "openapi": "3.1.0",
  "info": {
    "title": "html to image tools",
    "description": "Generate image files based on HTML code",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "http://192.168.3.94:8080"
    }
  ],
  "paths": {
    "/html2img/gen": {
      "get": {
        "description": "Generate image files based on HTML code",
        "operationId": "html2image",
        "parameters": [
          {
            "name": "html",
            "in": "query",
            "description": "HTML code",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {

    }
  }
}

同樣,Java 服務(wù)器端只需要提供一個可以使用 HTTP 協(xié)議訪問的接口即可。

4.MCP通訊

這種通訊方式實現(xiàn)最麻煩,有點大炮打蚊子的感覺,但也可以實現(xiàn) Dify 調(diào)用 Java 程序,此時要求先試用 Java 程序,例如 Spring AI 實現(xiàn)一個 MCP 服務(wù)器端,然后再使用 Dify 添加支持 MCP 調(diào)用的 Agent 策略,來調(diào)用 Java 的 MCP 服務(wù),如下圖所示:

安裝 Agent 策略(支持 MCP 工具)如下圖所示:

MCP SSE 選裝,非必須,可以為后續(xù) Agent 提供 MCP 工具列表,方便 LLM 正確理解和調(diào)用工具。

配置MCP服務(wù)地址

Dify 只支持 HTTP 協(xié)議的 MCP 服務(wù)調(diào)用,它的配置格式如下:

{
  "server_name1": {
    "transport": "sse",
    "url": "http://127.0.0.1:8000/sse",
    "headers": {},
    "timeout": 50,
    "sse_read_timeout": 50
  },
  "server_name2": {
    "transport": "sse",
    "url": "http://127.0.0.1:8001/sse"
  },
  "server_name3": {
    "transport": "streamable_http",
    "url": "http://127.0.0.1:8002/mcp",
    "headers": {},
    "timeout": 50
  },
  "server_name4": {
    "transport": "streamable_http",
    "url": "http://127.0.0.1:8003/mcp"
  }
}

支持配置多個 MCP 服務(wù),或者是以下 JSON 格式也支持:

{
  "mcpServers": {
      "server_name1": {
        "transport": "sse",
        "url": "http://127.0.0.1:8000/sse",
        "headers": {},
        "timeout": 50,
        "sse_read_timeout": 50
      },
      "server_name2": {
        "transport": "sse",
        "url": "http://127.0.0.1:8001/sse"
      },
      "server_name3": {
        "transport": "streamable_http",
        "url": "http://127.0.0.1:8002/mcp",
        "headers": {},
        "timeout": 50
      },
      "server_name4": {
        "transport": "streamable_http",
        "url": "http://127.0.0.1:8003/mcp"
      }
    }
}

配置Agent

Agent 需要配置的項目比較多,首先是 Agent 策略:

然后是 LLM,選擇合適的大模型即可,之后配置 MCP 工具和 HTTP 地址,如下圖所示:

之后配置指令和查詢問題:

測試MCP調(diào)用

我們創(chuàng)建的是一個 ChatFlow,執(zhí)行效果如下:

執(zhí)行符合預(yù)期。

Spring AI 實現(xiàn) MCP 服務(wù)器端參考我之前發(fā)的文章,這里就不再贅述。

小結(jié)

Dify 調(diào)用 Java 程序的實現(xiàn)方式有 3 種:HTTP 請求、自定義工具、MCP 通訊方式。其中最簡單、最靈活的實現(xiàn)方式為 HTTP 請求方式;自定義工具適合偏工具性質(zhì)(而非業(yè)務(wù)性質(zhì))的調(diào)用;MCP 適合一次性注入多個工具方法給 Dify 使用的場景。

以上就是Dify調(diào)用Java的三種實現(xiàn)方式的詳細(xì)內(nèi)容,更多關(guān)于Dify調(diào)用Java方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在MyBatis的XML映射文件中<trim>元素所有場景下的完整使用示例代碼

    在MyBatis的XML映射文件中<trim>元素所有場景下的完整使用示例代碼

    在MyBatis的XML映射文件中,<trim>元素用于動態(tài)添加SQL語句的一部分,處理前綴、后綴及多余的逗號或連接符,示例展示了如何在UPDATE、SELECT、INSERT和SQL片段中使用<trim>元素,以實現(xiàn)動態(tài)的SQL構(gòu)建,感興趣的朋友一起看看吧
    2025-01-01
  • jxl操作excel寫入數(shù)據(jù)不覆蓋原有數(shù)據(jù)示例

    jxl操作excel寫入數(shù)據(jù)不覆蓋原有數(shù)據(jù)示例

    網(wǎng)上很多例子,都是用Jxl讀或者寫excel,本文實現(xiàn)的功能就是將數(shù)據(jù)源in.xls的第幾行第幾列數(shù)據(jù)寫入到out.xls的第幾行第幾列,不覆蓋out.xls其他原有的數(shù)據(jù)。
    2014-03-03
  • Java微信公眾平臺之自定義菜單

    Java微信公眾平臺之自定義菜單

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺之自定義菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • JDBC實現(xiàn)學(xué)生管理系統(tǒng)

    JDBC實現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了JDBC實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • JPA中EntityListeners注解的使用詳解

    JPA中EntityListeners注解的使用詳解

    這篇文章主要介紹了JPA中EntityListeners注解的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • java圖形界面AWT編寫計算器

    java圖形界面AWT編寫計算器

    這篇文章主要為大家詳細(xì)介紹了基于java語言下圖形界面AWT編寫計算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Spring的自定義擴展標(biāo)簽NamespaceHandler解析

    Spring的自定義擴展標(biāo)簽NamespaceHandler解析

    這篇文章主要介紹了Spring的自定義擴展標(biāo)簽NamespaceHandler解析,在很多情況下,我們需要為系統(tǒng)提供可配置化支持,簡單的做法可以直接基于Spring的標(biāo)準(zhǔn)Bean來配置,Spring提供了可擴展Schema的支持,這是一個不錯的折中方案,需要的朋友可以參考下
    2023-12-12
  • GC參考手冊二java中垃圾回收原理解析

    GC參考手冊二java中垃圾回收原理解析

    由于有個垃圾回收機制,java中的額對象不在有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用空閑的內(nèi)存<BR>
    2022-01-01
  • Spring MVC url提交參數(shù)和獲取參數(shù)

    Spring MVC url提交參數(shù)和獲取參數(shù)

    本文重要講述通過url提交參數(shù)和獲取參數(shù)的具體操作與實現(xiàn)。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題

    JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題

    這篇文章主要介紹了JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論