add api_version to config and more models

This commit is contained in:
silveroxides
2025-06-21 11:39:00 +02:00
parent 2d5d99b22b
commit ce29c7f6d3
+34 -13
View File
@@ -47,6 +47,7 @@ class SSL_GeminiAPIKeyConfig(ComfyNodeABC):
return {
"required": {
"api_key": (IO.STRING, {"multiline": False}),
"api_version": (["v1", "v1alpha", "v1beta", "v2beta"], {"default": "v1alpha"}),
}
}
@@ -55,8 +56,8 @@ class SSL_GeminiAPIKeyConfig(ComfyNodeABC):
FUNCTION = "configure"
CATEGORY = "API/Gemini"
def configure(self, api_key):
config = {"api_key": api_key}
def configure(self, api_key, api_version):
config = {"api_key": api_key, "api_version": api_version}
return (config,)
@@ -68,7 +69,7 @@ class SSL_GeminiTextPrompt(ComfyNodeABC):
"config": ("GEMINI_CONFIG",),
"prompt": (IO.STRING, {"multiline": True}),
"system_instruction": (IO.STRING, {"default": "You are a helpful AI assistant.", "multiline": True}),
"model": (["gemini-1.0-pro", "gemini-exp-1206", "gemini-1.5-flash", "gemini-1.5-pro", "gemini-2.0-flash", "gemini-2.0-flash-lite-001", "gemini-2.0-flash-exp", "gemini-2.0-pro", "gemini-2.0-flash-live", "gemini-2.5-flash", "gemini-2.5", "gemini-2.5-pro-1p-freebie"], {"default": "gemini-2.0-flash"}),
"model": (["gemini-1.0-pro", "gemini-exp-1206", "gemini-1.5-flash", "gemini-1.5-pro", "gemini-2.0-flash", "gemini-2.0-flash-lite-001", "gemini-2.0-flash-exp", "gemini-2.0-pro", "gemini-2.0-flash-live", "gemini-2.5-pro", "gemini-2.5-pro-preview-05-06", "gemini-2.5-flash", "gemini-2.5-flash-preview-04-17", "gemini-2.5-flash-lite-preview-06-17"], {"default": "gemini-2.0-flash"}),
"temperature": (IO.FLOAT, {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
"top_p": (IO.FLOAT, {"default": 0.95, "min": 0.0, "max": 1.0, "step": 0.01}),
"top_k": (IO.INT, {"default": 40, "min": 1, "max": 100, "step": 1}),
@@ -95,17 +96,37 @@ class SSL_GeminiTextPrompt(ComfyNodeABC):
def _pad_text_with_joiners(self, text: str) -> str:
if not text:
return ""
padding_char = "\u2060"
# Build the pattern using an f-string to correctly embed the unicode char.
# This is not a raw string.
pattern = f"([^{padding_char}])(?=[^{padding_char}])"
replacement = r"\1" + padding_char
joined_text = re.sub(pattern, replacement, text)
return padding_char + joined_text + padding_char
patternperiod = r"\."
patternspace = r"\s"
patterncomma = r","
patterndash = r"\-"
patternsingq = r"\'"
patterndoubq = r"\""
patternword = r"(.)(?=.)"
replperiod = r"。"
replspace = r""
replcomma = r"、"
repldash = r"‐"
replsingq = r"ʼ"
repldoubq = r"ˮ"
replword = r"⁠\1⁠"
joined_textperiod = re.sub(patternperiod, replperiod, text)
joined_textspace = re.sub(patternspace, replspace, joined_textperiod)
joined_textcomma = re.sub(patterncomma, replcomma, joined_textspace)
joined_textdash = re.sub(patterndash, repldash, joined_textcomma)
joined_textsingq = re.sub(patternsingq, replsingq, joined_textdash)
joined_textdoubq = re.sub(patterndoubq, repldoubq, joined_textsingq)
joined_textfinal = re.sub(patternword, replword, joined_textdoubq)
print(joined_textfinal)
return joined_textfinal
def save_binary_file(self, data, mime_type):
ext = ".bin"
@@ -227,7 +248,7 @@ class SSL_GeminiTextPrompt(ComfyNodeABC):
print(f"[WARNING] Failed to set HTTP client proxy: {str(proxy_error)}")
except ImportError as e:
print(f"[WARNING] Failed to import Google API HTTP client library: {str(e)}")
client = genai.Client(api_key=config["api_key"], **client_options)
client = genai.Client(api_key=config["api_key"], http_options=types.HttpOptions(api_version=config["api_version"]), **client_options)
print(f"[INFO] Gemini client initialized successfully")
except Exception as e:
print(f"[ERROR] Gemini client initialization failed: {str(e)}")