#web-ui #api-calls #openapi #lora #api-client #automatic1111 #stable-diffusion-webui

sdwebuiapi

用于与AUTOMATIC1111/stable-diffusion-webui的openapi交互的库。

2个版本

0.0.6 2023年12月3日
0.0.5 2023年10月6日

#6 in #lora

MIT许可证

18KB
355

sdwebuiapi

AUTOMATIC1111/stable-diffusion-webui的openapi交互的Rust库。

支持txt2img API调用,具有controlnet 2.0和lora支持。

API调用参数基于https://127.0.0.1:7860/docs的文档,并在webui 1.5上进行了成功测试。

安装

cargo add sdwebuiapi

用法

webuiapi_demo.ipynb包含带有原始图像的示例代码。此文档中的图像以jpeg格式压缩。

创建API客户端

let api_auth = Some(sdwebuiapi::OpenApiV1Auth {
    username: "username set in webui's --api-auth arg",
    password: "password set in webui's --api-auth arg",
});
// or `let api_auth = None` if webui is not protected by api_auth
let client = sdwebuiapi::Client::new("https://127.0.0.1:7860", api_auth);

txt2img

let mut payload = sdwebuiapi::TextToImagePayload {
    prompt: "a cyberpunk cat".to_owned(),
    ..Default::default()
};

payload.set_base_model("v1-5-pruned-emaonly.safetensors [6ce0161689]");

let response: sdwebuiapi::TextToImageResponse = client.txt2img(payload).await;

// the generated image is in base64 format
let raw_b64_str: &str = &response.images[0];

带有controlnet和lora的txt2img

将图像编码为base64,controlnet接受无头的raw base64 png图像字符串

let input_image = std::fs::read("input-image.png").unwrap();
let raw_b64_str = data_encoding::BASE64.encode(&input_image);

构建txt2img参数

let controlnet_payload = sdwebuiapi::ControlnetPayload {
    input_image: raw_b64_str.clone(),
    model: "control_v11p_sd15_canny [d14c016b]".to_owned(),
    module: "canny".to_owned(),
    ..Default::default()
};

let lora_paylod = sdwebuiapi::LoraPayload {
    name: "add_detail".to_owned(),
    weight: 1.0
};

let mut payload = sdwebuiapi::TextToImagePayload {
    prompt: "a cyberpunk cat".to_owned(),
    ..Default::default()
};

payload
    .set_base_model("v1-5-pruned-emaonly.safetensors [6ce0161689]")
    .add_loras(&vec![lora_paylod])
    .add_controlnet_units(&vec![controlnet_payload]);

生成图像

let response = client.txt2img(payload).await;

依赖项

~5–20MB
~271K SLoC