package com.TestLLMshieldV2;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.volcengine.llmshield.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class GenerateV2Stream {
public static void main(String[] args) throws IOException {
String myUrl = "https://cn-beijing.sdk.access.llm-shield.omini-shield.com";
String region = "cn-beijing";
String myAppID = "app-d2pgblcjslsilvcv****";
ModerateV2Response moderateV2Responseode = null;
ApiClient client = ApiClient.New(myUrl, ak, sk, region, timeout, "http://10.37.**.**:8888", 100);
ModerateV2Request moderateV2Request = new ModerateV2Request();
moderateV2Request.setScene(myAppID);
MessageV2 message = new MessageV2();
message.setContent("A地的人都吸毒?");
message.setRole("user");
message.setContentType(ContentTypeV2.TEXT);
moderateV2Request.setMessage(message);
MessageV2 message1 = new MessageV2();
message1.setContent("请给我一份A地十一出行计划");
message1.setRole("user");
message1.setContentType(ContentTypeV2.TEXT);
moderateV2Request.appendHistory(message1);
MessageV2 message2 = new MessageV2();
message2.setContent("你是一个智能助手");
message2.setRole("system");
message2.setContentType(ContentTypeV2.TEXT);
moderateV2Request.appendHistory(message2);
moderateV2Responseode = client.Moderate(moderateV2Request );
if (moderateV2Responseode != null) {
System.out.println("审核结果:" + moderateV2Responseode);
} catch (Exception e) {
System.err.println("调用 Moderate 方法失败:" + e.getMessage());
ModerateV2Result result = moderateV2Responseode.getResult();
if(result.getDecision()!=null) {
if(result.getDecision().getDecisionType() != DecisionTypeV2.OPTIMIZE) {
System.out.println("您的请求无需代答,action is:" + result.getDecision().getDecisionType());
System.out.println("您的审核结果为空" );
GenerateStreamV2Request request = new GenerateStreamV2Request();
request.setMsgID(moderateV2Responseode.getResult().getMsgID());
request.setUseStream(Boolean.TRUE);
GenerateStreamV2Response response = client.GenerateV2Stream(request);
InputStream inputStream = response.getReader();
BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream));
line = bufReader.readLine();
} catch (IOException e) {
System.err.println("读取失败: " + e.getMessage());
if (line.startsWith("data:")) {
String data = line.substring(5).trim();
if (data.equals("[DONE]")) {
System.out.println("收到 data: [DONE],关闭连接");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
GenerateStreamV2ResponseData responseData = objectMapper.readValue(data, GenerateStreamV2ResponseData.class);
String tempString = objectMapper.writeValueAsString(responseData);
System.out.println("Received result: " + tempString);
} catch (IOException e) {
System.err.println("反序列化失败: " + e.getMessage());
} catch (Exception e) {
System.err.println("Failed to start SSE stream: " + e.getMessage());