你的位置:ag百家乐大平台 > ag百家乐网站 >


aG百家乐真人平台 怎么通过http调用dify的agent怒放的api接口(java篇)

发布日期:2025-01-26 15:33    点击次数:179


要是有这么的需求,java微工作探望aget的api作念一些数据操作,具体应该何如作念呢?讨论以下问题:

使用什么器具?

参数怎么封装?

agent只接纳流式模式,即是那种一个字一个字往外面蹦,那java又应该使用什么样的代码来接纳呢?

第一个想路

假定你不知谈,那就先啥也别想了,整理好我方的问题,然后平直照管deepseek,指不定就有现成的代码平直能用,我使用问小白试了试,给的示例操作格式仍是很了了的

想路二:平直使用底下的代码

从ai拿过来的代码仍是需要我方腹地测西席证的,ag百家乐接口多少钱我我方作念了测试通过了,在这里平直给宇宙共享

指定的agent复返json数据

导入pom

我是用的springboot,是以没加版块

org.springframework.boot spring-boot-starter-webflux

通过接口触发调用agent的api

@PostMapping("getInformation")public R getInformation(@RequestBody Map inputBean) { new Thread( -> { try { DifyService.callDifyStreaming("你好,你是谁?); } catch (Exception e) { e.printStackTrace; } }).start; return R.data;}

DifyService探望

驻守修改我方的地址和apikey

public class DifyService { private static final String DIFY_URL = "http://localhost/v1/chat-messages"; private static final String API_KEY = "Bearer agent密钥"; public static void callDifyStreaming(String query) throws InterruptedException { // 构建恳求体 DifyRequestBean requestBody = new DifyRequestBean; requestBody.setQuery(query); requestBody.setInputs(Collections.emptyMap); requestBody.setResponse_mode("streaming"); requestBody.setUser("abc-123"); requestBody.setFiles(Collections.emptyList); // 创建WebClient WebClient client = WebClient.builder .baseUrl(DIFY_URL) .defaultHeader("Authorization", API_KEY) .defaultHeader("Content-Type", "application/json") .build; // 发送流式恳求 Flux responseStream = client.post .contentType(MediaType.APPLICATION_JSON) .bodyValue(requestBody) .retrieve .bodyToFlux(String.class); // 处置流式反应 CountDownLatch latch = new CountDownLatch(1); StringBuffer responseBuilder = new StringBuffer; responseStream.subscribe( data -> { StreamResponse streamResponse = JSONObject.parseObject(data, StreamResponse.class); String answer = streamResponse.getAnswer; if (ObjectUtils.isNotEmpty(answer)) { responseBuilder.append(answer); } }, error -> { System.err.println("发生子虚: " + error.getMessage); latch.countDown; }, -> { System.out.println("最终恢复:" + responseBuilder); FinalResponseData streamResponse = JSONObject.parseObject(decode, FinalResponseData.class); streamResponse.setQuery(query); System.out.println(streamResponse.getLog); ListToExcel.generateExcel(Collections.singletonList(streamResponse), "D:\\" + DateUtil.now.getTime + ".xlsx"); latch.countDown; } ); latch.await; }}

使用以上代码粗放平直探望agent得到json数据,然后处置领域。

然而这里有个问题,即是这个Java代码一次只可处置一个query,要是我有业务需要,一次有几十个query需要处置,即使我用for遍历轮回,处置速率亦然很慢的。有莫得目的粗放同期处置几十个恳求,普及后果呢?

背面有契机给宇宙共享!aG百家乐真人平台



    热点资讯

    推荐资讯