เสื้อคลุม Python แบบอะซิงโครนัสที่มีน้ำหนักเบาสำหรับ API การสร้างภาพนวนิยาย
Metadata เพื่อตั้งค่าพารามิเตอร์การสร้างด้วยการตรวจสอบประเภทasyncio เพื่อเรียกใช้งานสร้างงานและส่งกลับเอาต์พุตได้อย่างมีประสิทธิภาพ สำคัญ
น่าเสียดายที่ Novelai ได้ลดค่าใช้จ่ายในการสร้างภาพของจุดสิ้นสุด API เริ่มตั้งแต่วันที่ 21 มีนาคม 2567 เป็นผลให้คุณลักษณะการสร้างพร้อมกันไม่สามารถใช้ได้อีกต่อไป
แหล่งที่มา
บันทึก
แพ็คเกจนี้ต้องใช้ Python 3.12 หรือสูงกว่า
ติดตั้ง/อัปเดตด้วย PIP:
pip install -U novelaiนำเข้าแพ็คเกจที่ต้องการและเริ่มต้นลูกค้าด้วยข้อมูลรับรองบัญชี Novelai ของคุณ
import asyncio
from novelai import NAIClient
# Replace argument values with your actual account credentials
username = "Your NovelAI username"
password = "Your NovelAI password"
async def main ():
client = NAIClient ( username , password , proxy = None )
await client . init ( timeout = 30 )
asyncio . run ( main ()) หลังจากเริ่มต้นได้สำเร็จคุณสามารถสร้างภาพด้วยวิธี generate_image วิธีการใช้วัตถุ Metadata เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์ host เสริมเพื่อระบุแบ็กเอนด์ที่จะใช้
โดยการผ่าน verbose=True วิธีการจะพิมพ์ค่าใช้จ่าย ANLAs โดยประมาณในแต่ละครั้งที่มีการร้องขอการสร้าง
รายการพารามิเตอร์แบบเต็มของ Metadata สามารถพบได้ในนิยามคลาส
from novelai import Metadata , Resolution
async def main ():
metadata = Metadata (
prompt = "1girl" ,
negative_prompt = "bad anatomy" ,
res_preset = Resolution . NORMAL_PORTRAIT ,
n_samples = 1 ,
)
print ( f"Estimated Anlas cost: { metadata . calculate_cost ( is_opus = False ) } " )
output = await client . generate_image (
metadata , verbose = False , is_opus = False
)
for image in output :
image . save ( path = "output images" , verbose = True )
asyncio . run ( main ()) ในการดำเนินการ img2img ให้ตั้งค่าพารามิเตอร์ action ในข้อมูลเมตาเป็น Action.IMG2IMG และพารามิเตอร์ image ไปยังอิมเมจพื้นฐานของคุณ ภาพพื้นฐานจะต้องถูกแปลงเป็นรูปแบบที่เข้ารหัส Base64 สิ่งนี้สามารถทำได้โดยใช้โมดูล base64
import base64
from novelai import Metadata , Action
async def main ():
with open ( "tests/images/portrait.jpg" , "rb" ) as f :
base_image = base64 . b64encode ( f . read ()). decode ( "utf-8" )
metadata = Metadata (
prompt = "1girl" ,
negative_prompt = "bad anatomy" ,
action = Action . IMG2IMG ,
width = 832 ,
height = 1216 ,
n_samples = 1 ,
image = base_image ,
strength = 0.5 ,
noise = 0.1 ,
)
output = await client . generate_image ( metadata , verbose = True )
for image in output :
image . save ( path = "output images" , verbose = True )
asyncio . run ( main ()) ในการดำเนินการในการ inpaint การในการตั้งค่าพารามิเตอร์ action ในข้อมูลเมตาเป็น Action.INPAINTING และพารามิเตอร์ image ไปยังอิมเมจพื้นฐานของคุณและพารามิเตอร์ mask ไปยังภาพหน้ากากสีดำและสีขาวซึ่งสีขาวเป็นพื้นที่ของ inpaint และสีดำ ทั้งภาพฐานและหน้ากากจำเป็นต้องได้รับการแปลงเป็นรูปแบบที่เข้ารหัสฐาน 64 สิ่งนี้สามารถทำได้โดยใช้โมดูล base64
import base64
from novelai import Metadata , Model , Action , Resolution
async def main ():
with open ( "tests/images/portrait.jpg" , "rb" ) as f :
base_image = base64 . b64encode ( f . read ()). decode ( "utf-8" )
with open ( "tests/images/inpaint_left.jpg" , "rb" ) as f :
mask = base64 . b64encode ( f . read ()). decode ( "utf-8" )
metadata = Metadata (
prompt = "1girl" ,
negative_prompt = "bad anatomy" ,
model = Model . V3INP ,
action = Action . INPAINT ,
res_preset = Resolution . NORMAL_PORTRAIT ,
image = base_image ,
mask = mask ,
)
output = await client . generate_image ( metadata , verbose = True )
for image in output :
image . save ( path = "output images" , verbose = True )
asyncio . run ( main ()) Vibe Transfer ไม่มีประเภทการกระทำของตัวเอง แต่จะทำได้โดยการเพิ่มพารามิเตอร์ reference_image_multiple ในข้อมูลเมตา ภาพอ้างอิงจะต้องถูกแปลงเป็นรูปแบบที่เข้ารหัส Base64 สิ่งนี้สามารถทำได้โดยใช้โมดูล base64
import base64
from novelai import Metadata , Resolution
async def main ():
with open ( "tests/images/portrait.jpg" , "rb" ) as f :
base_image = base64 . b64encode ( f . read ()). decode ( "utf-8" )
metadata = Metadata (
prompt = "1girl" ,
negative_prompt = "bad anatomy" ,
res_preset = Resolution . NORMAL_PORTRAIT ,
reference_image_multiple = [ base_image ],
reference_information_extracted_multiple = [ 1 ],
reference_strength_multiple = [ 0.6 ],
)
output = await client . generate_image ( metadata , verbose = True )
for image in output :
image . save ( path = "output images" , verbose = True )
asyncio . run ( main ())นอกจากนี้ยังมีฟังก์ชั่นโมดูลเพื่อสร้างโทเค็นการเข้าถึงโดยตรงใน CLI
เมื่อมีการสร้างโทเค็นการเข้าถึงแล้วมันจะถูกต้องเป็นเวลา 30 วัน โทเค็นสามารถใช้เป็นส่วนหัวการรับรองความถูกต้องเพื่อขอ Novelai
# Replace argument values with your actual account credentials
python3 -m novelai login < username > < password > แบ็กเอนด์นวนิยาย
Aedial/Novelai-Api
ฐานความรู้ที่ไม่เป็นทางการของนวนิยาย