瀏覽代碼

core-ai add chatEndpoint api

deason 1 月之前
父節點
當前提交
d1f4dbb036
共有 1 個文件被更改,包括 68 次插入19 次删除
  1. 68 19
      ai-api-demo/src/test/java/com/qmth/boot/ai/api/demo/test/AiApiDemoTest.java

+ 68 - 19
ai-api-demo/src/test/java/com/qmth/boot/ai/api/demo/test/AiApiDemoTest.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.qmth.boot.core.ai.client.LlmApiClient;
 import com.qmth.boot.core.ai.client.OcrApiClient;
 import com.qmth.boot.core.ai.model.llm.*;
+import com.qmth.boot.core.ai.model.llm.endpoint.ChatEndpoint;
 import com.qmth.boot.core.ai.model.llm.score.AutoScoreModel;
 import com.qmth.boot.core.ai.model.llm.score.AutoScoreRequest;
 import com.qmth.boot.core.ai.model.llm.score.AutoScoreResult;
@@ -11,7 +12,8 @@ import com.qmth.boot.core.ai.model.ocr.OcrType;
 import com.qmth.boot.core.ai.service.AiService;
 import com.qmth.boot.core.retrofit.utils.SignatureInfo;
 import com.qmth.boot.core.retrofit.utils.UploadFile;
-import okhttp3.MultipartBody;
+import okhttp3.*;
+import okio.BufferedSource;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -20,9 +22,11 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @RunWith(SpringRunner.class)
@@ -57,6 +61,7 @@ public class AiApiDemoTest {
     public void testAll() throws Exception {
         // testOcr();
         // autoScore();
+        // autoGenerateQuestionWithStream();
         // autoGenerateQuestion();
         // chatTemplate();
         // chat();
@@ -94,28 +99,75 @@ public class AiApiDemoTest {
         System.out.println(new JsonMapper().writeValueAsString(result));
     }
 
-    private void autoGenerateQuestion() throws Exception {
-        Map<String, Object> param = new HashMap<String, Object>() {{
-            put("courseName", "语文");
-            put("questionTypeName", "单选题");
-            put("syllabus", "熟练掌握诗词");// 教学大纲
-            put("knowledgePoint", "诗词");// 知识点
-            put("knowledgeNotes", "作者出处");// 知识点补充说明
-            // SINGLE_ANSWER_QUESTION、MULTIPLE_ANSWER_QUESTION、BOOL_ANSWER_QUESTION、FILL_BLANK_QUESTION、TEXT_ANSWER_QUESTION
-            put("questionType", "MULTIPLE_ANSWER_QUESTION");
-            // optionCount、blankCount、answerCount
-            put("optionCount", 4);
-        }};
+    private void autoGenerateQuestionWithStream() throws Exception {
+        Map<String, Object> param = this.buildQuestionParam();
+        ChatEndpoint endpoint = llmApiClient.chatEndpoint(baseUrl, secret, LlmAppType.AUTO_GENERATE_QUESTION, param);
+        System.out.println(new JsonMapper().writeValueAsString(endpoint));
+
+        //qwen-plus-latest qwen-long qwen3-235b-a22b
+        RequestBody requestBody = RequestBody.create(MediaType.get("application/json"), endpoint.getRequestBody());
+        Request.Builder requestBuilder = new Request.Builder();
+        requestBuilder.url(endpoint.getUrl());
+        for (Map.Entry<String, String> entry : endpoint.getHeaders().entrySet()) {
+            requestBuilder.addHeader(entry.getKey(), entry.getValue());
+        }
+        Request request = requestBuilder.post(requestBody).build();
+
+        OkHttpClient httpClient = new OkHttpClient.Builder()
+                .readTimeout(60, TimeUnit.SECONDS)
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .build();
+        httpClient.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                e.printStackTrace();
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                if (!response.isSuccessful()) {
+                    System.out.println("error:" + response);
+                    return;
+                }
+
+                try (ResponseBody body = response.body()) {
+                    BufferedSource source = body.source();
+                    StringBuilder currentMessage = new StringBuilder();
+                    while (!source.exhausted()) {
+                        String line = source.readUtf8Line();
+                        if (line == null || line.isEmpty()) {
+                            continue;
+                        }
+                        System.out.println(line);
+                    }
+                    System.out.println(currentMessage);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+
+        TimeUnit.SECONDS.sleep(30);
+    }
 
+    private void autoGenerateQuestion() throws Exception {
+        Map<String, Object> param = this.buildQuestionParam();
         List<String> result = aiService.autoGenerateQuestion(baseUrl, secret, param);
         System.out.println(new JsonMapper().writeValueAsString(result));
     }
 
     private void chatTemplate() throws Exception {
-        Map<String, Object> param = new HashMap<String, Object>() {{
+        Map<String, Object> param = this.buildQuestionParam();
+        ChatResult result = llmApiClient.chatTemplate(baseUrl, secret, LlmAppType.AUTO_GENERATE_QUESTION, param);
+        System.out.println(new JsonMapper().writeValueAsString(result));
+    }
+
+    private Map<String, Object> buildQuestionParam() {
+        return new HashMap<String, Object>() {{
             put("courseName", "语文");
-            put("questionTypeName", "单选题");
-            put("syllabus", "熟练掌握诗词");// 教学大纲
+            put("questionTypeName", "多选题");
+            put("syllabusAttachment", true);// 是否包含教学大纲附件
+            put("syllabusNotes", "熟练掌握诗词");// 教学大纲补充说明
             put("knowledgePoint", "诗词");// 知识点
             put("knowledgeNotes", "作者出处");// 知识点补充说明
             // SINGLE_ANSWER_QUESTION、MULTIPLE_ANSWER_QUESTION、BOOL_ANSWER_QUESTION、FILL_BLANK_QUESTION、TEXT_ANSWER_QUESTION
@@ -123,9 +175,6 @@ public class AiApiDemoTest {
             // optionCount、blankCount、answerCount
             put("optionCount", 4);
         }};
-
-        ChatResult result = llmApiClient.chatTemplate(baseUrl, secret, LlmAppType.AUTO_GENERATE_QUESTION, param);
-        System.out.println(new JsonMapper().writeValueAsString(result));
     }
 
     private void chat() throws Exception {