edit config_options_node add api protocol
This commit is contained in:
@@ -49,7 +49,7 @@ class GeminiImage(io.ComfyNode):
|
||||
"""
|
||||
# 如果提供了配置覆盖,则使用覆盖配置
|
||||
if config_options is not None:
|
||||
base_url = config_options.get('base_url', '').strip()
|
||||
base_url = config_options.get('api_url', '').strip()
|
||||
api_key = config_options.get('api_key', '').strip()
|
||||
timeout = config_options.get('timeout', 120)
|
||||
|
||||
@@ -98,8 +98,8 @@ class GeminiImage(io.ComfyNode):
|
||||
|
||||
# 如果有配置覆盖,则使用覆盖的值(如果提供了)
|
||||
if config_options is not None:
|
||||
if config_options.get('base_url', '').strip():
|
||||
base_url = config_options['base_url'].strip()
|
||||
if config_options.get('api_url', '').strip():
|
||||
base_url = config_options['api_url'].strip()
|
||||
if config_options.get('api_key', '').strip():
|
||||
api_key = config_options['api_key'].strip()
|
||||
if config_options.get('timeout'):
|
||||
|
||||
@@ -45,7 +45,7 @@ class GeminiSTT(io.ComfyNode):
|
||||
"""
|
||||
# 如果提供了配置覆盖,则使用覆盖配置
|
||||
if config_options is not None:
|
||||
base_url = config_options.get('base_url', '').strip()
|
||||
base_url = config_options.get('api_url', '').strip()
|
||||
api_key = config_options.get('api_key', '').strip()
|
||||
timeout = config_options.get('timeout', 120)
|
||||
|
||||
@@ -94,8 +94,8 @@ class GeminiSTT(io.ComfyNode):
|
||||
|
||||
# 如果有配置覆盖,则使用覆盖的值(如果提供了)
|
||||
if config_options is not None:
|
||||
if config_options.get('base_url', '').strip():
|
||||
base_url = config_options['base_url'].strip()
|
||||
if config_options.get('api_url', '').strip():
|
||||
base_url = config_options['api_url'].strip()
|
||||
if config_options.get('api_key', '').strip():
|
||||
api_key = config_options['api_key'].strip()
|
||||
if config_options.get('timeout'):
|
||||
|
||||
@@ -77,7 +77,7 @@ class GeminiTTS(io.ComfyNode):
|
||||
"""
|
||||
# 如果提供了配置覆盖,则使用覆盖配置
|
||||
if config_options is not None:
|
||||
base_url = config_options.get('base_url', '').strip()
|
||||
base_url = config_options.get('api_url', '').strip()
|
||||
api_key = config_options.get('api_key', '').strip()
|
||||
timeout = config_options.get('timeout', 120)
|
||||
|
||||
@@ -126,8 +126,8 @@ class GeminiTTS(io.ComfyNode):
|
||||
|
||||
# 如果有配置覆盖,则使用覆盖的值(如果提供了)
|
||||
if config_options is not None:
|
||||
if config_options.get('base_url', '').strip():
|
||||
base_url = config_options['base_url'].strip()
|
||||
if config_options.get('api_url', '').strip():
|
||||
base_url = config_options['api_url'].strip()
|
||||
if config_options.get('api_key', '').strip():
|
||||
api_key = config_options['api_key'].strip()
|
||||
if config_options.get('timeout'):
|
||||
|
||||
@@ -158,14 +158,18 @@
|
||||
"display_name": "API Config Options",
|
||||
"description": "This node provides override API config options.",
|
||||
"inputs": {
|
||||
"base_url": {
|
||||
"name": "base_url",
|
||||
"tooltip": "Override the API base URL"
|
||||
"api_url": {
|
||||
"name": "api_url",
|
||||
"tooltip": "Override the API URL"
|
||||
},
|
||||
"api_key": {
|
||||
"name": "api_key",
|
||||
"tooltip": "Override the API key"
|
||||
},
|
||||
"api_protocol": {
|
||||
"name": "api_protocol",
|
||||
"tooltip": "Override the API protocol (openai-completions / openai-responses / anthropic-messages)"
|
||||
},
|
||||
"timeout": {
|
||||
"name": "timeout",
|
||||
"tooltip": "Override the request timeout in seconds"
|
||||
|
||||
@@ -159,16 +159,20 @@
|
||||
"display_name": "API 配置选项",
|
||||
"description": "该节点提供了覆盖 API 配置选项的功能",
|
||||
"inputs": {
|
||||
"base_url": {
|
||||
"name": "base_url",
|
||||
"tooltip": "覆盖 API 基础 URL"
|
||||
"api_url": {
|
||||
"name": "api_url",
|
||||
"tooltip": "覆盖 API URL"
|
||||
},
|
||||
"api_key": {
|
||||
"name": "api_key",
|
||||
"tooltip": "覆盖 API 密钥"
|
||||
},
|
||||
"api_protocol": {
|
||||
"name": "API 协议",
|
||||
"tooltip": "覆盖 API 协议(openai-completions / openai-responses / anthropic-messages)"
|
||||
},
|
||||
"timeout": {
|
||||
"name": "timeout",
|
||||
"name": "超时时间",
|
||||
"tooltip": "以秒为单位覆盖请求超时时间"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -39,7 +39,7 @@ class ModelScopeImageEdit(io.ComfyNode):
|
||||
raise ValueError(f"Missing '{cls._CONFIG_SECTION}' section in config file")
|
||||
|
||||
config_options = config_options or {}
|
||||
base_url = str(config_options.get("base_url") or config.get("base_url") or "").strip()
|
||||
base_url = str(config_options.get("api_url") or config.get("base_url") or "").strip()
|
||||
api_key = str(config_options.get("api_key") or config.get("api_key") or "").strip()
|
||||
timeout = config_options.get("timeout") or config.get("timeout", 300)
|
||||
try:
|
||||
|
||||
@@ -46,7 +46,7 @@ class ModelScopeImage(io.ComfyNode):
|
||||
"""
|
||||
# 如果提供了配置覆盖,则使用覆盖配置
|
||||
if config_options is not None:
|
||||
base_url = config_options.get('base_url', '').strip()
|
||||
base_url = config_options.get('api_url', '').strip()
|
||||
api_key = config_options.get('api_key', '').strip()
|
||||
timeout = config_options.get('timeout', 300)
|
||||
|
||||
@@ -95,8 +95,8 @@ class ModelScopeImage(io.ComfyNode):
|
||||
|
||||
# 如果有配置覆盖,则使用覆盖的值(如果提供了)
|
||||
if config_options is not None:
|
||||
if config_options.get('base_url', '').strip():
|
||||
base_url = config_options['base_url'].strip()
|
||||
if config_options.get('api_url', '').strip():
|
||||
base_url = config_options['api_url'].strip()
|
||||
if config_options.get('api_key', '').strip():
|
||||
api_key = config_options['api_key'].strip()
|
||||
if config_options.get('timeout'):
|
||||
|
||||
@@ -11,7 +11,7 @@ def _load_config_credentials(config_options=None):
|
||||
"""
|
||||
# 如果提供了配置覆盖,则使用覆盖配置
|
||||
if config_options is not None:
|
||||
base_url = config_options.get('base_url', '').strip()
|
||||
base_url = config_options.get('api_url', '').strip()
|
||||
api_key = config_options.get('api_key', '').strip()
|
||||
timeout = config_options.get('timeout', 120)
|
||||
|
||||
@@ -42,8 +42,8 @@ def _load_config_credentials(config_options=None):
|
||||
|
||||
# 如果有配置覆盖,则使用覆盖的值(如果提供了)
|
||||
if config_options is not None:
|
||||
if config_options.get('base_url', '').strip():
|
||||
base_url = config_options['base_url'].strip()
|
||||
if config_options.get('api_url', '').strip():
|
||||
base_url = config_options['api_url'].strip()
|
||||
if config_options.get('api_key', '').strip():
|
||||
api_key = config_options['api_key'].strip()
|
||||
if config_options.get('timeout'):
|
||||
|
||||
@@ -12,7 +12,7 @@ def _load_config_credentials(config_options=None):
|
||||
"""
|
||||
# 如果提供了配置覆盖,则使用覆盖配置
|
||||
if config_options is not None:
|
||||
base_url = config_options.get('base_url', '').strip()
|
||||
base_url = config_options.get('api_url', '').strip()
|
||||
api_key = config_options.get('api_key', '').strip()
|
||||
timeout = config_options.get('timeout', 120)
|
||||
|
||||
@@ -43,8 +43,8 @@ def _load_config_credentials(config_options=None):
|
||||
|
||||
# 如果有配置覆盖,则使用覆盖的值(如果提供了)
|
||||
if config_options is not None:
|
||||
if config_options.get('base_url', '').strip():
|
||||
base_url = config_options['base_url'].strip()
|
||||
if config_options.get('api_url', '').strip():
|
||||
base_url = config_options['api_url'].strip()
|
||||
if config_options.get('api_key', '').strip():
|
||||
api_key = config_options['api_key'].strip()
|
||||
if config_options.get('timeout'):
|
||||
|
||||
@@ -2,7 +2,7 @@ from comfy_api.latest import ComfyExtension, io
|
||||
|
||||
class ConfigOptions(io.ComfyNode):
|
||||
"""
|
||||
这个节点用于覆盖 API 的配置参数(base_url、api_key、timeout)
|
||||
这个节点用于覆盖 API 的配置参数(api_url、api_key、api_protocol、timeout)
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
@@ -13,9 +13,9 @@ class ConfigOptions(io.ComfyNode):
|
||||
category="YCYY/API/utils",
|
||||
inputs=[
|
||||
io.String.Input(
|
||||
id="base_url",
|
||||
id="api_url",
|
||||
multiline=True,
|
||||
tooltip="Override the API base URL"
|
||||
tooltip="Override the API URL"
|
||||
),
|
||||
io.String.Input(
|
||||
id="api_key",
|
||||
@@ -23,6 +23,12 @@ class ConfigOptions(io.ComfyNode):
|
||||
multiline=True,
|
||||
tooltip="Override the API key"
|
||||
),
|
||||
io.Combo.Input(
|
||||
id="api_protocol",
|
||||
options=["openai-completions", "openai-responses", "anthropic-messages"],
|
||||
default="openai-completions",
|
||||
tooltip="Override the API protocol"
|
||||
),
|
||||
io.Int.Input(
|
||||
id="timeout",
|
||||
default=120,
|
||||
@@ -42,14 +48,15 @@ class ConfigOptions(io.ComfyNode):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def execute(cls, base_url, api_key, timeout) -> io.NodeOutput:
|
||||
def execute(cls, api_url, api_key, api_protocol, timeout) -> io.NodeOutput:
|
||||
# 验证和清理输入
|
||||
base_url = base_url.strip() if base_url else ""
|
||||
api_url = api_url.strip() if api_url else ""
|
||||
api_key = api_key.strip() if api_key else ""
|
||||
|
||||
config_options = {
|
||||
"base_url": base_url,
|
||||
"api_url": api_url,
|
||||
"api_key": api_key,
|
||||
"api_protocol": api_protocol,
|
||||
"timeout": timeout
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user