4 Commits
4 changed files with 26 additions and 5 deletions
+10 -1
View File
@@ -35,6 +35,7 @@ class OpenAiDalle3:
"retry": ("INT", {"default": 0, "min": 0, "max": 5}),
"auto_save": ("BOOLEAN", {"default": False}),
"auto_save_dir": ("STRING", {"multiline": False, "default": "./output_dalle3"}),
"blank_image_if_failed": ("BOOLEAN", {"default": False}),
}
}
@@ -44,7 +45,10 @@ class OpenAiDalle3:
OUTPUT_NODE = True
CATEGORY = "Generator"
def doit(self, resolution, dummy_seed, prompt, quality, style, retry, auto_save, auto_save_dir):
def doit(
self, resolution, dummy_seed, prompt, quality, style, retry, auto_save, auto_save_dir,
blank_image_if_failed):
if (self.__cache_image is None or
self.__previous_resolution != resolution or self.__previous_seed != dummy_seed or
self.__previous_prompt != prompt):
@@ -63,6 +67,11 @@ class OpenAiDalle3:
break
except openai.BadRequestError as ex:
if retry_count >= retry:
print("OpenAiDalle3: received BadRequestError: %s" % (json.dumps(ex.response.json()),))
if blank_image_if_failed:
widths = resolution.split("x")
xw, yw = int(widths[0]), int(widths[1])
return torch.zeros(1, yw, xw, 4), xw, yw, "(BadRequestError)"
raise ex
print("OpenAiDalle3: received BadRequestError, retrying... #%d : %s" % (
retry_count + 1, json.dumps(ex.response.json())))
+6
View File
@@ -12,6 +12,12 @@ class OpenAiGpt:
return {
"required": {
"model": ([
"gpt-4o",
"gpt-4o-2024-05-13",
"gpt-4-turbo",
"gpt-4-turbo-2024-04-09",
"gpt-4-turbo-preview",
"gpt-4-0125-preview",
"gpt-4-1106-preview",
"gpt-4-vision-preview",
"gpt-4",
+8 -2
View File
@@ -22,6 +22,12 @@ class OpenAiGpt4v:
"required": {
"image": ("IMAGE",),
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
"model": ([
"gpt-4o",
"gpt-4o-mini",
"gpt-4-turbo",
"gpt-4-vision-preview",
], {"default": "gpt-4o"}),
"detail": (["auto", "low", "high"],),
"max_tokens": ("INT", {"default": 512, "min": 16, "max": 4096}),
"prompt": ("STRING", {
@@ -36,7 +42,7 @@ class OpenAiGpt4v:
OUTPUT_NODE = False
CATEGORY = "Generator"
def doit(self, image, seed, detail, max_tokens, prompt):
def doit(self, image, seed, model, detail, max_tokens, prompt):
_ = seed
im0 = torchvision.transforms.functional.to_pil_image(torch.permute(image[0], (2, 0, 1)))
@@ -50,7 +56,7 @@ class OpenAiGpt4v:
}
payload = {
"model": "gpt-4-vision-preview",
"model": model if model is not None and model != "" else "gpt-4o",
"messages": [
{
"role": "user",
+2 -2
View File
@@ -5,7 +5,7 @@ class SeedGenerator:
__generation = 0
def __init__(self):
self.__previous_seed = random.randint(0, 0xffffffffffffffff)
self.__previous_seed = random.randint(0, 0x7fffffffffffffff)
@classmethod
def INPUT_TYPES(cls):
@@ -29,6 +29,6 @@ class SeedGenerator:
def doit(self, generation_mode):
if generation_mode == "random":
self.__previous_seed = random.randint(0, 0xffffffffffffffff)
self.__previous_seed = random.randint(0, 0x7fffffffffffffff)
print("NegiTools_SeedGenerator: provided seed value = %d" % self.__previous_seed)
return (self.__previous_seed,)