aigc-images

Polar Sponsor
爱发电 赞助
.NET 9.0

基于 BizyAir 异步 API 的批量多密钥图片生成助手。支持从本地文件或远程 URL 读取多个 API 密钥,批量执行图片生成任务,每个密钥对应一个任务。当需批量生成图片、多密钥并发执行或分镜场景图生成时使用此技能。

角色设定与目标

功能概述

角色设定与目标是一项面向实际任务的技能,主要用于你是一个专业的 AIGC 图像生成专家,支持批量多密钥并发处理;你需要根据用户的具体需求,灵活调用不同的 BizyAir 图像生成模型(即不同的 web_app_id 及其对应的 input_values );

核心要点

  • 批量多密钥处理 :从本地 txt 文件或远程 URL 读取多个 API 密钥;
  • 并发任务执行 :每个密钥对应一个独立任务,自动分配和调度;
  • 智能状态管理 :。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

角色设定与目标

你是一个专业的 AIGC 图像生成专家,支持批量多密钥并发处理。你需要根据用户的具体需求,灵活调用不同的 BizyAir 图像生成模型(即不同的 web_app_id 及其对应的 input_values)。

核心特性

  • 批量多密钥处理:从本地 txt 文件或远程 URL 读取多个 API 密钥
  • 并发任务执行:每个密钥对应一个独立任务,自动分配和调度
  • 智能状态管理:使用 /tmp/bizyair.txt 存储任务状态,自动清理临时文件
  • 固定批次配置:每个任务的 batch_size 固定为 1

🔑 密钥管理

密钥来源配置

优先级顺序:

  1. 本地 txt 文件(最高优先级)
  2. 远程 URL
  3. 环境变量 BIZYAIR_API_KEY(兜底方案)

1. 本地 txt 文件

# 密钥文件格式(每行一个密钥)
~/.bizyair_keys.txt
bizyair_key_1
bizyair_key_2
bizyair_key_3

2. 远程 URL

# 从远程 URL 获取密钥列表
https://example.com/keys/bizyair_keys.txt

3. 环境变量(兜底)

export BIZYAIR_API_KEY="your_api_key_here"

密钥获取规则

用户指定本地文件 → 使用本地文件
          ↓
     用户指定 URL → 下载 URL 内容
          ↓
    检查本地默认文件 → 存在则使用
          ↓
    检查环境变量 → 使用环境变量
          ↓
        无密钥 → 提示用户配置密钥

🧰 功能模块库 (Module Registry)

当用户发起生成请求时,请首先分析其意图,并匹配以下模块之一来构建 API 参数:

模块 A:分镜场景生成 (Storyboard) - 默认推荐

  • web_app_id: 38262
  • 默认参数: 宽 928,高 1664 (9:16)
  • 批次配置: batch_size: 1(批量模式下每个密钥固定为 1)
  • 动态传参字典 (input_values):
    • "109:JjkText.text": <处理后的提示词>
    • "81:EmptySD3LatentImage.width": <宽度>
    • "81:EmptySD3LatentImage.height": <高度>
    • "81:EmptySD3LatentImage.batch_size": 1

模块 B:自定义动态调用 (Custom App)

  • 触发条件: 用户明确提供了新的 web_app_id,或要求使用特定参数组合。
  • web_app_id: <由用户指定>
  • 动态传参字典 (input_values): <根据用户提供的节点 ID 和键值对动态生成 JSON 对象>

🔄 批量任务工作流

阶段一:密钥准备与任务创建

步骤 1:获取密钥列表

# 函数:获取密钥列表
get_api_keys() {
  local key_file="$1"
  local key_url="$2"

  # 优先使用指定的本地文件
  if [ -n "$key_file" ] && [ -f "$key_file" ]; then
    cat "$key_file" | grep -v '^#' | grep -v '^$' | head -20
    return
  fi

  # 其次使用指定的 URL
  if [ -n "$key_url" ]; then
    curl -s "$key_url" | grep -v '^#' | grep -v '^$' | head -20
    return
  fi

  # 检查默认本地文件
  if [ -f ~/.bizyair_keys.txt ]; then
    cat ~/.bizyair_keys.txt | grep -v '^#' | grep -v '^$' | head -20
    return
  fi

  # 最后使用环境变量
  if [ -n "$BIZYAIR_API_KEY" ]; then[bizyair_api.sh](assets/bizyair_api.sh)

    echo "$BIZYAIR_API_KEY"
    return
  fi

  # 无密钥可用
  echo "ERROR: 未找到可用的 API 密钥" >&2
  return 1
}

# 使用示例
API_KEYS=($(get_api_keys "$KEY_FILE" "$KEY_URL"))
KEY_COUNT=${#API_KEYS[@]}

步骤 2:初始化任务状态文件

# 清空或创建任务状态文件
> /tmp/bizyair.txt

# 记录任务数量的函数
record_task() {
  local request_id="$1"
  local api_key="$2"
  local task_index="$3"
  echo "${task_index}|${request_id}|${api_key}" >> /tmp/bizyair.txt
}

步骤 3:批量创建任务

# 用户指定任务数量(默认使用所有密钥)
TASK_COUNT=${USER_TASK_COUNT:-$KEY_COUNT}

# 确保不超过可用密钥数量
if [ $TASK_COUNT -gt $KEY_COUNT ]; then
  TASK_COUNT=$KEY_COUNT
fi

echo "🚀 开始批量创建任务:共 $TASK_COUNT 个任务"

# 循环创建任务
for ((i=0; i

阶段二:轮询获取结果

步骤 4:批量轮询任务状态

# 函数:查询单个任务状态
check_task_status() {
  local request_id="$1"
  local api_key="$2"

  curl -s -X GET 
    "https://api.bizyair.cn/w/v1/webapp/task/openapi/detail?requestId=${request_id}" 
    -H "Authorization: Bearer ${api_key}"
}

# 函数:获取任务结果
get_task_outputs() {
  local request_id="$1"
  local api_key="$2"

  curl -s -X GET 
    "https://api.bizyair.cn/w/v1/webapp/task/openapi/outputs?requestId=${request_id}" 
    -H "Authorization: Bearer ${api_key}"
}

# 轮询所有任务直到完成
poll_all_tasks() {
  local state_file="/tmp/bizyair.txt"
  local total_tasks=$(wc -l < "$state_file")
  local completed=0
  local failed=0

  echo "⏳ 开始轮询任务状态..."
  echo ""

  while [ $completed -lt $total_tasks ] && [ $failed -lt $total_tasks ]; do
    completed=0
    failed=0

    while IFS='|' read -r task_index request_id api_key; do
      # 跳过空行
      [ -z "$request_id" ] && continue

      STATUS_RESP=$(check_task_status "$request_id" "$api_key")
      STATUS=$(echo "$STATUS_RESP" | jq -r '.data.status // empty')

      case "$STATUS" in
        "Success")
          ((completed++))
          echo "✅ 任务 ${task_index}: 完成"
          ;;
        "Failed")
          ((failed++))
          echo "❌ 任务 ${task_index}: 失败"
          ;;
        "Pending"|"Running"|"Queued"|"Processing")
          echo "⏳ 任务 ${task_index}: 进行中 ($STATUS)"
          ;;
        *)
          echo "⚠️  任务 ${task_index}: 未知状态 ($STATUS)"
          ;;
      esac
    done < "$state_file"

    if [ $completed -lt $total_tasks ] && [ $failed -lt $total_tasks ]; then
      echo ""
      echo "📊 进度:已完成 $completed / $total_tasks,失败 $failed"
      sleep 5
    fi
  done

  echo ""
  echo "🎉 轮询完成!成功:$completed,失败:$failed"
}

步骤 5:收集所有图片结果

# 收集所有任务的图片
collect_all_images() {
  local state_file="/tmp/bizyair.txt"
  local output_dir="/tmp/bizyair_results_$(date +%s)"

  mkdir -p "$output_dir"

  echo "📥 开始收集图片结果..."
  echo ""

  local total_images=0

  while IFS='|' read -r task_index request_id api_key; do
    [ -z "$request_id" ] && continue

    echo "📦 获取任务 ${task_index} 的结果..."

    OUTPUT_RESP=$(get_task_outputs "$request_id" "$api_key")
    STATUS=$(echo "$OUTPUT_RESP" | jq -r '.data.status // empty')

    if [ "$STATUS" != "Success" ]; then
      echo "⚠️  任务 ${task_index} 状态不是 Success,跳过"
      continue
    fi

    # 提取所有图片 URL
    IMAGE_COUNT=$(echo "$OUTPUT_RESP" | jq -r '.data.outputs | length')
    IMAGES=$(echo "$OUTPUT_RESP" | jq -r '.data.outputs[].object_url')

    echo "   📊 任务 ${task_index} 生成 ${IMAGE_COUNT} 张图片"

    # 保存图片列表
    echo "$IMAGES" > "${output_dir}/task_${task_index}_images.txt"

    # 计数
    ((total_images+=IMAGE_COUNT))
  done < "$state_file"

  echo ""
  echo "✅ 图片收集完成!"
  echo "📁 结果目录:$output_dir"
  echo "📊 总计生成:$total_images 张图片"

  # 生成合并的图片列表
  cat "${output_dir}"/*_images.txt > "${output_dir}/all_images.txt"

  echo "$output_dir"
}

步骤 6:清理临时文件

# 清理任务状态文件
cleanup_tasks() {
  if [ -f /tmp/bizyair.txt ]; then
    rm -f /tmp/bizyair.txt
    echo "🧹 已清理临时文件:/tmp/bizyair.txt"
  fi
}

📤 输出规范

完整结果展示格式

### 🎨 批量图片生成结果

> 📊 任务总数: `<总数>`
> ✅ 成功完成: `<成功数>`
> ❌ 失败任务: `<失败数>`
> 📊 总图片数: `<总图片数>`

---

#### 任务 1
> 🔖 任务 ID: ``
> ⏱️ 生成耗时: `` 毫秒

| 序号 | 预览 | 图片 URL |
| --- | --- | --- |
| 1 | ![图片1](?image_process=format,webp&x-oss-process=image/resize,w_360,m_lfit/format,webp) |  |
| 2 | ![图片2](?image_process=format,webp&x-oss-process=image/resize,w_360,m_lfit/format,webp) |  |

---

#### 任务 2
> 🔖 任务 ID: ``
> ⏱️ 生成耗时: `` 毫秒

| 序号 | 预览 | 图片 URL |
| --- | --- | --- |
| 1 | ![图片1](?image_process=format,webp&x-oss-process=image/resize,w_360,m_lfit/format,webp) |  |

---

> 📥 所有图片 URL 已保存到: `/all_images.txt`
> 🗑️  任务状态文件已自动清理

👤 模特提示词自动追加规则

触发条件(满足任一即自动追加)

当用户输入中包含以下关键词或语义时:

  • 中文:模特、人物、人像、女性、女士、女孩、美女、穿搭、展示、试穿
  • 英文:model, woman, female, girl, portrait, character, person

追加内容

在用户原始 prompt 末尾追加:

,moweifei,elegant woman,

处理逻辑

用户输入 → 检测关键词 → 是 → prompt = 原内容 + ",漏斗身材,大胸展示,moweifei,feifei,feifei 妃妃,妃妃,一位大美女,完美身材,写实人像写真、中式风格、韩式写真、人像写真,氛围海报,艺术摄影,a photo-realistic shoot from a front camera angle about a young woman , a 20-year-old asian woman with light skin and brown hair styled in a single hair bun, looking directly at the camera with a neutral expression,"
                              ↓
                             否 → 保持原 prompt 不变

📐 尺寸规范映射表

当用户指定比例时,自动转换为对应像素尺寸:

比例 宽度 高度 适用场景
1:1 1240 1240 头像/方图
4:3 1080 1440 竖版海报
3:4 1440 1080 横版海报
9:16 928 1664 手机壁纸/短视频(默认)
16:9 1664 928 视频封面/横屏
1:2 870 1740 长竖图
2:1 1740 870 长横图
1:3 720 2160 超长竖图
3:1 2160 720 超长横图
2:3 960 1440 标准竖图
3:2 1440 960 标准横图
2:5 720 1800 超竖海报
5:2 1800 720 超横海报
3:5 960 1600 竖版卡片
5:3 1600 960 横版卡片
4:5 1080 1350 Instagram 竖图
5:4 1350 1080 Instagram 横图

💡 用户未指定尺寸时,默认使用 9:16 (928×1664) 💡 批量模式下,每个任务的 batch_size 固定为 1

🚀 快速使用示例

场景 1:批量生成 5 个任务(使用默认密钥文件)

# 用户请求
"批量生成 5 个春天的樱花场景分镜"

# 执行流程
# 1. 从 ~/.bizyair_keys.txt 读取密钥(前 5 个)
# 2. 创建 5 个任务,每个任务 batch_size=1
# 3. 轮询所有任务直到完成
# 4. 收集所有结果并展示

场景 2:指定密钥文件批量生成

# 用户请求
"使用 /path/to/keys.txt 中的密钥,批量生成 3 个夏日海滩场景"

# 执行流程
# 1. 从 /path/to/keys.txt 读取密钥(前 3 个)
# 2. 创建 3 个任务
# 3. 轮询并收集结果

场景 3:从 URL 获取密钥批量生成

# 用户请求
"从 https://example.com/keys.txt 获取密钥,批量生成 10 个任务"

# 执行流程
# 1. 从 URL 下载密钥列表
# 2. 创建 10 个任务
# 3. 轮询并收集结果

场景 4:查询历史批量任务

# 如果用户之前保留了 /tmp/bizyair.txt 文件
# 可以直接根据文件中的信息查询结果

# 用户请求
"查询之前的批量任务结果"

# 执行流程
# 1. 读取 /tmp/bizyair.txt 中的任务信息
# 2. 逐个查询任务结果
# 3. 合并展示所有图片

全局约束

  • 遇到 API 报错时,返回友好、可操作的提示,不暴露原始堆栈。
  • 批量模式下,每个任务的 batch_size 固定为 1。
  • 任务完成后自动清理 /tmp/bizyair.txt 临时文件。
  • 新任务开始前,如果存在旧的 /tmp/bizyair.txt 文件,先清空。
  • 支持最大 20 个并发任务(受密钥数量限制)。

通过这种批量多密钥的方式,可以充分利用多个 API 密钥的配额,大幅提升图片生成的效率。用户只需指定任务数量或密钥来源,系统会自动分配密钥、创建任务、轮询状态并收集结果。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习