# 图像描述生成

图像描述生成功能允许 SillyTavern 自动为聊天中使用的图像生成文本描述。

当您希望您的 AI 角色能够"看到"并对对话中的视觉内容做出回应时,请使用图像描述生成功能。

  • 为您上传或粘贴到消息中的图像创建描述
  • 为聊天历史记录中的现有图像添加上下文
  • 使用各种来源进行生成,包括本地模型、云 API 和众包网络

有些选项无需设置、无需付费、无需 GPU。也有一些选项需要其中部分或全部条件。选择最适合您需求和资源的选项。

图像描述生成扩展是 SillyTavern 的内置功能,无需单独安装。

# 快速开始

  1. 设置:
    • 扩展 面板中打开 图像描述生成 面板
    • 选择描述生成来源(很可能是"本地"或"多模态")
    • 对于"多模态",确保您已在 API 连接 标签页中设置连接
  2. 生成描述:
    • 扩展 弹出菜单中选择"生成描述"
    • 在提示时选择图像文件
    • 等待描述生成完成
  3. 查看并发送:
    • 带描述的图像将插入到您的消息中
    • 使用图像工具提示查看描述
    • 点击 发送 查看您的角色对图像的看法!

# 面板控制

# 来源选择

选择图像描述生成的来源。支持的选项:

来源 描述
多模态 云端:OpenAI、Anthropic、Google、MistralAI 等。
本地:Ollama、llama.cpp、KoboldCpp、Text Generation WebUI 和 vLLM。
支持自定义提示,您可以向图像提问。
本地 使用在您的 SillyTavern 服务器本地运行的 transformers.js。零设置!
Horde 使用 AI Horde 网络,这是一个众包分布式图像生成模型网络。无需下载、配置或付费。响应时间可变。
Extras Extras 项目已于 2024 年 4 月停止,不再维护或支持。

# 描述配置

  • 描述提示:输入描述生成的自定义提示。默认提示是"这张图像中有什么?"
  • 每次询问:切换以请求每个图像描述的自定义提示

# 消息模板

  • 消息模板:自定义描述消息模板。使用 {{caption}} 宏插入生成的描述。默认模板是 [{{user}} sends {{char}} a picture that contains: {{caption}}]

# 自动描述

  • 自动描述图像:切换以启用粘贴或附加到消息的图像的自动描述
  • 保存前编辑描述:切换以允许在保存描述之前进行编辑

# 描述图像

在 SillyTavern 中描述图像的所有方法:

  • 扩展 弹出菜单中选择"生成描述"并在提示时选择图像文件
  • 点击消息中已有图像顶部的 描述 图标
  • 启用 自动描述 后直接将图像粘贴到聊天输入中
  • 使用消息操作中的 嵌入文件或图像 按钮将图像文件附加到消息
  • 发送带有嵌入图像的消息
  • 使用 /caption 斜杠命令

# 自动描述

自动描述功能允许您在图像添加到聊天时自动生成描述,无需每次手动触发描述过程。

要启用此功能,请在图像描述生成面板中选择"自动描述图像"复选框。您还可以通过选中"保存前编辑描述"框来选择在保存描述之前进行编辑。

启用后,自动描述将在以下情况下触发:

  • 当图像直接粘贴到聊天输入中时
  • 当图像文件附加到消息时
  • 当发送带有嵌入图像的消息时

系统将使用您选择的描述来源(本地、Extras、Horde 或多模态)和配置的设置为图像生成描述。

# 保存前编辑描述(优化模式)

如果您启用了"保存前编辑描述"选项:

  1. 图像添加后,将出现一个带有生成描述的弹出窗口。
  2. 您可以根据需要查看和编辑描述。
  3. 点击"确定"应用描述,或点击"取消"丢弃描述而不保存。

# 描述发送

生成的(以及可选编辑的)描述将使用您配置的消息模板自动插入到提示中。默认情况下,它将以此格式发送:

[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 权重。查找带有 ONNXimage-to-text 标签的模型,或具有名为 onnx 且充满 .onnx 文件的文件夹的模型。

# 多模态来源

# 通用配置

  • 模型:选择用于图像描述的模型。选项根据所选 API 而异。
  • 允许反向代理:切换以允许使用定义且有效的反向代理(OpenAI、Anthropic、Google、Mistral、xAI)

描述来源的 API 密钥和端点 URL 在 API 连接 面板中管理。首先在 API 连接中设置连接,然后在描述生成中选择它作为您的描述来源。

对于大多数本地后端,您需要在模型后端中设置一些选项,而不是在 SillyTavern 中。如果您的后端一次只能运行一个模型且不支持自动切换,您有几个选项可以使用不同的模型进行聊天和描述:

  1. 辅助端点:使用辅助端点功能(参见下面的辅助端点部分)连接到不同的 API 服务器进行描述
  2. 多种连接类型:在 API 连接中使用文本完成和聊天完成模式连接到您的后端 - 这为您提供了到同一后端类型的两个独立连接

# 来源

要使用这些描述来源之一,请在来源下拉菜单中选择多模态。

  • "我想要尽可能最好的描述,不介意付费":Anthropic
  • "我不想支付任何费用或运行任何东西":Google AI Studio 免费版
  • "我想在本地描述图像并且希望它正常工作":Ollama
  • "我想让本地 AI 的梦想继续":KoboldCpp
  • "我想在它不工作时抱怨":Extras
API 提供商 描述
01.AI (Yi) 云端,付费,yi-vision
AI/ML API 云端,付费,各种具有视觉能力的 GPT、Claude 和 Gemini 模型
Anthropic 云端,付费,具有视觉能力的 Claude 模型:claude-3-5-sonnet/haiku、claude-3-opus/sonnet
Cohere 云端,付费,Aya Vision 8B / 32B
自定义(OpenAI 兼容) 用于自定义 OpenAI 兼容 API,使用 API 连接标签页中当前配置的模型
Google AI Studio 云端,免费版后付费,Gemini Flash/Pro
Google Vertex AI 云端,免费版,Gemini Flash/Pro
Groq 云端,llama-3.2-vision 11B/90B,LLaVA
KoboldCpp 本地,必须在 KoboldCpp 中配置模型
llama.cpp 本地,必须在 llama.cpp 中配置模型
MistralAI 云端,付费,pixtral-large、pixtral-12B
Ollama 本地,可以在可用模型之间切换,并在 API 连接中配置后在描述生成中下载额外的视觉模型
OpenAI 云端,付费,GPT-4 Vision、4-turbo、4o、4o-mini
OpenRouter 云端,付费(可能有免费选项),许多模型,在 API 连接中配置后从描述生成中可用的模型中选择
Pollinations 云端,免费
Text Generation WebUI (oobabooga) 本地,必须在 ooba 中配置模型
vLLM 本地
xAI (Grok) 云端,付费,grok-vision

# 辅助端点

默认情况下,多模态来源使用 API 连接标签页中配置的主端点。 您还可以专门为多模态描述设置辅助端点。

  • 扩展 面板中打开 图像描述生成 面板。
  • 选择"多模态"作为描述来源和首选 API 提供商。
  • 在"辅助描述端点 URL"字段中输入辅助端点的有效 URL。
  • 选中"使用辅助 URL"框以启用辅助端点。

这仅支持以下 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-ggufxtuner/llava-phi-3-mini-gguf

您可以使用您的特定微调模型所基于的基础模型的多模态投影。一些常见基础模型的投影可从 koboldcpp/mmproj 获取。