1.Dify API接入方式

在Dify应用当中,可以在"访问API"处找到Dify对外提供的相关API接口。

image-ziii.png

可以直接使用原生HTTP的方式进行接入,这是最直接的实现方式,可以使用各种HttpClient,比如OkHttpClient/ApacheHttpClient等HTTP客户端都可以。

当然,也有现成的SDK可以使用,直接在SDK内部已经为我们封装好了各种API方法,直接使用即可。

Mave当中使用如下的依赖进行接入:

        <dependency>
            <groupId>io.github.imfangs</groupId>
            <artifactId>dify-java-client</artifactId>
            <version>1.2.5</version>
        </dependency>

Gradle当中使用如下的依赖进行接入:

    implementation("io.github.imfangs:dify-java-client:1.2.5")

我这里也是使用的SDK的方式进行的接入。

2.Dify API接入代码实现

可以使用如下的代码进行DifyClient的获取,对于base-url可以直接在Dify页面上进行获取(注意有后缀"/v1"),api-key可以在Dify应用右上角,点击"API密钥"进行创建并获取。

val difyClient = DifyClientFactory.createClient("${base-url}", "${api-key}")

可以使用如下的代码去获取Dify应用的详情信息:

// {"name":"问题提取","description":"","tags":[],"mode":"workflow"}
// 根据apiKey获取应用名称和应用类型, mode=workflow说明是工作流
println(objectMapper.writeValueAsString(difyClient.appInfo))

// {"toolIcons":{}}
println(objectMapper.writeValueAsString(difyClient.appMeta))

// {"openingStatement":"","suggestedQuestions":[],"suggestedQuestionsAfterAnswer":{"enabled":false},"speechToText":{"enabled":false},"retrieverResource":{"enabled":true},"annotationReply":{"enabled":false},"userInputForm":[{"text-input":{"variable":"text","label":"text","type":"text-input","max_length":48,"required":true,"options":[],"placeholder":"","default":"","hint":""}}],"fileUpload":{"image":{"enabled":false,"numberLimits":3,"transferMethods":["local_file","remote_url"]},"enabled":false,"allowedFileTypes":["image"],"allowedFileExtensions":[".JPG",".JPEG",".PNG",".GIF",".WEBP",".SVG"],"allowedFileUploadMethods":["local_file","remote_url"],"numberLimits":3,"fileUploadConfig":{"fileSizeLimit":15,"batchCountLimit":5,"imageFileSizeLimit":10,"videoFileSizeLimit":100,"audioFileSizeLimit":50,"workflowFileUploadLimit":10}},"systemParameters":{"fileSizeLimit":15,"imageFileSizeLimit":10,"audioFileSizeLimit":50,"videoFileSizeLimit":100}}
println(objectMapper.writeValueAsString(difyClient.appParameters))