koishi-plugin-aka-ai-generator 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/index.js +38 -8
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -173,6 +173,8 @@ var YunwuProvider = class {
173
173
 
174
174
  // src/providers/gptgod.ts
175
175
  var GPTGOD_DEFAULT_API_URL = "https://api.gptgod.online/v1/chat/completions";
176
+ var HTTP_URL_REGEX = /^https?:\/\//i;
177
+ var DATA_URL_REGEX = /^data:image\//i;
176
178
  async function downloadImageAsBase642(ctx, url, timeout, logger) {
177
179
  try {
178
180
  const response = await ctx.http.get(url, {
@@ -205,6 +207,39 @@ async function downloadImageAsBase642(ctx, url, timeout, logger) {
205
207
  }
206
208
  }
207
209
  __name(downloadImageAsBase642, "downloadImageAsBase64");
210
+ function isHttpImage(url) {
211
+ return HTTP_URL_REGEX.test(url);
212
+ }
213
+ __name(isHttpImage, "isHttpImage");
214
+ function isDataImage(url) {
215
+ return DATA_URL_REGEX.test(url);
216
+ }
217
+ __name(isDataImage, "isDataImage");
218
+ async function buildImageContentPart(ctx, url, timeout, logger) {
219
+ if (!url) {
220
+ throw new Error("下载图片失败,请检查图片链接是否有效");
221
+ }
222
+ if (isDataImage(url)) {
223
+ return {
224
+ type: "image_url",
225
+ image_url: { url }
226
+ };
227
+ }
228
+ if (isHttpImage(url)) {
229
+ return {
230
+ type: "image_url",
231
+ image_url: { url }
232
+ };
233
+ }
234
+ const { data, mimeType } = await downloadImageAsBase642(ctx, url, timeout, logger);
235
+ return {
236
+ type: "image_url",
237
+ image_url: {
238
+ url: `data:${mimeType};base64,${data}`
239
+ }
240
+ };
241
+ }
242
+ __name(buildImageContentPart, "buildImageContentPart");
208
243
  function parseGptGodResponse(response, logger) {
209
244
  try {
210
245
  const images = [];
@@ -377,18 +412,13 @@ var GptGodProvider = class {
377
412
  }
378
413
  ];
379
414
  for (const url of urls) {
380
- const { data, mimeType } = await downloadImageAsBase642(
415
+ const imagePart = await buildImageContentPart(
381
416
  ctx,
382
417
  url,
383
418
  this.config.apiTimeout,
384
419
  logger
385
420
  );
386
- contentParts.push({
387
- type: "image_url",
388
- image_url: {
389
- url: `data:${mimeType};base64,${data}`
390
- }
391
- });
421
+ contentParts.push(imagePart);
392
422
  }
393
423
  const requestData = {
394
424
  model: this.config.modelId,
@@ -567,7 +597,7 @@ var Config = import_koishi.Schema.intersect([
567
597
  },
568
598
  {
569
599
  commandName: "变写实",
570
- prompt: "请根据用户提供的图片,在严格保持主体身份、外观特征与姿态不变的前提下,生成一张照片级真实感的超写实摄影作品。要求:1. 采用专业相机拍摄(如佳能EOS R5),使用85mm f/1.4人像镜头,呈现柯达Portra 400胶片质感,8K超高清画质,HDR高动态范围,电影级打光效果;2. 画面应具有照片级真实感、超现实主义风格和高细节表现,确保光影、皮肤质感、服饰纹理与背景环境都贴近真实世界;3. 使用自然光影营造真实氛围,呈现raw and natural的原始自然感,具有authentic film snapshot的真实胶片质感,使用strong contrast between light and dark营造强烈明暗对比,产生deep shadows深阴影效果;4. 整体需具备tactile feel触感质感和simulated texture模拟纹理细节,可以适度优化噪点与瑕疵,但不要改变主体特征或添加额外元素;5. 整体效果需像专业摄影棚拍摄的真实照片,具有电影级画质;6. 如果主体是人物脸部,脸部生成效果应参考欧美混血白人精致美丽帅气英俊的外观特征进行生成,保持精致立体的五官轮廓、健康光泽的肌肤质感、优雅的气质和自然的表情,确保面部特征协调美观。"
600
+ prompt: "请根据用户提供的图片,在严格保持主体身份、外观特征与姿态不变的前提下,生成一张照片级真实感的超写实摄影作品。要求:1. 采用专业相机拍摄(如佳能EOS R5),使用85mm f/1.4人像镜头,呈现柯达Portra 400胶片质感,8K超高清画质,HDR高动态范围,电影级打光效果;2. 画面应具有照片级真实感、超现实主义风格和高细节表现,确保光影、皮肤质感、服饰纹理与背景环境都贴近真实世界;3. 使用自然光影营造真实氛围,呈现raw and natural的原始自然感,具有authentic film snapshot的真实胶片质感;4. 整体需具备tactile feel触感质感和simulated texture模拟纹理细节,可以适度优化噪点与瑕疵,但不要改变主体特征或添加额外元素;5. 整体效果需像专业摄影棚拍摄的真实照片,具有电影级画质;6. 如果主体是人物脸部,脸部生成效果应参考欧美混血白人精致美丽帅气英俊的外观特征进行生成,保持精致立体的五官轮廓、健康光泽的肌肤质感、优雅的气质和自然的表情,确保面部特征协调美观。"
571
601
  },
572
602
  {
573
603
  commandName: "生成设定",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-aka-ai-generator",
3
3
  "description": "自用AI生成插件(GPTGod & Yunwu)",
4
- "version": "0.1.7",
4
+ "version": "0.1.8",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [