diff --git a/agents-flex-llm/agents-flex-llm-qwen/src/test/java/com/agentsflex/llm/qwen/test/QwenTest.java b/agents-flex-llm/agents-flex-llm-qwen/src/test/java/com/agentsflex/llm/qwen/test/QwenTest.java new file mode 100644 index 0000000..201e0f8 --- /dev/null +++ b/agents-flex-llm/agents-flex-llm-qwen/src/test/java/com/agentsflex/llm/qwen/test/QwenTest.java @@ -0,0 +1,126 @@ +package com.agentsflex.llm.qwen.test; + +import com.agentsflex.core.document.Document; +import com.agentsflex.core.llm.ChatOptions; +import com.agentsflex.core.llm.Llm; +import com.agentsflex.core.llm.exception.LlmException; +import com.agentsflex.core.llm.response.AiMessageResponse; +import com.agentsflex.core.message.AiMessage; +import com.agentsflex.core.prompt.FunctionPrompt; +import com.agentsflex.core.store.VectorData; +import com.agentsflex.core.util.LogUtil; +import com.agentsflex.llm.qwen.QwenChatOptions; +import com.agentsflex.llm.qwen.QwenChatOptions.SearchOptions; +import com.agentsflex.llm.qwen.QwenLlm; +import com.agentsflex.llm.qwen.QwenLlmConfig; +import org.junit.Test; + +public class QwenTest { + + public static void main(String[] args) throws InterruptedException { + QwenLlmConfig config = new QwenLlmConfig(); + + //https://bailian.console.aliyun.com/?apiKey=1#/api-key + config.setApiKey("sk-28a6be3236****"); + config.setModel("qwen-plus"); + + Llm llm = new QwenLlm(config); + llm.chatStream("请写一个小兔子战胜大灰狼的故事", (context, response) -> { + AiMessage message = response.getMessage(); + LogUtil.println(">>>> " + message.getContent()); + }); + + Thread.sleep(10000); + } + + @Test(expected = LlmException.class) + public void testForcedSearch() throws InterruptedException { + QwenLlmConfig config = new QwenLlmConfig(); + config.setApiKey("sk-28a6be3236****"); + config.setModel("qwen-max"); + + Llm llm = new QwenLlm(config); + QwenChatOptions options = new QwenChatOptions(); + options.setEnableSearch(true); + options.setSearchOptions(new SearchOptions().setForcedSearch(true)); + + String responseStr = llm.chat("今天是几号?", options); + + System.out.println(responseStr); + } + + @Test + public void testFunctionCalling() throws InterruptedException { + QwenLlmConfig config = new QwenLlmConfig(); + config.setApiKey("sk-28a6be3236****"); + config.setModel("qwen-turbo"); + + Llm llm = new QwenLlm(config); + + FunctionPrompt prompt = new FunctionPrompt("今天北京的天气怎么样", WeatherFunctions.class); + AiMessageResponse response = llm.chat(prompt); + + System.out.println(response.callFunctions()); + // "Today it will be dull and overcast in 北京" + } + + @Test + public void testEmbedding() throws InterruptedException { + QwenLlmConfig config = new QwenLlmConfig(); + config.setApiKey("sk-28a6be3236****"); + config.setModel("qwen-turbo"); + + Llm llm = new QwenLlm(config); + VectorData vectorData = llm.embed(Document.of("test")); + + System.out.println(vectorData); + } + + /** + * 动态替换模型 + */ + @Test + public void testDynamicModel() throws InterruptedException { + // 默认模型 + QwenLlmConfig config = new QwenLlmConfig(); + config.setApiKey("sk-28a6be3236****"); + config.setModel("qwen-turbo"); + + // 运行时动态替换模型 + ChatOptions options = new QwenChatOptions(); + options.setModel("deepseek-r1"); + + Llm llm = new QwenLlm(config); + llm.chatStream("请写一个小兔子战胜大灰狼的故事", (context, response) -> { + AiMessage message = response.getMessage(); + System.err.println(message.getReasoningContent()); + System.out.println(message.getFullContent()); + System.out.println(); + }, options); + Thread.sleep(10000); + } + + /** + * 测试千问3 开启思考模式的开关 + */ + @Test + public void testQwen3Thinking() throws InterruptedException { + QwenLlmConfig config = new QwenLlmConfig(); + config.setApiKey("sk-28a6be3236****"); + config.setModel("qwen3-235b-a22b"); + + Llm llm = new QwenLlm(config); + QwenChatOptions options = new QwenChatOptions(); + options.setEnableThinking(false); + //options.setThinkingBudget(1024); + + llm.chatStream("你是谁", (context, response) -> { + AiMessage message = response.getMessage(); + System.err.println(message.getReasoningContent()); + System.out.println(message.getFullContent()); + System.out.println(); + }, options); + Thread.sleep(10000); + } + +}