模型与尺寸
图像模型
| 模型 | 常量 | 特性 |
|---|---|---|
nai-diffusion-4-5-full | V4_5_FULL | 最新模型,支持角色参考 |
nai-diffusion-4-5-curated | V4_5_CURATED | V4.5 精选版,支持角色参考 |
nai-diffusion-4-full | V4_FULL | V4 完整版 |
nai-diffusion-4-curated | V4_CURATED | V4 精选版 |
nai-diffusion-3 | V3 | V3 模型 |
nai-diffusion-3-furry | V3_FURRY | V3 furry 模型 |
使用模型常量
typescript
import { NovelAI, V4_5_FULL, V4_FULL, V3 } from 'novelai-sdk-unofficial';
const client = new NovelAI();
// 使用字符串
const images = await client.image.generate({
prompt: '1girl',
model: 'nai-diffusion-4-5-full',
});
// 使用常量
const images = await client.image.generate({
prompt: '1girl',
model: V4_5_FULL,
});模型功能支持
| 功能 | V4.5 | V4 | V3 |
|---|---|---|---|
| 角色参考 | ✅ | ❌ | ❌ |
| 多角色定位 | ✅ | ✅ | ❌ |
| ControlNet | ✅ | ✅ | ✅ |
| 图生图 | ✅ | ✅ | ✅ |
| 流式生成 | ✅ | ✅ | ✅ |
辅助函数
typescript
import { isV4_5Model, isV4Model } from 'novelai-sdk-unofficial';
isV4_5Model('nai-diffusion-4-5-full'); // true
isV4_5Model('nai-diffusion-4-full'); // false
isV4Model('nai-diffusion-4-5-full'); // true
isV4Model('nai-diffusion-4-full'); // true
isV4Model('nai-diffusion-3'); // false尺寸预设
| 预设 | 尺寸 |
|---|---|
portrait | 832 × 1216 |
landscape | 1216 × 832 |
square | 1024 × 1024 |
large_portrait | 1024 × 1536 |
large_landscape | 1536 × 1024 |
使用尺寸预设
typescript
// 使用预设名称
const images = await client.image.generate({
prompt: '1girl',
size: 'landscape',
});
// 使用自定义尺寸
const images = await client.image.generate({
prompt: '1girl',
size: [1024, 1024],
});自定义尺寸要求
- 宽度和高度必须是 64 的倍数
- 范围:64 到 1600 像素
typescript
// 有效的自定义尺寸
size: [768, 1024] // ✅
size: [1280, 768] // ✅
// 无效的尺寸
size: [700, 1000] // ❌ 不是 64 的倍数
size: [2048, 2048] // ❌ 超过 1600尺寸验证
typescript
import { validateSize } from 'novelai-sdk-unofficial';
try {
validateSize([768, 1024]); // OK
validateSize([700, 1000]); // 抛出错误
} catch (error) {
console.error(error.message);
}采样器
| 采样器 | 常量 | 描述 |
|---|---|---|
k_euler | K_EULER | Euler 方法 |
k_euler_ancestral | K_EULER_ANCESTRAL | Euler ancestral(默认) |
k_dpm_2 | K_DPM_2 | DPM2 |
k_dpm_2_ancestral | K_DPM_2_ANCESTRAL | DPM2 ancestral |
k_dpmpp_2m | K_DPMPP_2M | DPM++ 2M |
k_dpmpp_2s_ancestral | K_DPMPP_2S_ANCESTRAL | DPM++ 2S ancestral |
k_dpmpp_sde | K_DPMPP_SDE | DPM++ SDE |
ddim | DDIM | DDIM |
typescript
import { NovelAI, K_DPMPP_2M } from 'novelai-sdk-unofficial';
const images = await client.image.generate({
prompt: '1girl',
sampler: K_DPMPP_2M,
});噪声调度
| 噪声调度 | 描述 |
|---|---|
karras | Karras 调度(默认) |
exponential | 指数调度 |
polyexponential | 多项式指数调度 |
typescript
const images = await client.image.generate({
prompt: '1girl',
noiseSchedule: 'exponential',
});