图像描述
图像描述(Image Captioning)允许 SillyTavern 为聊天中使用的图片自动生成文字描述。
当你希望 AI 角色“看到”并回应对话中的视觉内容时,请使用图像描述。
- 为你上传或粘贴到消息中的图片创建描述
- 为聊天记录中已有的图片补充上下文
- 使用多种来源生成描述,包括本地模型、云端 API 和众包网络
其中既有无需任何配置、不花钱、不需要 GPU 的选项,也有需要部分或全部上述条件的选项。请根据你的需求和资源选择合适的方案。
图像描述扩展是 SillyTavern 的内置功能,无需单独安装。
快速开始
- 配置:
- 在 扩展 面板中打开 Image Captioning 面板
- 选择一个描述来源(通常是“Local”或“Multimodal”)
- 对于“Multimodal”,请确保你已在 API Connections 标签页中完成连接配置
- 生成描述:
- 从 扩展 弹出菜单中选择 “Generate Caption”
- 在提示时选择一个图片文件
- 等待描述生成完成
- 检查并发送:
- 带描述的图片将被插入到你的消息中
- 通过图片工具提示查看描述
- 点击 Send,看看你的角色对这张图片作何反应!
面板控件
来源选择
选择图像描述的来源。支持的选项:
描述配置
- Caption Prompt:输入用于生成描述的自定义提示词。默认提示词为 “What's in this image?”
- Ask every time:切换以在为每张图片生成描述时分别请求自定义提示词
消息模板
- Message Template:自定义描述消息模板。使用
{{caption}}宏来插入生成的描述。默认模板为[{{user}} sends {{char}} a picture that contains: {{caption}}]
自动描述
- Automatically caption images:切换以对粘贴或附加到消息中的图片自动生成描述
- Edit captions before saving:切换以允许在保存描述前对其进行编辑
为图片生成描述
在 SillyTavern 中为图片生成描述的所有方式:
- 从 扩展 弹出菜单中选择 “Generate Caption”,并在提示时选择一个图片文件
- 点击消息中已有图片顶部的 Caption 图标
- 在启用
自动描述 的情况下,直接将图片粘贴到聊天输入栏 - 使用消息操作中的 Embed File or Image 按钮将图片文件附加到消息上
- 发送包含嵌入图片的消息
- 使用
/caption斜杠命令
自动描述
自动描述功能允许你在图片加入聊天时自动生成描述,而无需每次都手动触发描述流程。
要启用此功能,请在 Image Captioning 面板中勾选 “Automatically caption images” 复选框。你还可以勾选 “Edit captions before saving”,以便在保存描述前对其进行编辑。
启用后,自动描述会在以下场景中触发:
- 当图片被直接粘贴到聊天输入栏时。
- 当图片文件被附加到消息时。
- 当发送包含嵌入图片的消息时。
系统将使用你所选的描述来源(Local、Extras、Horde 或 Multimodal)以及已配置的设置来为图片生成描述。
保存前编辑描述(精修模式)
如果你已启用 “Edit captions before saving” 选项:
- 添加图片后,将弹出一个窗口显示生成的描述。
- 你可以根据需要对描述进行查看和编辑。
- 点击 “OK” 应用描述,或点击 “Cancel” 丢弃描述而不保存。
描述发送
生成(并可选编辑后)的描述将使用你配置的 Message Template 自动插入到提示词中。默认情况下,它将以以下格式发送:
[BaronVonUser sends Seraphina a picture that contains: ...]
斜杠命令:/caption
该扩展提供了一个 /caption 斜杠命令,可在聊天输入栏或脚本中使用。
用法
/caption [quiet=true|false]? [mesId=number]? [prompt]
prompt(可选):用于描述模型的自定义提示词。仅多模态来源支持。quiet=true|false:若设为 true,则不向聊天发送带描述的消息。默认为 false。mesId=number:指定消息 ID,用于从已有消息中为图片生成描述,而不是上传新图片。
如果未提供 mesId,该命令将提示你上传一张图片。当 quiet 为 false(默认)时,一条带描述图片的新消息将被发送到聊天中。生成的描述可作为其他命令的输入。
示例
使用默认设置为新图片生成描述:
/caption
使用自定义提示词为新图片生成描述:
/caption Describe the main colours and shapes in this image
从消息 #5 的图片生成描述,且不发送新消息:
/caption mesId=5 quiet=true
从消息 #10 的图片生成描述并使用自定义提示词,然后根据描述生成一张新图片:
/caption mesId=10 Describe this image using comma-separated keywords | /imagine
Local source
你可以在 config.yaml 中更改模型。对应的键名为 extensions.models.captioning。填入你想使用的 Hugging Face 模型 ID。默认值为 Xenova/vit-gpt2-image-captioning。
你可以使用任何支持图像描述的模型(VisionEncoderDecoderModel 或 “image-to-text” pipeline)。该模型需要与 transformers.js 库兼容,即它需要 ONNX 权重。请寻找带有 ONNX 和 image-to-text 标签的模型,或者包含一个名为 onnx 的文件夹且其中全是 .onnx 文件的模型。
Multimodal source
通用配置
- Model:选择用于图像描述的模型。可选项因所选 API 而异。
- Allow reverse proxy:切换以允许在已定义且有效的情况下使用反向代理(OpenAI、Anthropic、Google、Mistral、xAI)
描述来源的 API 密钥和端点 URL 在 API Connections 面板中管理。请先在 API Connections 中完成连接配置,然后在 Captioning 中将其选为描述来源。
请先在 API Connections 面板中配置
再说最后一遍:请在 API Connections 中配置 API 密钥/地址/端口,然后在 Captioning 中使用该连接。
你完全可以聊天用 Claude、图像描述用 Google AI Studio,诸如此类。只需先在 “API Connections” 标签页中把它们都配置好。然后将你的 Chat Completion 来源切换为 Claude,将你的 Captioning 来源切换为 Google AI Studio。
对于大多数本地后端,你需要在模型后端而非 SillyTavern 中设置某些选项。如果你的后端一次只能运行一个模型且不支持自动切换,你有以下几种方式来为聊天和描述使用不同的模型:
- 次级端点: 使用次级端点功能(参见下方的
次级端点 章节)连接到另一个用于描述的 API 服务器 - 多种连接类型: 在 API Connections 中通过文本补全和聊天补全两种模式连接到你的后端 —— 这样你就能对同一后端类型建立两个独立的连接
来源
要使用这些描述来源之一,请在 Source 下拉菜单中选择 Multimodal。
- “我想要最好的描述效果,并且愿意为此付费”:Anthropic
- “我不想付费,也不想运行任何东西”:Google AI Studio 免费档
- “我想在本地为图片生成描述,并且开箱即用”:Ollama
- “我想让本地 AI 的梦想延续下去”:
KoboldCpp - “我想在它不工作时吐槽”:
Extras
次级端点
默认情况下,Multimodal 来源使用在 API Connections 标签页中配置的主端点。 你也可以专门为多模态描述设置一个次级端点。
- 在 扩展 面板中打开 Image Captioning 面板。
- 选择 “Multimodal” 作为描述来源,并选择一个偏好的 API 提供商。
- 在 “Secondary captioning endpoint URL” 字段中填入次级端点的有效 URL。
- 勾选 “Use secondary URL” 复选框以启用次级端点。
不要在 URL 末尾追加 /v1 或 /chat/completions。扩展会自动处理这些。
仅以下 API 支持此功能:
- KoboldCpp
- llama.cpp
- Ollama
- Text Generation WebUI (oobabooga)
- vLLM
特定来源指南
KoboldCpp
有关安装和使用 KoboldCpp 的一般信息,请参阅 KoboldCpp 文档。
要使用 KoboldCpp 进行多模态描述:
- 获取一个具备多模态能力的模型,即经过训练可同时处理文本和图像提示词的模型。
- 同时获取该模型的多模态投影(multimodal projections)。这些权重使模型能够理解输入中文本部分与图像部分之间的关联。
- 在 KoboldCpp 启动 GUI 或命令行界面中加载模型和投影。
最早的经典本地多模态模型是 LLaVA。该模型和投影的 GGUF 格式文件可从 Mozilla/llava-v1.5-7b-llamafile 获取。要从命令行加载它们,请使用 --model 和 --mmproj 标志分别指定模型和投影。例如:
./koboldcpp \
--model="models/llava-v1.5-7b-Q4_K.gguf" \
--mmproj="models/ llava-v1.5-7b-mmproj-Q4_0.gguf" \
... other flags ...
你可以尝试一些 LLaVA 微调版本:xtuner/llava-llama-3-8b-v1_1-gguf、xtuner/llava-phi-3-mini-gguf。
你可以使用特定微调版本所基于的基础模型对应的多模态投影。部分常见基础模型的投影可从 koboldcpp/mmproj 获取。