图像生成
图像生成 API 的基本用法。
简单生成
typescript
import { NovelAI } from 'novelai-sdk-unofficial';
import { writeFileSync } from 'fs';
const client = new NovelAI({ apiKey: 'your-api-key' });
const images = await client.image.generate({
prompt: '1girl, cat ears, masterpiece, best quality',
});
writeFileSync('output.png', images[0]);带选项生成
typescript
const images = await client.image.generate({
prompt: '1girl, cat ears, masterpiece, best quality',
model: 'nai-diffusion-4-5-full',
size: 'portrait',
steps: 23,
scale: 5.0,
sampler: 'k_euler_ancestral',
seed: 12345,
});参数说明
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
prompt | string | 必填 | 图像的文本描述 |
model | ImageModel | 'nai-diffusion-4-5-full' | 使用的模型 |
size | ImageSize | 'portrait' | 尺寸预设或 [width, height] |
negativePrompt | string | '' | 图像中要避免的内容 |
quality | boolean | true | 自动追加质量标签 |
ucPreset | UCPreset | 'light' | 不良内容预设 |
steps | number | 23 | 生成步数 (1-50) |
scale | number | 5.0 | CFG 比例 (0-10) |
sampler | Sampler | 'k_euler_ancestral' | 采样方法 |
noiseSchedule | NoiseSchedule | 'karras' | 噪声调度 |
seed | number | 随机 | 随机种子 (0-999999999) |
nSamples | number | 1 | 图像数量 (1-8) |
cfgRescale | number | 0 | CFG 重缩放 (0-1) |
varietyBoost | boolean | false | 启用多样性增强 |
质量标签
当 quality: true(默认)时,SDK 会自动在提示词后追加质量增强标签。
typescript
// 带质量标签(默认)
const images = await client.image.generate({
prompt: '1girl',
quality: true,
});
// 不带质量标签
const images = await client.image.generate({
prompt: '1girl',
quality: false,
});负面提示词
使用 negativePrompt 指定要避免的内容:
typescript
const images = await client.image.generate({
prompt: '1girl, standing',
negativePrompt: 'bad anatomy, blurry',
});UC 预设
ucPreset 参数添加预定义的负面提示词:
'none'- 无预设'light'- 轻度过滤(默认)'strong'- 强力过滤'furry_focus'- Furry 专用过滤'human_focus'- 人物专用过滤
typescript
const images = await client.image.generate({
prompt: '1girl',
ucPreset: 'strong',
});批量生成
一次生成多张图像:
typescript
const images = await client.image.generate({
prompt: '1girl, various poses',
nSamples: 4,
});
images.forEach((img, i) => {
writeFileSync(`output_${i}.png`, img);
});可复现结果
使用固定种子获得可复现的结果:
typescript
const images = await client.image.generate({
prompt: '1girl',
seed: 42,
});SDK 内部处理
使用 High-Level API 时,SDK 会自动处理以下内容:
自动添加的参数
SDK 会自动设置以下 API 参数以确保最佳兼容性:
| 参数 | 值 | 说明 |
|---|---|---|
use_new_shared_trial | true | 启用新的共享试用模式 |
params_version | 3 | API 参数版本 |
prefer_brownian | true | 使用布朗运动噪声 |
legacy | false | 禁用旧版模式 |
legacy_uc | false | 禁用旧版 UC 模式 |
legacy_v3_extend | false | 禁用 V3 扩展模式 |
V4+ 模型的 Prompt 结构
对于 V4 和 V4.5 模型,SDK 会自动将 prompt 转换为 v4_prompt 结构:
typescript
// 用户输入
{
prompt: '1girl, cat ears',
quality: true,
}
// SDK 自动转换为
{
input: '1girl, cat ears',
v4_prompt: {
caption: {
base_caption: '1girl, cat ears, very aesthetic, masterpiece, no text',
char_captions: []
},
use_coords: false,
use_order: true
}
}UC 预设映射
ucPreset 字符串会自动映射为 API 需要的数字:
| 预设 | API 值 |
|---|---|
'strong' | 0 |
'light' | 1 |
'furry_focus' | 2 |
'human_focus' | 3 |
'none' | 4 |