novita SDK for Python
Project description
novita Python SDK
this SDK is based on the official API documentation
join our discord server for help
New APIs
- latent-consistency-txt2img - latent consistency txt2img based on this paper
- cleanup - remove all your generated images
- remove-background - remove background from image
- remove-text - remove text from image
- reimagine - reimagine image
- doodle - doodle image
- merge-face - merge face
- mix-pose - mix pose
- outpainting - outpainting
- replace-object - remove object
- replace-background - replace background
- replace-sky - replace sky
- create-tile - create tile
Installation
pip install novita-client
Quick Start
Get api key refer to https://novita.ai/get-started/
import os
from novita_client import NovitaClient, Txt2ImgRequest, Samplers, ModelType, save_image
client = NovitaClient(os.getenv('NOVITA_API_KEY'), os.getenv('NOVITA_API_URI', None))
req = Txt2ImgRequest(
model_name='sd_xl_base_1.0.safetensors',
prompt='a dog flying in the sky',
batch_size=1,
cfg_scale=7.5,
height=1024,
width=1024,
sampler_name=Samplers.EULER_A,
)
save_image(client.sync_txt2img(req).data.imgs_bytes[0], 'output.png')
Examples
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
from novita_client import NovitaClient, Txt2ImgRequest, Samplers, ProgressResponseStatusCode, ModelType, add_lora_to_prompt, save_image
client = NovitaClient(os.getenv('NOVITA_API_KEY'), os.getenv('NOVITA_API_URI', None))
models = client.models()
# Anything V5/Ink, https://civitai.com/models/9409/or-anything-v5ink
checkpoint_model = models.filter_by_type(ModelType.CHECKPOINT).get_by_civitai_version_id(90854)
# Detail Tweaker LoRA, https://civitai.com/models/58390/detail-tweaker-lora-lora
lora_model = models.filter_by_type(ModelType.LORA).get_by_civitai_version_id(62833)
prompt = add_lora_to_prompt('a dog flying in the sky', lora_model.sd_name, "0.8")
res = client.sync_txt2img(Txt2ImgRequest(
prompt=prompt,
batch_size=1,
cfg_scale=7.5,
sampler_name=Samplers.EULER_A,
model_name=checkpoint_model.sd_name,
seed=103304,
))
if res.data.status != ProgressResponseStatusCode.SUCCESSFUL:
raise Exception('Failed to generate image with error: ' +
res.data.failed_reason)
save_image(res.data.imgs_bytes[0], "test.png")
Model Search
from novita_client import NovitaClient, ModelType
client = NovitaClient(os.getenv('NOVITA_API_KEY'), os.getenv('NOVITA_API_URI', None))
# filter by model type
print("lora count", len(client.models().filter_by_type(ModelType.LORA)))
print("checkpoint count", len(client.models().filter_by_type(ModelType.CHECKPOINT)))
print("textinversion count", len(
client.models().filter_by_type(ModelType.TEXT_INVERSION)))
print("vae count", len(client.models().filter_by_type(ModelType.VAE)))
print("controlnet count", len(client.models().filter_by_type(ModelType.CONTROLNET)))
# filter by civitai tags
client.models().filter_by_civi_tags('anime')
# filter by nsfw
client.models().filter_by_nsfw(False) # or True
# sort by civitai download
client.models().sort_by_civitai_download()
# chain filters
client.models().\
filter_by_type(ModelType.CHECKPOINT).\
filter_by_nsfw(False).\
filter_by_civitai_tags('anime')
ControlNet QRCode
import os
from novita_client import *
# get your api key refer to https://docs.novita.ai/get-started/
client = NovitaClient(os.getenv('NOVITA_API_KEY'), os.getenv('NOVITA_API_URI', None))
controlnet_model = client.models().filter_by_type(ModelType.CONTROLNET).get_by_name("control_v1p_sd15_qrcode_monster_v2")
if controlnet_model is None:
raise Exception("controlnet model not found")
req = Txt2ImgRequest(
prompt="a beautify butterfly in the colorful flowers, best quality, best details, masterpiece",
sampler_name=Samplers.DPMPP_M_KARRAS,
width=512,
height=512,
steps=30,
controlnet_units=[
ControlnetUnit(
input_image=read_image_to_base64(os.path.join(os.path.abspath(os.path.dirname(__file__)), "fixtures/qrcode.png")),
control_mode=ControlNetMode.BALANCED,
model=controlnet_model.sd_name,
module=ControlNetPreprocessor.NULL,
resize_mode=ControlNetResizeMode.JUST_RESIZE,
weight=2.0,
)
]
)
res = client.sync_txt2img(req)
if res.data.status != ProgressResponseStatusCode.SUCCESSFUL:
raise Exception('Failed to generate image with error: ' +
res.data.failed_reason)
save_image(res.data.imgs_bytes[0], "qrcode-art.png")
Txt2Img with Hires.Fix
import os
from novita_client import *
client = NovitaClient(os.getenv('NOVITA_API_KEY'), os.getenv('NOVITA_API_URI', None))
req = Txt2ImgRequest(
model_name='dreamshaper_8_93211.safetensors',
prompt='a dog flying in the sky',
width=512,
height=512,
batch_size=1,
cfg_scale=7.5,
sampler_name=Samplers.EULER_A,
enable_hr=True,
hr_scale=2.0
)
res = client.sync_txt2img(req)
if res.data.status != ProgressResponseStatusCode.SUCCESSFUL:
raise Exception('Failed to generate image with error: ' +
res.data.failed_reason)
save_image(res.data.imgs_bytes[0], "txt2img-hiresfix-1024.png")
SDXL Refiner
import os
from novita_client import *
client = NovitaClient(os.getenv('NOVITA_API_KEY'), os.getenv('NOVITA_API_URI', None))
req = Txt2ImgRequest(
model_name='sd_xl_base_1.0.safetensors',
prompt='a dog flying in the sky',
width=1024,
height=1024,
batch_size=1,
cfg_scale=7.5,
sampler_name=Samplers.EULER_A,
sd_refiner=Refiner(
checkpoint='sd_xl_refiner_1.0.safetensors',
switch_at=0.5,
))
res = client.sync_txt2img(req)
if res.data.status != ProgressResponseStatusCode.SUCCESSFUL:
raise Exception('Failed to generate image with error: ' +
res.data.failed_reason)
save_image(res.data.imgs_bytes[0], "txt2img-refiner.png")
Testing
export NOVITA_API_KEY=<YOUR_API_KEY>
python -m pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
novita_client-0.4.4.tar.gz
(584.5 kB
view hashes)
Built Distribution
Close
Hashes for novita_client-0.4.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5147778b5025d1b12d234f6106a29d03a165333bf18c3fdab345470845481425 |
|
MD5 | 85a573c386f71d117303c6f00f0cb1d8 |
|
BLAKE2b-256 | d719acdc16a076ae3d7a01a6da12518d5c3b4af4954edf2121037861eed8c884 |