要是有这么的需求,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百家乐真人平台