From 551c0db75da529b3390c8203201215b8b63aff54 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Sun, 18 May 2025 10:10:57 +0800 Subject: [PATCH] 'commit' --- dsAiSupport/pom.xml | 6 - .../Util/DouBao/CVGetResultDemo.java | 30 ---- .../Util/DouBao/CVSubmitTaskDemo.java | 35 ---- .../dsideal/aiSupport/Util/HttpClient.java | 69 -------- .../HuoShanFangZhou/Kit/HuoShanCommon.java | 10 ++ .../Util/HuoShanFangZhou/Txt2Img.java | 162 ++++++++++++++++++ .../target/classes/application_pro.yaml | 34 +--- 7 files changed, 173 insertions(+), 173 deletions(-) delete mode 100644 dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVGetResultDemo.java delete mode 100644 dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVSubmitTaskDemo.java create mode 100644 dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Kit/HuoShanCommon.java create mode 100644 dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Txt2Img.java diff --git a/dsAiSupport/pom.xml b/dsAiSupport/pom.xml index 9d5de3c0..61e9a91a 100644 --- a/dsAiSupport/pom.xml +++ b/dsAiSupport/pom.xml @@ -53,12 +53,6 @@ commons-io 2.15.0 - - - com.volcengine - volc-sdk-java - 1.0.221 - com.alibaba diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVGetResultDemo.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVGetResultDemo.java deleted file mode 100644 index 9ea22794..00000000 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVGetResultDemo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dsideal.aiSupport.Util.DouBao; - - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.volcengine.service.visual.IVisualService; -import com.volcengine.service.visual.impl.VisualServiceImpl; - -public class CVGetResultDemo { - - public static void main(String[] args) { - IVisualService visualService = VisualServiceImpl.getInstance(); - // call below method if you dont set ak and sk in ~/.vcloud/config - visualService.setAccessKey("your ak"); - visualService.setSecretKey("your sk"); - - JSONObject req=new JSONObject(); - //请求Body(查看接口文档请求参数-请求示例,将请求参数内容复制到此) - req.put("req_key",""); - req.put("",""); - - try { - Object response = visualService.cvGetResult(req); - System.out.println(JSON.toJSONString(response)); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} \ No newline at end of file diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVSubmitTaskDemo.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVSubmitTaskDemo.java deleted file mode 100644 index 5b34343b..00000000 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/DouBao/CVSubmitTaskDemo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dsideal.aiSupport.Util.DouBao; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.dsideal.aiSupport.AiSupportApplication; -import com.volcengine.service.visual.IVisualService; -import com.volcengine.service.visual.impl.VisualServiceImpl; - -public class CVSubmitTaskDemo { - - public static void main(String[] args) { - IVisualService visualService = VisualServiceImpl.getInstance(); - String ak = AiSupportApplication.PropKit.get("HuoShan.accessKey"); - String sk = AiSupportApplication.PropKit.get("HuoShan.secretKey"); - visualService.setAccessKey(ak); - visualService.setSecretKey(sk); - - JSONObject req = new JSONObject(); - req.put("req_key", "high_aes_general_v20_L"); - req.put("prompt", "千军万马"); - req.put("model_version", "general_v2.0_L"); - req.put("seed", -1); - req.put("scale", 3.5); - req.put("ddim_steps", 16); - req.put("width", 512); - req.put("height", 512); - req.put("use_sr", true); - try { - Object response = visualService.cvSubmitTask(req); - System.out.println(JSON.toJSONString(response)); - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HttpClient.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HttpClient.java index 1540e268..6bbec5ce 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HttpClient.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HttpClient.java @@ -3,7 +3,6 @@ package com.dsideal.aiSupport.Util; import com.dsideal.aiSupport.Config.GatewayConfig; import okhttp3.*; -import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -45,38 +44,6 @@ public class HttpClient { } } - /** - * 发送POST请求(JSON格式) - * - * @param url 请求URL - * @param jsonBody JSON请求体 - * @param headers 请求头 - * @return 响应字符串 - */ - public static String postJson(String url, String jsonBody, Map headers) { - MediaType JSON = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonBody, JSON); - - Request.Builder builder = new Request.Builder() - .url(url) - .post(body); - - // 添加请求头 - if (headers != null) { - headers.forEach(builder::addHeader); - } - - try (Response response = OK_HTTP_CLIENT.newCall(builder.build()).execute()) { - if (!response.isSuccessful()) { - throw new IOException("请求失败: " + response); - } - ResponseBody responseBody = response.body(); - return responseBody != null ? responseBody.string() : null; - } catch (IOException e) { - throw new RuntimeException("POST请求异常: " + url, e); - } - } - /** * 发送POST请求(表单格式) * @@ -113,42 +80,6 @@ public class HttpClient { } } - /** - * 发送POST请求(文件上传) - * - * @param url 请求URL - * @param file 文件 - * @param fileName 文件名 - * @param headers 请求头 - * @return 响应字符串 - */ - public static String postFile(String url, File file, String fileName, Map headers) { - RequestBody requestBody = new MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart("file", fileName, - RequestBody.create(file, MediaType.parse("application/octet-stream"))) - .build(); - - Request.Builder builder = new Request.Builder() - .url(url) - .post(requestBody); - - // 添加请求头 - if (headers != null) { - headers.forEach(builder::addHeader); - } - - try (Response response = OK_HTTP_CLIENT.newCall(builder.build()).execute()) { - if (!response.isSuccessful()) { - throw new IOException("请求失败: " + response); - } - ResponseBody responseBody = response.body(); - return responseBody != null ? responseBody.string() : null; - } catch (IOException e) { - throw new RuntimeException("文件上传异常: " + url, e); - } - } - public static void main(String[] args) { //正常在Controller中获取到此人员的jwt // String jwtToken =JwtUtil.getPersonJwt(req); diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Kit/HuoShanCommon.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Kit/HuoShanCommon.java new file mode 100644 index 00000000..da793ade --- /dev/null +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Kit/HuoShanCommon.java @@ -0,0 +1,10 @@ +package com.dsideal.aiSupport.Util.HuoShanFangZhou.Kit; + +public class HuoShanCommon { + //火山方舟大模型 + //https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D + // String apiKeyName = "api-key-20250418163654"; + + protected static String API_BASE_URL="https://ark.cn-beijing.volces.com"; + protected static String ARK_API_KEY = "f6150e6c-422a-4265-8b63-4d941b271220"; +} diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Txt2Img.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Txt2Img.java new file mode 100644 index 00000000..7aeed2e1 --- /dev/null +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/HuoShanFangZhou/Txt2Img.java @@ -0,0 +1,162 @@ +package com.dsideal.aiSupport.Util.HuoShanFangZhou; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.dsideal.aiSupport.Util.HuoShanFangZhou.Kit.HuoShanCommon; +import okhttp3.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * 火山方舟文生图API工具类 + */ +public class Txt2Img extends HuoShanCommon { + // 日志 + private static final Logger log = LoggerFactory.getLogger(Txt2Img.class); + // 文生图API路径 + private static final String TXT_TO_IMG_PATH = "/api/v3/images/generations"; + // 默认图片尺寸 + private static final String DEFAULT_SIZE = "1024x1024"; + // 默认引导系数 + private static final double DEFAULT_GUIDANCE_SCALE = 7.0; + // 默认水印设置 + private static final boolean DEFAULT_WATERMARK = true; + // 默认响应格式 + private static final String DEFAULT_RESPONSE_FORMAT = "url"; + + /** + * 提交文生图任务 + * + * @param model 模型名称 + * @param prompt 提示词 + * @return 生成的图片URL + * @throws IOException 异常信息 + */ + public static String generateImage(String model, String prompt) throws IOException { + return generateImage(model, prompt, DEFAULT_SIZE, -1, DEFAULT_GUIDANCE_SCALE, DEFAULT_WATERMARK); + } + + /** + * 提交文生图任务(带参数) + * + * @param model 模型名称 + * @param prompt 提示词 + * @param size 图片尺寸,如"1024x1024" + * @param seed 随机种子,-1表示随机 + * @param guidanceScale 引导系数 + * @param watermark 是否添加水印 + * @return 生成的图片URL + * @throws IOException 异常信息 + */ + public static String generateImage(String model, String prompt, String size, long seed, + double guidanceScale, boolean watermark) throws IOException { + // 创建OkHttpClient + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(60, TimeUnit.SECONDS) + .writeTimeout(60, TimeUnit.SECONDS) + .build(); + + // 构建请求体 + JSONObject requestBody = new JSONObject(); + requestBody.put("model", model); + requestBody.put("prompt", prompt); + requestBody.put("response_format", DEFAULT_RESPONSE_FORMAT); + requestBody.put("size", size); + + // 如果种子不是-1,则添加种子参数 + if (seed != -1) { + requestBody.put("seed", seed); + } + + requestBody.put("guidance_scale", guidanceScale); + requestBody.put("watermark", watermark); + + // 创建请求 + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, requestBody.toJSONString()); + Request request = new Request.Builder() + .url(API_BASE_URL + TXT_TO_IMG_PATH) + .method("POST", body) + .addHeader("Content-Type", "application/json") + .addHeader("Authorization", "Bearer " + ARK_API_KEY) + .build(); + + // 执行请求 + log.info("提交文生图任务: {}", requestBody.toJSONString()); + Response response = client.newCall(request).execute(); + + // 处理响应 + if (!response.isSuccessful()) { + String errorMsg = "文生图任务提交失败,状态码: " + response.code(); + log.error(errorMsg); + throw new IOException(errorMsg); + } + + // 解析响应 + String responseBody = response.body().string(); + log.info("文生图任务响应: {}", responseBody); + + JSONObject responseJson = JSON.parseObject(responseBody); + + // 获取生成的图片URL + String imageUrl = responseJson.getJSONArray("data").getJSONObject(0).getString("url"); + log.info("生成的图片URL: {}", imageUrl); + + return imageUrl; + } + + /** + * 批量生成图片 + * + * @param model 模型名称 + * @param prompt 提示词 + * @param count 生成数量 + * @return 生成的图片URL列表 + * @throws IOException 异常信息 + */ + public static List generateImages(String model, String prompt, int count) throws IOException { + List imageUrls = new ArrayList<>(); + + for (int i = 0; i < count; i++) { + String imageUrl = generateImage(model, prompt); + imageUrls.add(imageUrl); + } + + return imageUrls; + } + + /** + * 使用示例 + */ + public static void main(String[] args) { + try { + // 模型名称 + String model = "doubao-seedream-3-0-t2i-250415"; + // 提示词 + String prompt = "鱼眼镜头,一只猫咪的头部,画面呈现出猫咪的五官因为拍摄方式扭曲的效果。"; + // 图片尺寸 + String size = "1024x1024"; + // 随机种子 + long seed = 12; + // 引导系数 + double guidanceScale = 2.5; + // 是否添加水印 + boolean watermark = true; + + // 生成图片 + String imageUrl = generateImage(model, prompt, size, seed, guidanceScale, watermark); + + // 输出生成的图片URL + log.info("生成的图片URL: {}", imageUrl); + + } catch (Exception e) { + log.error("文生图任务执行失败", e); + } + } +} diff --git a/dsAiSupport/target/classes/application_pro.yaml b/dsAiSupport/target/classes/application_pro.yaml index dab51c02..3efee478 100644 --- a/dsAiSupport/target/classes/application_pro.yaml +++ b/dsAiSupport/target/classes/application_pro.yaml @@ -53,36 +53,4 @@ excel: # 导出excel 的模板配置路径 excelExportTemplatePathSuffix: /ExcelExportTemplate/ # 导入excel 的模板配置路径 - ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ - -# 即梦 -JiMeng: - # Access Key ID - ak: AKLTZjVlOGU1NzA1YWZkNDExMzkzYzY5YTNlOTRmMTMxODg - # Secret Access Key - sk: WkdabU9UTXdNVEJpTmpWbE5HVTJZVGxtTnpWbU5XSTBaRGN5TW1NMk5tRQ== - -# 可灵 -KeLing: - # Access Key ID - ak: c992fd02624d4900a93ca3b6da03d9e9 - # Secret Access Key - sk: b37f67a00eb44f9bb57e4d530c328e1d - -# GPTNB GOAPI -GPTNB: - sk: sk-amQHwiEzPIZIB2KuF5A10dC23a0e4b02B48a7a2b6aFa0662 - -# 人工智能生成PPT -AIPPT: - BASE_URL: https://open.docmee.cn - API_KEY: ak_uKoKrRF63333E2lcBq - -# 阿里云API KEY -aliyun: - API_KEY: sk-01d13a39e09844038322108ecdbd1bbc - -# LIBLIB -LIBLIB: - accessKey: sOCtVLVTNOZkRMajlhzCmg - secretKey: PUe8QTRG9i0G9EbpedHmIpLQ0FyxoYY9 \ No newline at end of file + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ \ No newline at end of file