{"repo": "antonycheng/spring-boot-init-template", "files": {"src/test/java/top/sharehome/springbootinittemplate/ai/SpringChatTest.java": {"bd42361d79d018ce3bd981921246978299df5e62": {"t": 1785747153.7428422, "n": 30275, "h": "b740af9835051c55", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.deepseek.DeepSeekChatModel;\nimport org.springframework.ai.deepseek.DeepSeekChatOptions;\nimport org.springframework.ai.deepseek.api.DeepSeekApi;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaChatOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.ChatResultChunk;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n DeepSeekApi deepSeekApi = DeepSeekApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n DeepSeekChatModel chatModel = DeepSeekChatModel.builder()\n .deepSeekApi(deepSeekApi)\n .defaultOptions(DeepSeekChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = ZhiPuAiApi.builder().apiKey(entity.getApiKey()).build();\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = MistralAiApi.builder().apiKey(entity.getApiKey()).build();\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (ChatResultChunk s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "ca927aeb4677778e3ea1433011db5e235f8f9ed9": {"t": 1785770725.187972, "n": 30275, "h": "b740af9835051c55", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.deepseek.DeepSeekChatModel;\nimport org.springframework.ai.deepseek.DeepSeekChatOptions;\nimport org.springframework.ai.deepseek.api.DeepSeekApi;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaChatOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.ChatResultChunk;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n DeepSeekApi deepSeekApi = DeepSeekApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n DeepSeekChatModel chatModel = DeepSeekChatModel.builder()\n .deepSeekApi(deepSeekApi)\n .defaultOptions(DeepSeekChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = ZhiPuAiApi.builder().apiKey(entity.getApiKey()).build();\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = MistralAiApi.builder().apiKey(entity.getApiKey()).build();\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (ChatResultChunk s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "e07d2aa05f8cf8ebf2f3169791ffe161e6f30072": {"t": 1785770728.5077028, "n": 30225, "h": "ccd5f2c66b2ff4bd", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.deepseek.DeepSeekChatModel;\nimport org.springframework.ai.deepseek.DeepSeekChatOptions;\nimport org.springframework.ai.deepseek.api.DeepSeekApi;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.ChatResultChunk;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n DeepSeekApi deepSeekApi = DeepSeekApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n DeepSeekChatModel chatModel = DeepSeekChatModel.builder()\n .deepSeekApi(deepSeekApi)\n .defaultOptions(DeepSeekChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (ChatResultChunk s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "a73a4c8afd1ccfd4f8c0624c0b9010ae267c637f": {"t": 1785770730.418773, "n": 30099, "h": "7e77c657de550fed", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.deepseek.DeepSeekChatModel;\nimport org.springframework.ai.deepseek.DeepSeekChatOptions;\nimport org.springframework.ai.deepseek.api.DeepSeekApi;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.ChatResultChunk;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n DeepSeekApi deepSeekApi = DeepSeekApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n DeepSeekChatModel chatModel = DeepSeekChatModel.builder()\n .deepSeekApi(deepSeekApi)\n .defaultOptions(DeepSeekChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (ChatResultChunk s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (ChatResultChunk s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "35a69feb9fff7041471ca6f7c1f49c1059bdfeb4": {"t": 1785770731.941049, "n": 30064, "h": "bf2c0939c21a7d25", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.deepseek.DeepSeekAssistantMessage;\nimport org.springframework.ai.deepseek.DeepSeekChatModel;\nimport org.springframework.ai.deepseek.DeepSeekChatOptions;\nimport org.springframework.ai.deepseek.api.DeepSeekApi;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.ChatResultChunk;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\nimport java.util.Objects;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n DeepSeekApi deepSeekApi = DeepSeekApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n DeepSeekChatModel chatModel = DeepSeekChatModel.builder()\n .deepSeekApi(deepSeekApi)\n .defaultOptions(DeepSeekChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (ChatResultChunk s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (ChatResultChunk s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (ChatResultChunk s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (ChatResultChunk s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (ChatResultChunk s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (ChatResultChunk s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (ChatResultChunk s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "161cb7bc87d91d2f95ef3dd55877e4750be7d56f": {"t": 1785770733.608432, "n": 29750, "h": "d4884a284d969e6a", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.deepseek.DeepSeekChatModel;\nimport org.springframework.ai.deepseek.DeepSeekChatOptions;\nimport org.springframework.ai.deepseek.api.DeepSeekApi;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n DeepSeekApi deepSeekApi = DeepSeekApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n DeepSeekChatModel chatModel = DeepSeekChatModel.builder()\n .deepSeekApi(deepSeekApi)\n .defaultOptions(DeepSeekChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (String s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "27e2c8b3ecaef02c6bd5d6984591280bbdebf5f4": {"t": 1785770735.0567067, "n": 33260, "h": "8b83583bd081f6b3", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.qianfan.QianFanChatModel;\nimport org.springframework.ai.qianfan.QianFanChatOptions;\nimport org.springframework.ai.qianfan.api.QianFanApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试QianFanChat\n */\n @Test\n public void testQianFanChat() {\n QianFanChatEntity entity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n QianFanApi qianFanApi = new QianFanApi(entity.getApiKey(), entity.getSecretKey());\n QianFanChatModel chatModel = new QianFanChatModel(qianFanApi, QianFanChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(qianFanChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (String s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, message).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(qianFanChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, messages).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(qianFanChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, prompt).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "4033ca20eb56eca2e6124b2ddbfebfb37c2f85cb": {"t": 1785770736.5390725, "n": 36965, "h": "6a95efa7c8777d2a", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.moonshot.MoonshotChatModel;\nimport org.springframework.ai.moonshot.MoonshotChatOptions;\nimport org.springframework.ai.moonshot.api.MoonshotApi;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.qianfan.QianFanChatModel;\nimport org.springframework.ai.qianfan.QianFanChatOptions;\nimport org.springframework.ai.qianfan.api.QianFanApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = OllamaApi.builder()\n .baseUrl(entity.getBaseUrl())\n .build();\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MoonshotChat\n */\n @Test\n public void testMoonshotChat() {\n// MoonshotChatEntity entity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n// MoonshotApi moonshotApi = new MoonshotApi(entity.getApiKey());\n// MoonshotChatModel chatModel = new MoonshotChatModel(moonshotApi, MoonshotChatOptions.builder()\n// .model(entity.getModel())\n// .temperature(entity.getTemperature())\n// .topP(entity.getTopP())\n// .build());\n// System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试QianFanChat\n */\n @Test\n public void testQianFanChat() {\n QianFanChatEntity entity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n QianFanApi qianFanApi = new QianFanApi(entity.getApiKey(), entity.getSecretKey());\n QianFanChatModel chatModel = new QianFanChatModel(qianFanApi, QianFanChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(moonshotChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(qianFanChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (String s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List moonshot = aiChatService.chatStream(moonshotChatEntity, message).toList();\n for (String s : moonshot) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, message).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(moonshotChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(moonshotChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(qianFanChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List moonshot = aiChatService.chatStream(moonshotChatEntity, messages).toList();\n for (String s : moonshot) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, messages).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(moonshotChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(moonshotChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(qianFanChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List moonshot = aiChatService.chatStream(moonshotChatEntity, prompt).toList();\n for (String s : moonshot) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, prompt).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(moonshotChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}, "18b9b9713ca4784da20fddd2f0251b2a12ed15a7": {"t": 1785770738.1399987, "n": 36893, "h": "45b97f28f3f416dc", "c": "package top.sharehome.springbootinittemplate.ai;\n\nimport com.azure.ai.openai.OpenAIClientBuilder;\nimport com.azure.ai.openai.OpenAIServiceVersion;\nimport com.azure.core.credential.AzureKeyCredential;\nimport io.micrometer.observation.ObservationRegistry;\nimport jakarta.annotation.Resource;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatModel;\nimport org.springframework.ai.azure.openai.AzureOpenAiChatOptions;\nimport org.springframework.ai.chat.messages.Message;\nimport org.springframework.ai.chat.messages.SystemMessage;\nimport org.springframework.ai.chat.messages.UserMessage;\nimport org.springframework.ai.chat.prompt.Prompt;\nimport org.springframework.ai.minimax.MiniMaxChatModel;\nimport org.springframework.ai.minimax.MiniMaxChatOptions;\nimport org.springframework.ai.minimax.api.MiniMaxApi;\nimport org.springframework.ai.mistralai.MistralAiChatModel;\nimport org.springframework.ai.mistralai.MistralAiChatOptions;\nimport org.springframework.ai.mistralai.api.MistralAiApi;\nimport org.springframework.ai.model.SimpleApiKey;\nimport org.springframework.ai.model.tool.DefaultToolCallingManager;\nimport org.springframework.ai.moonshot.MoonshotChatModel;\nimport org.springframework.ai.moonshot.MoonshotChatOptions;\nimport org.springframework.ai.moonshot.api.MoonshotApi;\nimport org.springframework.ai.ollama.OllamaChatModel;\nimport org.springframework.ai.ollama.api.OllamaApi;\nimport org.springframework.ai.ollama.api.OllamaOptions;\nimport org.springframework.ai.ollama.management.ModelManagementOptions;\nimport org.springframework.ai.openai.OpenAiChatModel;\nimport org.springframework.ai.openai.OpenAiChatOptions;\nimport org.springframework.ai.openai.api.OpenAiApi;\nimport org.springframework.ai.qianfan.QianFanChatModel;\nimport org.springframework.ai.qianfan.QianFanChatOptions;\nimport org.springframework.ai.qianfan.api.QianFanApi;\nimport org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;\nimport org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatModel;\nimport org.springframework.ai.zhipuai.ZhiPuAiChatOptions;\nimport org.springframework.ai.zhipuai.api.ZhiPuAiApi;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.web.client.RestClient;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.impl.AiChatServiceImpl;\nimport top.sharehome.springbootinittemplate.config.ai.spring.service.chat.model.entity.*;\n\nimport java.util.List;\n\n/**\n * Spring AI Chat测试类\n *\n * @author AntonyCheng\n */\n@SpringBootTest\npublic class SpringChatTest {\n\n @Resource\n private AiChatServiceImpl aiChatService;\n\n /**\n * 测试DeepSeekChat\n */\n @Test\n public void testDeepSeekChat() {\n DeepSeekChatEntity entity = new DeepSeekChatEntity(\"deepseek-reasoner\", \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .restClientBuilder(RestClient.builder())\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OpenAIChat\n */\n @Test\n public void testOpenAiChat() {\n OpenAiChatEntity entity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OpenAiApi openAiApi = OpenAiApi.builder()\n .baseUrl(entity.getBaseUrl())\n .apiKey(new SimpleApiKey(entity.getApiKey()))\n .build();\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .openAiApi(openAiApi)\n .defaultOptions(OpenAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTemperature())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试OllamaChat\n */\n @Test\n public void testOllamaChat() {\n OllamaChatEntity entity = new OllamaChatEntity(\"deepseek-r1:8b\", \"http://localhost:11434\");\n OllamaApi ollamaApi = new OllamaApi(entity.getBaseUrl());\n OllamaChatModel chatModel = new OllamaChatModel(ollamaApi, OllamaOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build()\n , new DefaultToolCallingManager(ObservationRegistry.NOOP,\n new DelegatingToolCallbackResolver(List.of()),\n new DefaultToolExecutionExceptionProcessor(true)), ObservationRegistry.NOOP, ModelManagementOptions.builder().build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试ZhiPuAiChat\n */\n @Test\n public void testZhiPuAiChat() {\n ZhiPuAiChatEntity entity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n ZhiPuAiApi zhiPuAiApi = new ZhiPuAiApi(entity.getApiKey());\n ZhiPuAiChatModel chatModel = new ZhiPuAiChatModel(zhiPuAiApi, ZhiPuAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MoonshotChat\n */\n @Test\n public void testMoonshotChat() {\n MoonshotChatEntity entity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MoonshotApi moonshotApi = new MoonshotApi(entity.getApiKey());\n MoonshotChatModel chatModel = new MoonshotChatModel(moonshotApi, MoonshotChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MistralAiChat\n */\n @Test\n public void testMistralAiChat() {\n MistralAiChatEntity entity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n MistralAiApi mistralAiApi = new MistralAiApi(entity.getApiKey());\n MistralAiChatModel chatModel = MistralAiChatModel.builder()\n .mistralAiApi(mistralAiApi)\n .defaultOptions(MistralAiChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build())\n .build();\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试QianFanChat\n */\n @Test\n public void testQianFanChat() {\n QianFanChatEntity entity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n QianFanApi qianFanApi = new QianFanApi(entity.getApiKey(), entity.getSecretKey());\n QianFanChatModel chatModel = new QianFanChatModel(qianFanApi, QianFanChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试MinimaxChat\n */\n @Test\n public void testMiniMaxChat() {\n MiniMaxChatEntity entity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n MiniMaxApi miniMaxApi = new MiniMaxApi(entity.getApiKey());\n MiniMaxChatModel chatModel = new MiniMaxChatModel(miniMaxApi, MiniMaxChatOptions.builder()\n .model(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build());\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n /**\n * 测试AzureOpenAiChat\n */\n @Test\n public void testAzureOpenAiChat() {\n AzureOpenAiChatEntity entity = new AzureOpenAiChatEntity(\"gpt-35-turbo\", OpenAIServiceVersion.getLatest(), \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n OpenAIClientBuilder clientBuilder = new OpenAIClientBuilder()\n .credential(new AzureKeyCredential(entity.getApiKey()))\n .endpoint(entity.getEndpoint())\n .serviceVersion(entity.getModelVersion());\n AzureOpenAiChatModel chatModel = new AzureOpenAiChatModel(clientBuilder, AzureOpenAiChatOptions.builder()\n .deploymentName(entity.getModel())\n .temperature(entity.getTemperature())\n .topP(entity.getTopP())\n .build(), DefaultToolCallingManager.builder().build(), ObservationRegistry.NOOP);\n System.out.println(chatModel.call(\"你是谁?\"));\n }\n\n @Test\n public void testStringByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n System.out.println(aiChatService.chatString(deepSeekChatEntity, message));\n System.out.println(aiChatService.chatString(openAiChatEntity, message));\n System.out.println(aiChatService.chatString(ollamaChatEntity, message));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, message));\n System.out.println(aiChatService.chatString(moonshotChatEntity, message));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, message));\n System.out.println(aiChatService.chatString(qianFanChatEntity, message));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, message));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, message));\n }\n\n @Test\n public void testStreamByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n List deepseek = aiChatService.chatStream(deepSeekChatEntity, message).toList();\n for (String s : deepseek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, message).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, message).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, message).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List moonshot = aiChatService.chatStream(moonshotChatEntity, message).toList();\n for (String s : moonshot) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, message).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, message).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, message).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, message).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByString() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n String message = \"你是什么模型?\";\n aiChatService.chatFlux(deepSeekChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(moonshotChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, message).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n System.out.println(aiChatService.chatString(deepSeekChatEntity, messages));\n System.out.println(aiChatService.chatString(openAiChatEntity, messages));\n System.out.println(aiChatService.chatString(ollamaChatEntity, messages));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, messages));\n System.out.println(aiChatService.chatString(moonshotChatEntity, messages));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, messages));\n System.out.println(aiChatService.chatString(qianFanChatEntity, messages));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, messages));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, messages));\n }\n\n @Test\n public void testStreamByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, messages).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, messages).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, messages).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, messages).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List moonshot = aiChatService.chatStream(moonshotChatEntity, messages).toList();\n for (String s : moonshot) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, messages).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, messages).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, messages).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, messages).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByMessages() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Message[] messages = new Message[]{\n new SystemMessage(\"你是一个诚实的大语言模型,你一定要准确表达出你的真实意思\"),\n new UserMessage(\"你是什么模型?\")\n };\n aiChatService.chatFlux(deepSeekChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(moonshotChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, messages).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n @Test\n public void testStringByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n System.out.println(aiChatService.chatString(deepSeekChatEntity, prompt));\n System.out.println(aiChatService.chatString(openAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(ollamaChatEntity, prompt));\n System.out.println(aiChatService.chatString(zhiPuAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(moonshotChatEntity, prompt));\n System.out.println(aiChatService.chatString(mistralAiChatEntity, prompt));\n System.out.println(aiChatService.chatString(qianFanChatEntity, prompt));\n System.out.println(aiChatService.chatString(miniMaxChatEntity, prompt));\n System.out.println(aiChatService.chatString(azureOpenAiChatEntity, prompt));\n }\n\n @Test\n public void testStreamByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n List deepSeek = aiChatService.chatStream(deepSeekChatEntity, prompt).toList();\n for (String s : deepSeek) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List openAi = aiChatService.chatStream(openAiChatEntity, prompt).toList();\n for (String s : openAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List ollama = aiChatService.chatStream(ollamaChatEntity, prompt).toList();\n for (String s : ollama) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List zhiPuAi = aiChatService.chatStream(zhiPuAiChatEntity, prompt).toList();\n for (String s : zhiPuAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List moonshot = aiChatService.chatStream(moonshotChatEntity, prompt).toList();\n for (String s : moonshot) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List mistralAi = aiChatService.chatStream(mistralAiChatEntity, prompt).toList();\n for (String s : mistralAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List qianFan = aiChatService.chatStream(qianFanChatEntity, prompt).toList();\n for (String s : qianFan) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List miniMax = aiChatService.chatStream(miniMaxChatEntity, prompt).toList();\n for (String s : miniMax) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n System.out.println();\n List azureOpenAi = aiChatService.chatStream(azureOpenAiChatEntity, prompt).toList();\n for (String s : azureOpenAi) {\n System.out.println(s);\n try {\n Thread.sleep(200);\n } catch (InterruptedException e) {\n throw new RuntimeException(e);\n }\n }\n }\n\n @Test\n public void testFluxByPrompt() {\n DeepSeekChatEntity deepSeekChatEntity = new DeepSeekChatEntity(\"deepseek-r1\", \"sk-xxx\");\n OpenAiChatEntity openAiChatEntity = new OpenAiChatEntity(OpenAiApi.ChatModel.GPT_3_5_TURBO, \"sk-xxx\");\n OllamaChatEntity ollamaChatEntity = new OllamaChatEntity(\"qwen2.5:0.5b-instruct-fp16\", \"http://localhost:11434\");\n ZhiPuAiChatEntity zhiPuAiChatEntity = new ZhiPuAiChatEntity(ZhiPuAiApi.ChatModel.GLM_4_Flash.getName(), \"xxx.xxx\");\n MoonshotChatEntity moonshotChatEntity = new MoonshotChatEntity(MoonshotApi.ChatModel.MOONSHOT_V1_8K.getName(), \"sk-xxx\");\n MistralAiChatEntity mistralAiChatEntity = new MistralAiChatEntity(MistralAiApi.ChatModel.MINISTRAL_8B_LATEST.getName(), \"xxx\");\n QianFanChatEntity qianFanChatEntity = new QianFanChatEntity(QianFanApi.ChatModel.ERNIE_Speed_8K.getValue(), \"xxx\", \"xxx\");\n MiniMaxChatEntity miniMaxChatEntity = new MiniMaxChatEntity(MiniMaxApi.ChatModel.ABAB_6_5_Chat, \"xxx.xxx.xxx-xxx-xxx-xxx-xxx-xxx\");\n AzureOpenAiChatEntity azureOpenAiChatEntity = new AzureOpenAiChatEntity(\"gpt-4o-mini\", OpenAIServiceVersion.V2024_05_01_PREVIEW, \"xxx\", \"https://xxx-xxx-swedencentral.cognitiveservices.azure.com/\");\n Prompt prompt = new Prompt(\"你是什么模型?\");\n aiChatService.chatFlux(deepSeekChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(openAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(ollamaChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(zhiPuAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(moonshotChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(mistralAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(qianFanChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(miniMaxChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n aiChatService.chatFlux(azureOpenAiChatEntity, prompt).doOnNext(System.out::print).blockLast();\n System.out.println();\n }\n\n}\n"}}}}