غلاف بيثون غير متزامن خفيف الوزن لفيلم جيل جيل.
Metadata لإعداد معلمات الجيل بسهولة مع التحقق من صحة النوع.asyncio لتشغيل مهام توليد وإرجاع مخرجات بكفاءة. مهم
لسوء الحظ ، قامت Novelai بتراجع وظيفة توليد الصور الخاصة بنقطة نهاية API بدءًا من 21 مارس 2024. ونتيجة لذلك ، لم تعد ميزة التوليد المتزامنة متوفرة.
مصدر
ملحوظة
تتطلب هذه الحزمة 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 ، قم image معلمة action في البيانات الوصفية إلى Action.INPAINTING mask يجب تحويل كل من الصورة الأساسية والقناع إلى تنسيق مشفر BASE64. يمكن تحقيق ذلك باستخدام وحدة 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 نوع الإجراء الخاص به. بدلاً من ذلك ، يتم تحقيق ذلك عن طريق إضافة معلمة 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 > Novelai الخلفية
Aedial/Novelai-api
Novelai قاعدة المعرفة غير الرسمية