#
图像描述生成
图像描述生成功能允许 SillyTavern 自动为聊天中使用的图像生成文本描述。
当您希望您的 AI 角色能够"看到"并对对话中的视觉内容做出回应时,请使用图像描述生成功能。
- 为您上传或粘贴到消息中的图像创建描述
- 为聊天历史记录中的现有图像添加上下文
- 使用各种来源进行生成,包括本地模型、云 API 和众包网络
有些选项无需设置、无需付费、无需 GPU。也有一些选项需要其中部分或全部条件。选择最适合您需求和资源的选项。
图像描述生成扩展是 SillyTavern 的内置功能,无需单独安装。
#
快速开始
- 设置:
- 在 扩展 面板中打开 图像描述生成 面板
- 选择描述生成来源(很可能是"本地"或"多模态")
- 对于"多模态",确保您已在 API 连接 标签页中设置连接
- 生成描述:
- 从 扩展 弹出菜单中选择"生成描述"
- 在提示时选择图像文件
- 等待描述生成完成
- 查看并发送:
- 带描述的图像将插入到您的消息中
- 使用图像工具提示查看描述
- 点击 发送 查看您的角色对图像的看法!
#
面板控制
#
来源选择
选择图像描述生成的来源。支持的选项:
#
描述配置
- 描述提示:输入描述生成的自定义提示。默认提示是"这张图像中有什么?"
- 每次询问:切换以请求每个图像描述的自定义提示
#
消息模板
- 消息模板:自定义描述消息模板。使用
{{caption}}宏插入生成的描述。默认模板是[{{user}} sends {{char}} a picture that contains: {{caption}}]
#
自动描述
- 自动描述图像:切换以启用粘贴或附加到消息的图像的自动描述
- 保存前编辑描述:切换以允许在保存描述之前进行编辑
#
描述图像
在 SillyTavern 中描述图像的所有方法:
- 从 扩展 弹出菜单中选择"生成描述"并在提示时选择图像文件
- 点击消息中已有图像顶部的 描述 图标
- 启用
自动描述 后直接将图像粘贴到聊天输入中 - 使用消息操作中的 嵌入文件或图像 按钮将图像文件附加到消息
- 发送带有嵌入图像的消息
- 使用
/caption斜杠命令
#
自动描述
自动描述功能允许您在图像添加到聊天时自动生成描述,无需每次手动触发描述过程。
要启用此功能,请在图像描述生成面板中选择"自动描述图像"复选框。您还可以通过选中"保存前编辑描述"框来选择在保存描述之前进行编辑。
启用后,自动描述将在以下情况下触发:
- 当图像直接粘贴到聊天输入中时
- 当图像文件附加到消息时
- 当发送带有嵌入图像的消息时
系统将使用您选择的描述来源(本地、Extras、Horde 或多模态)和配置的设置为图像生成描述。
#
保存前编辑描述(优化模式)
如果您启用了"保存前编辑描述"选项:
- 图像添加后,将出现一个带有生成描述的弹出窗口。
- 您可以根据需要查看和编辑描述。
- 点击"确定"应用描述,或点击"取消"丢弃描述而不保存。
#
描述发送
生成的(以及可选编辑的)描述将使用您配置的消息模板自动插入到提示中。默认情况下,它将以此格式发送:
[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 描述此图像中的主要颜色和形状
描述消息 #5 中的图像而不发送新消息:
/caption mesId=5 quiet=true
使用自定义提示描述消息 #10 中的图像,然后根据描述生成新图像:
/caption mesId=10 使用逗号分隔的关键词描述此图像 | /imagine
#
本地来源
您可以在 config.yaml 中更改模型。键名为 extensions.models.captioning。输入您要使用的 Hugging Face 模型 ID。默认为 Xenova/vit-gpt2-image-captioning。
您可以使用任何支持图像描述的模型(VisionEncoderDecoderModel 或"图像到文本"管道)。模型需要与 transformers.js 库兼容。也就是说,它需要 ONNX 权重。查找带有 ONNX 和 image-to-text 标签的模型,或具有名为 onnx 且充满 .onnx 文件的文件夹的模型。
#
多模态来源
#
通用配置
- 模型:选择用于图像描述的模型。选项根据所选 API 而异。
- 允许反向代理:切换以允许使用定义且有效的反向代理(OpenAI、Anthropic、Google、Mistral、xAI)
描述来源的 API 密钥和端点 URL 在 API 连接 面板中管理。首先在 API 连接中设置连接,然后在描述生成中选择它作为您的描述来源。
首先在 API 连接面板中设置
最后一次强调:在 API 连接 中配置 API 密钥/地址/端口,并在描述生成中使用连接。
您仍然可以使用 Claude 进行聊天,使用 Google AI Studio 进行图像描述,或其他任何组合。只需首先在"API 连接"标签页中设置两者。然后将您的聊天完成源切换到 Claude,将描述生成源切换到 Google AI Studio。
对于大多数本地后端,您需要在模型后端中设置一些选项,而不是在 SillyTavern 中。如果您的后端一次只能运行一个模型且不支持自动切换,您有几个选项可以使用不同的模型进行聊天和描述:
- 辅助端点:使用辅助端点功能(参见下面的
辅助端点 部分)连接到不同的 API 服务器进行描述 - 多种连接类型:在 API 连接中使用文本完成和聊天完成模式连接到您的后端 - 这为您提供了到同一后端类型的两个独立连接
#
来源
要使用这些描述来源之一,请在来源下拉菜单中选择多模态。
- "我想要尽可能最好的描述,不介意付费":Anthropic
- "我不想支付任何费用或运行任何东西":Google AI Studio 免费版
- "我想在本地描述图像并且希望它正常工作":Ollama
- "我想让本地 AI 的梦想继续":
KoboldCpp - "我想在它不工作时抱怨":
Extras
#
辅助端点
默认情况下,多模态来源使用 API 连接标签页中配置的主端点。 您还可以专门为多模态描述设置辅助端点。
- 在 扩展 面板中打开 图像描述生成 面板。
- 选择"多模态"作为描述来源和首选 API 提供商。
- 在"辅助描述端点 URL"字段中输入辅助端点的有效 URL。
- 选中"使用辅助 URL"框以启用辅助端点。
不要在 URL 末尾附加 /v1 或 /chat/completions。扩展会自动处理这一点。
这仅支持以下 API:
- KoboldCpp
- llama.cpp
- Ollama
- Text Generation WebUI (oobabooga)
- vLLM
#
来源特定指南
#
KoboldCpp
有关安装和使用 KoboldCpp 的一般信息,请参阅 KoboldCpp 文档。
要使用 KoboldCpp 进行多模态描述:
- 获取一个多模态能力的模型,经过训练可以同时处理文本和图像提示。
- 还要获取模型的多模态投影。这些权重允许模型理解输入的文本和图像部分如何相互关联。
- 在 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" \
... 其他标志 ...
您可以尝试一些 LLaVA 微调模型:xtuner/llava-llama-3-8b-v1_1-gguf、xtuner/llava-phi-3-mini-gguf。
您可以使用您的特定微调模型所基于的基础模型的多模态投影。一些常见基础模型的投影可从 koboldcpp/mmproj 获取。