|
@@ -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.LlmApiClient;
|
|
import com.qmth.boot.core.ai.client.OcrApiClient;
|
|
import com.qmth.boot.core.ai.client.OcrApiClient;
|
|
import com.qmth.boot.core.ai.model.llm.*;
|
|
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.AutoScoreModel;
|
|
import com.qmth.boot.core.ai.model.llm.score.AutoScoreRequest;
|
|
import com.qmth.boot.core.ai.model.llm.score.AutoScoreRequest;
|
|
import com.qmth.boot.core.ai.model.llm.score.AutoScoreResult;
|
|
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.ai.service.AiService;
|
|
import com.qmth.boot.core.retrofit.utils.SignatureInfo;
|
|
import com.qmth.boot.core.retrofit.utils.SignatureInfo;
|
|
import com.qmth.boot.core.retrofit.utils.UploadFile;
|
|
import com.qmth.boot.core.retrofit.utils.UploadFile;
|
|
-import okhttp3.MultipartBody;
|
|
|
|
|
|
+import okhttp3.*;
|
|
|
|
+import okio.BufferedSource;
|
|
import org.junit.Before;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.junit.runner.RunWith;
|
|
@@ -20,9 +22,11 @@ import org.springframework.test.context.junit4.SpringRunner;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
|
|
+import java.io.IOException;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@RunWith(SpringRunner.class)
|
|
@RunWith(SpringRunner.class)
|
|
@@ -57,6 +61,7 @@ public class AiApiDemoTest {
|
|
public void testAll() throws Exception {
|
|
public void testAll() throws Exception {
|
|
// testOcr();
|
|
// testOcr();
|
|
// autoScore();
|
|
// autoScore();
|
|
|
|
+ // autoGenerateQuestionWithStream();
|
|
// autoGenerateQuestion();
|
|
// autoGenerateQuestion();
|
|
// chatTemplate();
|
|
// chatTemplate();
|
|
// chat();
|
|
// chat();
|
|
@@ -94,28 +99,75 @@ public class AiApiDemoTest {
|
|
System.out.println(new JsonMapper().writeValueAsString(result));
|
|
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);
|
|
List<String> result = aiService.autoGenerateQuestion(baseUrl, secret, param);
|
|
System.out.println(new JsonMapper().writeValueAsString(result));
|
|
System.out.println(new JsonMapper().writeValueAsString(result));
|
|
}
|
|
}
|
|
|
|
|
|
private void chatTemplate() throws Exception {
|
|
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("courseName", "语文");
|
|
- put("questionTypeName", "单选题");
|
|
|
|
- put("syllabus", "熟练掌握诗词");// 教学大纲
|
|
|
|
|
|
+ put("questionTypeName", "多选题");
|
|
|
|
+ put("syllabusAttachment", true);// 是否包含教学大纲附件
|
|
|
|
+ put("syllabusNotes", "熟练掌握诗词");// 教学大纲补充说明
|
|
put("knowledgePoint", "诗词");// 知识点
|
|
put("knowledgePoint", "诗词");// 知识点
|
|
put("knowledgeNotes", "作者出处");// 知识点补充说明
|
|
put("knowledgeNotes", "作者出处");// 知识点补充说明
|
|
// SINGLE_ANSWER_QUESTION、MULTIPLE_ANSWER_QUESTION、BOOL_ANSWER_QUESTION、FILL_BLANK_QUESTION、TEXT_ANSWER_QUESTION
|
|
// 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
|
|
// optionCount、blankCount、answerCount
|
|
put("optionCount", 4);
|
|
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 {
|
|
private void chat() throws Exception {
|