Skip to content

feat: 新增命令行打标与本地/API Caption 工作流#44

Open
niangao2331 wants to merge 1 commit into
wochenlong:mainfrom
niangao2331:feature/tagger-cli-api-docs
Open

feat: 新增命令行打标与本地/API Caption 工作流#44
niangao2331 wants to merge 1 commit into
wochenlong:mainfrom
niangao2331:feature/tagger-cli-api-docs

Conversation

@niangao2331
Copy link
Copy Markdown
Collaborator

概要

本 PR 为 issue #40 增加首期命令行打标能力和接口文档,覆盖本地 TAG、本地自然语言 Caption、OpenAI-compatible API Caption 三种路径。

已实现内容

  • 新增共享打标服务层,统一处理图片枚举、同名 .txt 写入、冲突策略、固定添加/移除标签和去重。
  • 新增命令行入口:
    • local:使用现有 WD/CL ONNX 标签器,输出 Danbooru 风格 TAG。
    • caption:使用本地 BLIP-compatible Hugging Face 模型,输出自然语言 NL。
    • api:调用 OpenAI-compatible /chat/completions 视觉接口,输出自然语言 NL。
  • 新增 PowerShell / Bash 包装脚本:scripts/cli/tagger.ps1scripts/cli/tagger.sh
  • 保持 WebUI /interrogate 请求字段兼容,并将后台执行迁移到共享 service。
  • 支持本地/整合包内置标签器优先加载,找不到再尝试下载。
  • 支持国内镜像或 HF 直连:--use-cn-mirror--hf-endpointUSE_CN_MIRROR=1HF_ENDPOINT
  • 新增完整文档:docs/tagger-cli-api.md
  • 新增单元测试覆盖 CLI、服务层、API 请求、写入规则、本地模型解析和下载配置。

使用方式

本地 TAG 打标

python -m mikazuki.tagger.cli local --path .\input

递归处理子目录:

python -m mikazuki.tagger.cli local --path .\input --recursive

使用国内镜像下载缺失模型:

python -m mikazuki.tagger.cli local --path .\input --use-cn-mirror

本地自然语言 Caption

python -m mikazuki.tagger.cli caption --path .\input

指定设备:

python -m mikazuki.tagger.cli caption --path .\input --device cuda

API 自然语言 Caption

python -m mikazuki.tagger.cli api --path .\input `
  --endpoint https://api.siliconflow.cn/v1 `
  --model Qwen/Qwen3.6-27B `
  --api-key-env SILICONFLOW_API_KEY

包装脚本

.\scripts\cli\tagger.ps1 local --path .\input
bash scripts/cli/tagger.sh local --path ./input

本地模型放置约定

程序会先检查用户或整合包内置模型,没有再下载。

查找顺序:

  • MIKAZUKI_TAGGER_DIR
  • taggers/<model-key>/
  • models/taggers/<model-key>/
  • huggingface/taggers/<model-key>/

WD 示例:

taggers/
  wd14-convnextv2-v2/
    model.onnx
    selected_tags.csv

CL 示例:

taggers/
  cl_tagger_1_01/
    model.onnx
    tag_mapping.json

文档

新增文档:docs/tagger-cli-api.md,包含三种 CLI 模式、OpenAI-compatible 请求/响应格式、输出和冲突策略、本地模型放置方式、国内镜像与 HF 下载配置、预留程序接口说明。

测试

已通过:

python -m unittest discover -s tests -p test_tagger_cli_service.py
python -m py_compile mikazuki\tagger\service.py mikazuki\tagger\cli.py mikazuki\tagger\local_models.py mikazuki\tagger\interrogators\wd14.py mikazuki\tagger\interrogators\cl.py mikazuki\app\api.py
git diff --check

目标测试:9 条通过。

也手动验证了:

  • SiliconFlow OpenAI-compatible API Caption 可正常生成 .txt
  • 用户自行放入本地 WD 文件时,loader 会直接使用本地文件,不触发 Hugging Face 下载。

备注

全量 python -m unittest discover tests 仍有既有失败,集中在 Anima backend pin/submodule 和 train-log auto-open,和本 PR 的 tagger 改动无关。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant