NovelAI Python Binding With Pydantic
Project description
✨ NovelAI api python sdk with Pydantic, modern and user-friendly.
The goal of this repository is to use Pydantic to build legitimate requests to access the NovelAI API service.
Python >= 3.9 is required.
Roadmap 🚧
- tool.random_prompt
- tool.paint_mask
- tool.image_metadata
- /ai/generate-image
- /user/subscription
- /user/login
- /user/information
- /ai/upscale
- /ai/generate-image/suggest-tags
- /ai/generate-voice
- /ai/generate-stream
- /ai/generate
- /ai/annotate-image
- /ai/classify
- /ai/generate-prompt
GenerateImageInfer.calculate_cost is correct in most cases, but please request account information to get accurate consumption information.
This repo is maintained by me personally now. If you have any questions, please feel free to open an issue.
Usage 🖥️
pip install novelai-python
More examples can be found in the playground directory, read code as documentation.
import asyncio
import os
from dotenv import load_dotenv
from pydantic import SecretStr
from novelai_python import GenerateImageInfer, ImageGenerateResp, ApiCredential
load_dotenv()
enhance = "year 2023,dynamic angle, best quality, amazing quality, very aesthetic, absurdres"
session = ApiCredential(api_token=SecretStr(os.getenv("NOVELAI_JWT"))) # pst-***
async def main():
gen = await GenerateImageInfer.build(prompt=f"1girl,{enhance}")
cost = gen.calculate_cost(is_opus=True)
print(f"charge: {cost} if you are vip3")
resp = gen.request(session=session)
resp: ImageGenerateResp
print(resp.meta)
file = resp.files[0]
with open(file[0], "wb") as f:
f.write(file[1])
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
LLM
import asyncio
import os
from dotenv import load_dotenv
from pydantic import SecretStr
from novelai_python import APIError, LoginCredential
from novelai_python.sdk.ai.generate import TextLLMModel, LLM
load_dotenv()
username = os.getenv("NOVELAI_USER", None)
assert username is not None
# credential = JwtCredential(jwt_token=SecretStr(jwt))
login_credential = LoginCredential(
username=os.getenv("NOVELAI_USER"),
password=SecretStr(os.getenv("NOVELAI_PASS"))
)
async def chat(prompt: str):
try:
agent = LLM.build(prompt=prompt, model=TextLLMModel.Kayra)
result = await agent.request(session=login_credential)
except APIError as e:
raise Exception(f"Error: {e.message}")
print(f"Result: \n{result.text}")
loop = asyncio.get_event_loop()
loop.run_until_complete(chat("Hello"))
Random Prompt
from novelai_python.tool.random_prompt import RandomPromptGenerator
prompt = RandomPromptGenerator(nsfw_enabled=False).random_prompt()
print(prompt)
Run A Server
pip install novelai_python
python3 -m novelai_python.server -h '127.0.0.1' -p 7888
Acknowledgements 🙏
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
novelai_python-0.4.8.tar.gz
(5.0 MB
view hashes)
Built Distribution
Close
Hashes for novelai_python-0.4.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 154328d715bcfbc47cc9c5489fd2aceccd0374ff35f364f0de17c41fb927220d |
|
MD5 | d5bee235c317f7e7517e010dfb25cce8 |
|
BLAKE2b-256 | ffad74f4b561a4b4ce25dbe9776520709e410cbac3c00ea7cfe45403e1ecec09 |