This commit is contained in:
Looly 2025-04-01 16:57:54 +08:00
parent b7c3659f64
commit 17baf2e388
7 changed files with 159 additions and 107 deletions

View File

@ -44,13 +44,18 @@ public class DeepSeekServiceImpl extends BaseAIService implements DeepSeekServic
//余额查询 //余额查询
private final String BALANCE_ENDPOINT = "/user/balance"; private final String BALANCE_ENDPOINT = "/user/balance";
/**
* 构造函数
*
* @param config AI配置
*/
public DeepSeekServiceImpl(final AIConfig config) { public DeepSeekServiceImpl(final AIConfig config) {
//初始化DeepSeek客户端 //初始化DeepSeek客户端
super(config); super(config);
} }
@Override @Override
public String chat(String prompt) { public String chat(final String prompt) {
// 定义消息结构 // 定义消息结构
final List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system", "You are a helpful assistant")); messages.add(new Message("system", "You are a helpful assistant"));
@ -60,27 +65,27 @@ public class DeepSeekServiceImpl extends BaseAIService implements DeepSeekServic
@Override @Override
public String chat(final List<Message> messages) { public String chat(final List<Message> messages) {
String paramJson = buildChatRequestBody(messages); final String paramJson = buildChatRequestBody(messages);
Response response = sendPost(CHAT_ENDPOINT, paramJson); final Response response = sendPost(CHAT_ENDPOINT, paramJson);
return response.bodyStr(); return response.bodyStr();
} }
@Override @Override
public String beta(String prompt) { public String beta(final String prompt) {
String paramJson = buildBetaRequestBody(prompt); final String paramJson = buildBetaRequestBody(prompt);
Response response = sendPost(BETA_ENDPOINT, paramJson); final Response response = sendPost(BETA_ENDPOINT, paramJson);
return response.bodyStr(); return response.bodyStr();
} }
@Override @Override
public String models() { public String models() {
Response response = sendGet(MODELS_ENDPOINT); final Response response = sendGet(MODELS_ENDPOINT);
return response.bodyStr(); return response.bodyStr();
} }
@Override @Override
public String balance() { public String balance() {
Response response = sendGet(BALANCE_ENDPOINT); final Response response = sendGet(BALANCE_ENDPOINT);
return response.bodyStr(); return response.bodyStr();
} }
@ -97,7 +102,7 @@ public class DeepSeekServiceImpl extends BaseAIService implements DeepSeekServic
} }
// 构建beta请求体 // 构建beta请求体
private String buildBetaRequestBody(String prompt) { private String buildBetaRequestBody(final String prompt) {
// 定义消息结构 // 定义消息结构
//使用JSON工具 //使用JSON工具
final Map<String, Object> paramMap = new HashMap<>(); final Map<String, Object> paramMap = new HashMap<>();

View File

@ -29,13 +29,13 @@ class AIServiceFactoryTest {
@Test @Test
void getAIService() { void getAIService() {
AIService aiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build()); final AIService aiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build());
assertNotNull(aiService); assertNotNull(aiService);
} }
@Test @Test
void testGetAIService() { void testGetAIService() {
DeepSeekService deepSeekService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), DeepSeekService.class); final DeepSeekService deepSeekService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), DeepSeekService.class);
assertNotNull(deepSeekService); assertNotNull(deepSeekService);
} }
} }

View File

@ -36,52 +36,52 @@ class AIUtilTest {
@Test @Test
void getAIService() { void getAIService() {
DeepSeekService deepSeekService = AIUtil.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), DeepSeekService.class); final DeepSeekService deepSeekService = AIUtil.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), DeepSeekService.class);
assertNotNull(deepSeekService); assertNotNull(deepSeekService);
} }
@Test @Test
void testGetAIService() { void testGetAIService() {
AIService aiService = AIUtil.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()).setApiKey(key).build()); final AIService aiService = AIUtil.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()).setApiKey(key).build());
assertNotNull(aiService); assertNotNull(aiService);
} }
@Test @Test
void getDeepSeekService() { void getDeepSeekService() {
DeepSeekService deepSeekService = AIUtil.getDeepSeekService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build()); final DeepSeekService deepSeekService = AIUtil.getDeepSeekService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build());
assertNotNull(deepSeekService); assertNotNull(deepSeekService);
} }
@Test @Test
void getDoubaoService() { void getDoubaoService() {
DoubaoService doubaoService = AIUtil.getDoubaoService(new AIConfigBuilder(ModelName.DOUBAO.getValue()).setApiKey(key).build()); final DoubaoService doubaoService = AIUtil.getDoubaoService(new AIConfigBuilder(ModelName.DOUBAO.getValue()).setApiKey(key).build());
assertNotNull(doubaoService); assertNotNull(doubaoService);
} }
@Test @Test
void getGrokService() { void getGrokService() {
GrokService grokService = AIUtil.getGrokService(new AIConfigBuilder(ModelName.GROK.getValue()).setApiKey(key).build()); final GrokService grokService = AIUtil.getGrokService(new AIConfigBuilder(ModelName.GROK.getValue()).setApiKey(key).build());
assertNotNull(grokService); assertNotNull(grokService);
} }
@Test @Test
void getOpenAIService() { void getOpenAIService() {
OpenaiService openAIService = AIUtil.getOpenAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()).setApiKey(key).build()); final OpenaiService openAIService = AIUtil.getOpenAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()).setApiKey(key).build());
assertNotNull(openAIService); assertNotNull(openAIService);
} }
@Test @Test
void chat() { void chat() {
String chat = AIUtil.chat(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), "写一首赞美我的诗"); final String chat = AIUtil.chat(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), "写一首赞美我的诗");
assertNotNull(chat); assertNotNull(chat);
} }
@Test @Test
void testChat() { void testChat() {
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是财神爷,只会说“我是财神”")); messages.add(new Message("system","你是财神爷,只会说“我是财神”"));
messages.add(new Message("user","你是谁啊?")); messages.add(new Message("user","你是谁啊?"));
String chat = AIUtil.chat(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), messages); final String chat = AIUtil.chat(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(), messages);
System.out.println(chat); System.out.println(chat);
} }
} }

View File

@ -20,6 +20,7 @@ import org.dromara.hutool.ai.AIServiceFactory;
import org.dromara.hutool.ai.ModelName; import org.dromara.hutool.ai.ModelName;
import org.dromara.hutool.ai.core.AIConfigBuilder; import org.dromara.hutool.ai.core.AIConfigBuilder;
import org.dromara.hutool.ai.core.Message; import org.dromara.hutool.ai.core.Message;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.ArrayList; import java.util.ArrayList;
@ -31,35 +32,40 @@ class DeepSeekServiceTest {
DeepSeekService deepSeekService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(),DeepSeekService.class); DeepSeekService deepSeekService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DEEPSEEK.getValue()).setApiKey(key).build(),DeepSeekService.class);
@Test @Test
@Disabled
void chat(){ void chat(){
String chat = deepSeekService.chat("写一个疯狂星期四广告词"); final String chat = deepSeekService.chat("写一个疯狂星期四广告词");
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void testChat(){ void testChat(){
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话")); messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话"));
messages.add(new Message("user","给我说一个笑话")); messages.add(new Message("user","给我说一个笑话"));
String chat = deepSeekService.chat(messages); final String chat = deepSeekService.chat(messages);
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void beta() { void beta() {
String beta = deepSeekService.beta("写一个疯狂星期四广告词"); final String beta = deepSeekService.beta("写一个疯狂星期四广告词");
System.out.println(beta); System.out.println(beta);
} }
@Test @Test
@Disabled
void models() { void models() {
String models = deepSeekService.models(); final String models = deepSeekService.models();
System.out.println(models); System.out.println(models);
} }
@Test @Test
@Disabled
void balance() { void balance() {
String balance = deepSeekService.balance(); final String balance = deepSeekService.balance();
System.out.println(balance); System.out.println(balance);
} }
} }

View File

@ -22,6 +22,7 @@ import org.dromara.hutool.ai.Models;
import org.dromara.hutool.ai.core.AIConfigBuilder; import org.dromara.hutool.ai.core.AIConfigBuilder;
import org.dromara.hutool.ai.core.Message; import org.dromara.hutool.ai.core.Message;
import org.dromara.hutool.swing.img.ImgUtil; import org.dromara.hutool.swing.img.ImgUtil;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.awt.*; import java.awt.*;
@ -35,143 +36,159 @@ class DoubaoServiceTest {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()).setModel(Models.Doubao.DOUBAO_1_5_LITE_32K.getModel()).setApiKey(key).build(), DoubaoService.class); DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()).setModel(Models.Doubao.DOUBAO_1_5_LITE_32K.getModel()).setApiKey(key).build(), DoubaoService.class);
@Test @Test
@Disabled
void chat(){ void chat(){
String chat = doubaoService.chat("写一个疯狂星期四广告词"); final String chat = doubaoService.chat("写一个疯狂星期四广告词");
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void testChat(){ void testChat(){
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话")); messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话"));
messages.add(new Message("user","给我说一个笑话")); messages.add(new Message("user","给我说一个笑话"));
String chat = doubaoService.chat(messages); final String chat = doubaoService.chat(messages);
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void chatVision() { void chatVision() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel(Models.Doubao.DOUBAO_1_5_VISION_PRO_32K.getModel()).build(), DoubaoService.class); .setApiKey(key).setModel(Models.Doubao.DOUBAO_1_5_VISION_PRO_32K.getModel()).build(), DoubaoService.class);
String base64 = ImgUtil.toBase64DataUri(Toolkit.getDefaultToolkit().createImage("your imageUrl"), "png"); final String base64 = ImgUtil.toBase64DataUri(Toolkit.getDefaultToolkit().createImage("your imageUrl"), "png");
String chatVision = doubaoService.chatVision("图片上有些什么?", Arrays.asList(base64)); final String chatVision = doubaoService.chatVision("图片上有些什么?", Arrays.asList(base64));
System.out.println(chatVision); System.out.println(chatVision);
} }
@Test @Test
@Disabled
void testChatVision() { void testChatVision() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel(Models.Doubao.DOUBAO_1_5_VISION_PRO_32K.getModel()).build(), DoubaoService.class); .setApiKey(key).setModel(Models.Doubao.DOUBAO_1_5_VISION_PRO_32K.getModel()).build(), DoubaoService.class);
String chatVision = doubaoService.chatVision("图片上有些什么?", Arrays.asList("https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544"),DoubaoCommon.DoubaoVision.HIGH.getDetail()); final String chatVision = doubaoService.chatVision("图片上有些什么?", Arrays.asList("https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544"),DoubaoCommon.DoubaoVision.HIGH.getDetail());
System.out.println(chatVision); System.out.println(chatVision);
} }
@Test @Test
@Disabled
void videoTasks() { void videoTasks() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class);
String videoTasks = doubaoService.videoTasks("生成一段动画视频,主角是大耳朵图图,一个活泼可爱的小男孩。视频中图图在公园里玩耍," + final String videoTasks = doubaoService.videoTasks("生成一段动画视频,主角是大耳朵图图,一个活泼可爱的小男孩。视频中图图在公园里玩耍," +
"画面采用明亮温暖的卡通风格,色彩鲜艳,动作流畅。背景音乐轻快活泼,带有冒险感,音效包括鸟叫声、欢笑声和山洞回声。", "https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544"); "画面采用明亮温暖的卡通风格,色彩鲜艳,动作流畅。背景音乐轻快活泼,带有冒险感,音效包括鸟叫声、欢笑声和山洞回声。", "https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544");
System.out.println(videoTasks);//cgt-20250306170051-6r9gk System.out.println(videoTasks);//cgt-20250306170051-6r9gk
} }
@Test @Test
@Disabled
void getVideoTasksInfo() { void getVideoTasksInfo() {
//cgt-20250306170051-6r9gk //cgt-20250306170051-6r9gk
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).build(), DoubaoService.class); .setApiKey(key).build(), DoubaoService.class);
String videoTasksInfo = doubaoService.getVideoTasksInfo("cgt-20250306170051-6r9gk"); final String videoTasksInfo = doubaoService.getVideoTasksInfo("cgt-20250306170051-6r9gk");
System.out.println(videoTasksInfo); System.out.println(videoTasksInfo);
} }
@Test @Test
@Disabled
void embeddingText() { void embeddingText() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel(Models.Doubao.DOUBAO_EMBEDDING_TEXT_240715.getModel()).build(), DoubaoService.class); .setApiKey(key).setModel(Models.Doubao.DOUBAO_EMBEDDING_TEXT_240715.getModel()).build(), DoubaoService.class);
String embeddingText = doubaoService.embeddingText(new String[]{"阿斯顿", "马丁"}); final String embeddingText = doubaoService.embeddingText(new String[]{"阿斯顿", "马丁"});
System.out.println(embeddingText); System.out.println(embeddingText);
} }
@Test @Test
@Disabled
void embeddingVision() { void embeddingVision() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel(Models.Doubao.DOUBAO_EMBEDDING_VISION.getModel()).build(), DoubaoService.class); .setApiKey(key).setModel(Models.Doubao.DOUBAO_EMBEDDING_VISION.getModel()).build(), DoubaoService.class);
String embeddingVision = doubaoService.embeddingVision("天空好难", "https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544"); final String embeddingVision = doubaoService.embeddingVision("天空好难", "https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544");
System.out.println(embeddingVision); System.out.println(embeddingVision);
} }
@Test @Test
@Disabled
void botsChat() { void botsChat() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your bots id").build(), DoubaoService.class); .setApiKey(key).setModel("your bots id").build(), DoubaoService.class);
ArrayList<Message> messages = new ArrayList<>(); final ArrayList<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是什么都可以")); messages.add(new Message("system","你是什么都可以"));
messages.add(new Message("user","你想做些什么")); messages.add(new Message("user","你想做些什么"));
String botsChat = doubaoService.botsChat(messages); final String botsChat = doubaoService.botsChat(messages);
System.out.println(botsChat); System.out.println(botsChat);
} }
@Test @Test
@Disabled
void tokenization() { void tokenization() {
String tokenization = doubaoService.tokenization(new String[]{"阿斯顿", "马丁"}); final String tokenization = doubaoService.tokenization(new String[]{"阿斯顿", "马丁"});
System.out.println(tokenization); System.out.println(tokenization);
} }
@Test @Test
@Disabled
void batchChat() { void batchChat() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class);
String batchChat = doubaoService.batchChat("写首歌词"); final String batchChat = doubaoService.batchChat("写首歌词");
System.out.println(batchChat); System.out.println(batchChat);
} }
@Test @Test
@Disabled
void testBatchChat() { void testBatchChat() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class);
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师")); messages.add(new Message("system","你是个抽象大师"));
messages.add(new Message("user","写一个KFC的抽象广告")); messages.add(new Message("user","写一个KFC的抽象广告"));
String batchChat = doubaoService.batchChat(messages); final String batchChat = doubaoService.batchChat(messages);
System.out.println(batchChat); System.out.println(batchChat);
} }
@Test @Test
@Disabled
void createContext() { void createContext() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class);
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师,你真的很抽象")); messages.add(new Message("system","你是个抽象大师,你真的很抽象"));
String context = doubaoService.createContext(messages);//ctx-20250307092153-cvslm final String context = doubaoService.createContext(messages);//ctx-20250307092153-cvslm
System.out.println(context); System.out.println(context);
} }
@Test @Test
@Disabled
void testCreateContext() { void testCreateContext() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class);
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师,你真的很抽象")); messages.add(new Message("system","你是个抽象大师,你真的很抽象"));
String context = doubaoService.createContext(messages,DoubaoCommon.DoubaoContext.COMMON_PREFIX.getMode()); final String context = doubaoService.createContext(messages,DoubaoCommon.DoubaoContext.COMMON_PREFIX.getMode());
System.out.println(context);//ctx-20250307092153-cvslm System.out.println(context);//ctx-20250307092153-cvslm
} }
@Test @Test
@Disabled
void chatContext() { void chatContext() {
//ctx-20250307092153-cvslm //ctx-20250307092153-cvslm
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("eyour Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("eyour Endpoint ID").build(), DoubaoService.class);
String chatContext = doubaoService.chatContext("你是谁?", "ctx-20250307092153-cvslm"); final String chatContext = doubaoService.chatContext("你是谁?", "ctx-20250307092153-cvslm");
System.out.println(chatContext); System.out.println(chatContext);
} }
@Test @Test
@Disabled
void testChatContext() { void testChatContext() {
DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue()) final DoubaoService doubaoService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.DOUBAO.getValue())
.setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class); .setApiKey(key).setModel("your Endpoint ID").build(), DoubaoService.class);
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("user","你怎么看待意大利面拌水泥?")); messages.add(new Message("user","你怎么看待意大利面拌水泥?"));
String chatContext = doubaoService.chatContext(messages, "ctx-20250307092153-cvslm"); final String chatContext = doubaoService.chatContext(messages, "ctx-20250307092153-cvslm");
System.out.println(chatContext); System.out.println(chatContext);
} }
} }

View File

@ -22,6 +22,7 @@ import org.dromara.hutool.ai.Models;
import org.dromara.hutool.ai.core.AIConfigBuilder; import org.dromara.hutool.ai.core.AIConfigBuilder;
import org.dromara.hutool.ai.core.Message; import org.dromara.hutool.ai.core.Message;
import org.dromara.hutool.swing.img.ImgUtil; import org.dromara.hutool.swing.img.ImgUtil;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.awt.*; import java.awt.*;
@ -38,74 +39,85 @@ class GrokServiceTest {
@Test @Test
@Disabled
void chat(){ void chat(){
String chat = grokService.chat("写一个疯狂星期四广告词"); final String chat = grokService.chat("写一个疯狂星期四广告词");
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void testChat(){ void testChat(){
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话")); messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话"));
messages.add(new Message("user","给我说一个笑话")); messages.add(new Message("user","给我说一个笑话"));
String chat = grokService.chat(messages); final String chat = grokService.chat(messages);
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void message() { void message() {
String message = grokService.message("给我一个KFC的广告词", 4096); final String message = grokService.message("给我一个KFC的广告词", 4096);
System.out.println(message); System.out.println(message);
} }
@Test @Test
@Disabled
void chatVision() { void chatVision() {
GrokService grokService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.GROK.getValue()).setModel(Models.Grok.GROK_2_VISION_1212.getModel()).setApiKey(key).build(), GrokService.class); final GrokService grokService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.GROK.getValue()).setModel(Models.Grok.GROK_2_VISION_1212.getModel()).setApiKey(key).build(), GrokService.class);
String base64 = ImgUtil.toBase64DataUri(Toolkit.getDefaultToolkit().createImage("your imageUrl"), "png"); final String base64 = ImgUtil.toBase64DataUri(Toolkit.getDefaultToolkit().createImage("your imageUrl"), "png");
String chatVision = grokService.chatVision("图片上有些什么?", Arrays.asList(base64)); final String chatVision = grokService.chatVision("图片上有些什么?", Arrays.asList(base64));
System.out.println(chatVision); System.out.println(chatVision);
} }
@Test @Test
@Disabled
void testChatVision() { void testChatVision() {
GrokService grokService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.GROK.getValue()).setModel(Models.Grok.GROK_2_VISION_1212.getModel()).setApiKey(key).build(), GrokService.class); final GrokService grokService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.GROK.getValue()).setModel(Models.Grok.GROK_2_VISION_1212.getModel()).setApiKey(key).build(), GrokService.class);
String chatVision = grokService.chatVision("图片上有些什么?", Arrays.asList("https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544")); final String chatVision = grokService.chatVision("图片上有些什么?", Arrays.asList("https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544"));
System.out.println(chatVision); System.out.println(chatVision);
} }
@Test @Test
@Disabled
void models() { void models() {
String models = grokService.models(); final String models = grokService.models();
assertNotNull(models); assertNotNull(models);
} }
@Test @Test
@Disabled
void getModel() { void getModel() {
String model = grokService.getModel(""); final String model = grokService.getModel("");
assertNotNull(model); assertNotNull(model);
} }
@Test @Test
@Disabled
void languageModels() { void languageModels() {
String languageModels = grokService.languageModels(); final String languageModels = grokService.languageModels();
assertNotNull(languageModels); assertNotNull(languageModels);
} }
@Test @Test
@Disabled
void getLanguageModel() { void getLanguageModel() {
String language = grokService.getLanguageModel(""); final String language = grokService.getLanguageModel("");
assertNotNull(language); assertNotNull(language);
} }
@Test @Test
@Disabled
void tokenizeText() { void tokenizeText() {
String tokenizeText = grokService.tokenizeText(key); final String tokenizeText = grokService.tokenizeText(key);
assertNotNull(tokenizeText); assertNotNull(tokenizeText);
} }
@Test @Test
@Disabled
void deferredCompletion() { void deferredCompletion() {
String deferred = grokService.deferredCompletion(key); final String deferred = grokService.deferredCompletion(key);
assertNotNull(deferred); assertNotNull(deferred);
} }
} }

View File

@ -22,6 +22,7 @@ import org.dromara.hutool.ai.Models;
import org.dromara.hutool.ai.core.AIConfigBuilder; import org.dromara.hutool.ai.core.AIConfigBuilder;
import org.dromara.hutool.ai.core.Message; import org.dromara.hutool.ai.core.Message;
import org.dromara.hutool.core.io.file.FileUtil; import org.dromara.hutool.core.io.file.FileUtil;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.io.File; import java.io.File;
@ -42,112 +43,123 @@ class OpenaiServiceTest {
@Test @Test
@Disabled
void chat(){ void chat(){
String chat = openaiService.chat("写一个疯狂星期四广告词"); final String chat = openaiService.chat("写一个疯狂星期四广告词");
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void testChat(){ void testChat(){
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话")); messages.add(new Message("system","你是个抽象大师,会说很抽象的话,最擅长说抽象的笑话"));
messages.add(new Message("user","给我说一个笑话")); messages.add(new Message("user","给我说一个笑话"));
String chat = openaiService.chat(messages); final String chat = openaiService.chat(messages);
System.out.println(chat); System.out.println(chat);
} }
@Test @Test
@Disabled
void chatVision() { void chatVision() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.GPT_4O_MINI.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.GPT_4O_MINI.getModel()).build(), OpenaiService.class);
String chatVision = openaiService.chatVision("图片上有些什么?", Arrays.asList("https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544","https://img2.baidu.com/it/u=1682510685,1244554634&fm=253&fmt=auto&app=138&f=JPEG?w=803&h=800")); final String chatVision = openaiService.chatVision("图片上有些什么?", Arrays.asList("https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544","https://img2.baidu.com/it/u=1682510685,1244554634&fm=253&fmt=auto&app=138&f=JPEG?w=803&h=800"));
System.out.println(chatVision); System.out.println(chatVision);
} }
@Test @Test
@Disabled
void imagesGenerations() { void imagesGenerations() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.DALL_E_3.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.DALL_E_3.getModel()).build(), OpenaiService.class);
String imagesGenerations = openaiService.imagesGenerations("一位年轻的宇航员站在未来感十足的太空站内,透过巨大的弧形落地窗凝望浩瀚宇宙。窗外,璀璨的星河与五彩斑斓的星云交织,远处隐约可见未知星球的轮廓,仿佛在召唤着探索的脚步。宇航服上的呼吸灯与透明显示屏上的星图交相辉映,象征着人类科技与宇宙奥秘的碰撞。画面深邃而神秘,充满对未知的渴望与无限可能的想象。"); final String imagesGenerations = openaiService.imagesGenerations("一位年轻的宇航员站在未来感十足的太空站内,透过巨大的弧形落地窗凝望浩瀚宇宙。窗外,璀璨的星河与五彩斑斓的星云交织,远处隐约可见未知星球的轮廓,仿佛在召唤着探索的脚步。宇航服上的呼吸灯与透明显示屏上的星图交相辉映,象征着人类科技与宇宙奥秘的碰撞。画面深邃而神秘,充满对未知的渴望与无限可能的想象。");
System.out.println(imagesGenerations); System.out.println(imagesGenerations);
//https://oaidalleapiprodscus.blob.core.windows.net/private/org-l99H6T0zCZejctB2TqdYrXFB/user-LilDVU1V8cUxJYwVAGRkUwYd/img-yA9kNatHnBiUHU5lZGim1hP2.png?st=2025-03-07T01%3A04%3A18Z&se=2025-03-07T03%3A04%3A18Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=d505667d-d6c1-4a0a-bac7-5c84a87759f8&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2025-03-06T15%3A04%3A42Z&ske=2025-03-07T15%3A04%3A42Z&sks=b&skv=2024-08-04&sig=rjcRzC5U7Y3pEDZ4ME0CiviAPdIpoGO2rRTXw3m8rHw%3D //https://oaidalleapiprodscus.blob.core.windows.net/private/org-l99H6T0zCZejctB2TqdYrXFB/user-LilDVU1V8cUxJYwVAGRkUwYd/img-yA9kNatHnBiUHU5lZGim1hP2.png?st=2025-03-07T01%3A04%3A18Z&se=2025-03-07T03%3A04%3A18Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=d505667d-d6c1-4a0a-bac7-5c84a87759f8&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2025-03-06T15%3A04%3A42Z&ske=2025-03-07T15%3A04%3A42Z&sks=b&skv=2024-08-04&sig=rjcRzC5U7Y3pEDZ4ME0CiviAPdIpoGO2rRTXw3m8rHw%3D
} }
@Test @Test
@Disabled
void imagesEdits() { void imagesEdits() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.DALL_E_2.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.DALL_E_2.getModel()).build(), OpenaiService.class);
File file = FileUtil.file("your imgUrl"); final File file = FileUtil.file("your imgUrl");
String imagesEdits = openaiService.imagesEdits("茂密的森林中,有一只九色鹿若隐若现",file); final String imagesEdits = openaiService.imagesEdits("茂密的森林中,有一只九色鹿若隐若现",file);
System.out.println(imagesEdits); System.out.println(imagesEdits);
} }
@Test @Test
@Disabled
void imagesVariations() { void imagesVariations() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.DALL_E_2.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.DALL_E_2.getModel()).build(), OpenaiService.class);
File file = FileUtil.file("your imgUrl"); final File file = FileUtil.file("your imgUrl");
String imagesVariations = openaiService.imagesVariations(file); final String imagesVariations = openaiService.imagesVariations(file);
System.out.println(imagesVariations); System.out.println(imagesVariations);
} }
@Test @Test
@Disabled
void textToSpeech() { void textToSpeech() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.TTS_1_HD.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.TTS_1_HD.getModel()).build(), OpenaiService.class);
InputStream inputStream = openaiService.textToSpeech("万里山河一夜白,\n" + final InputStream inputStream = openaiService.textToSpeech("万里山河一夜白,\n" +
"千峰尽染玉龙哀。\n" + "千峰尽染玉龙哀。\n" +
"长风卷起琼花碎,\n" + "长风卷起琼花碎,\n" +
"直上九霄揽月来。", OpenaiCommon.OpenaiSpeech.NOVA); "直上九霄揽月来。", OpenaiCommon.OpenaiSpeech.NOVA);
String filePath = "your filePath"; final String filePath = "your filePath";
Path path = Paths.get(filePath); final Path path = Paths.get(filePath);
try (FileOutputStream outputStream = new FileOutputStream(filePath)) { try (final FileOutputStream outputStream = new FileOutputStream(filePath)) {
Files.createDirectories(path.getParent()); Files.createDirectories(path.getParent());
byte[] buffer = new byte[1024]; final byte[] buffer = new byte[1024];
int bytesRead; int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) { while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead); outputStream.write(buffer, 0, bytesRead);
} }
} catch (IOException e) { } catch (final IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
@Test @Test
@Disabled
void speechToText() { void speechToText() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.WHISPER_1.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.WHISPER_1.getModel()).build(), OpenaiService.class);
File file = FileUtil.file("your filePath"); final File file = FileUtil.file("your filePath");
String speechToText = openaiService.speechToText(file); final String speechToText = openaiService.speechToText(file);
System.out.println(speechToText); System.out.println(speechToText);
} }
@Test @Test
@Disabled
void embeddingText() { void embeddingText() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.TEXT_EMBEDDING_3_SMALL.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.TEXT_EMBEDDING_3_SMALL.getModel()).build(), OpenaiService.class);
String embeddingText = openaiService.embeddingText("萬里山河一夜白,千峰盡染玉龍哀,長風捲起瓊花碎,直上九霄闌月來"); final String embeddingText = openaiService.embeddingText("萬里山河一夜白,千峰盡染玉龍哀,長風捲起瓊花碎,直上九霄闌月來");
System.out.println(embeddingText); System.out.println(embeddingText);
} }
@Test @Test
@Disabled
void moderations() { void moderations() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.OMNI_MODERATION_LATEST.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.OMNI_MODERATION_LATEST.getModel()).build(), OpenaiService.class);
String moderations = openaiService.moderations("你要杀人", "https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544"); final String moderations = openaiService.moderations("你要杀人", "https://img2.baidu.com/it/u=862000265,4064861820&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1544");
System.out.println(moderations); System.out.println(moderations);
} }
@Test @Test
@Disabled
void chatReasoning() { void chatReasoning() {
OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue()) final OpenaiService openaiService = AIServiceFactory.getAIService(new AIConfigBuilder(ModelName.OPENAI.getValue())
.setApiKey(key).setModel(Models.Openai.O3_MINI.getModel()).build(), OpenaiService.class); .setApiKey(key).setModel(Models.Openai.O3_MINI.getModel()).build(), OpenaiService.class);
List<Message> messages = new ArrayList<>(); final List<Message> messages = new ArrayList<>();
messages.add(new Message("system","你是现代抽象家")); messages.add(new Message("system","你是现代抽象家"));
messages.add(new Message("user","给我一个KFC疯狂星期四的文案")); messages.add(new Message("user","给我一个KFC疯狂星期四的文案"));
String chatReasoning = openaiService.chatReasoning(messages, OpenaiCommon.OpenaiReasoning.HIGH.getEffort()); final String chatReasoning = openaiService.chatReasoning(messages, OpenaiCommon.OpenaiReasoning.HIGH.getEffort());
System.out.println(chatReasoning); System.out.println(chatReasoning);
} }
} }