跳到主要内容

Ollama 图像生成

注意

Ollama 图像生成功能仍处于实验阶段。Ollama API 与 LangChain4j 集成可能在未来版本中发生变化。

Maven 依赖

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama</artifactId>
<version>${latest version here}</version>
</dependency>

API

  • OllamaImageModel

OllamaImageModel 实现了 ImageModel,通过 Ollama 的标准 /api/generate 端点支持文本到图像生成。不支持图像编辑,也不支持从同一提示词生成多张图像。

这需要支持实验性图像生成能力的 Ollama 版本与模型。普通文本模型会返回文本而非图像,并会抛出 OllamaImageGenerationException

用法

ImageModel imageModel = OllamaImageModel.builder()
.baseUrl("http://localhost:11434")
.modelName("x/z-image-turbo")
.width(1024)
.height(768)
.steps(20)
.seed(42)
.build();

Response<Image> response = imageModel.generate("a sunset over mountains");
Image image = response.content();
byte[] imageBytes = Base64.getDecoder().decode(image.base64Data());
Files.write(Path.of("ollama-image.png"), imageBytes);

参数

ParameterDescriptionType
httpClientBuilder参见 可定制 HTTP 客户端HttpClientBuilder
baseUrlOllama 服务器的基础 URL。String
modelName从 Ollama 服务器使用的图像生成模型。String
width生成图像的宽度(像素)。使用 0 或不设置则采用 Ollama/模型默认值。设置时必须在 0 到 4096 之间。Integer
height生成图像的高度(像素)。使用 0 或不设置则采用 Ollama/模型默认值。设置时必须在 0 到 4096 之间。Integer
steps扩散步数。使用 0 或不设置则采用 Ollama/模型默认值。不得为负数。Integer
seed通过 Ollama options.seed 发送的随机种子。Integer
timeoutAPI 调用允许的最长时间。Duration
customHeaders自定义 HTTP 请求头。Map<String, String>
logRequests是否记录请求日志。Boolean
logResponses是否记录响应日志。Boolean
maxRetriesAPI 调用失败时的最大重试次数。Integer

目前尚无针对 OllamaImageModel 的 Spring Boot starter 配置。

生成的图像以 Base64 编码的 PNG 数据返回。不暴露 URL 输出、token 用量,以及 Ollama 流式进度字段(如 completedtotal)。