mirror of
https://github.com/smkrv/ha-text-ai.git
synced 2026-07-22 07:03:58 +08:00
Handles the VSE GPT API endpoint correctly
This commit is contained in:
@@ -97,8 +97,21 @@ async def validate_api_connection(
|
||||
if "vsegpt" in endpoint.lower():
|
||||
headers["Authorization"] = f"Bearer {api_key}"
|
||||
base_url = endpoint.rstrip('/')
|
||||
models_url = f"{base_url}/models"
|
||||
if not base_url.endswith("/v1"):
|
||||
base_url = f"{base_url}/v1"
|
||||
models_url = f"{base_url}/models" # Using the correct v1/models endpoint
|
||||
_LOGGER.debug("Using VSE GPT endpoint: %s", models_url)
|
||||
|
||||
# For VSE GPT, we might want to validate the model differently
|
||||
supported_models = [
|
||||
"anthropic/claude-3-5-haiku",
|
||||
"anthropic/claude-3.5-sonnet",
|
||||
# Add other supported VSE GPT models here
|
||||
]
|
||||
|
||||
if model in supported_models:
|
||||
return True, "", supported_models
|
||||
|
||||
elif any(m in model.lower() for m in ["claude", "anthropic"]):
|
||||
headers["x-api-key"] = api_key
|
||||
headers["anthropic-version"] = "2023-06-01"
|
||||
@@ -118,26 +131,34 @@ async def validate_api_connection(
|
||||
for attempt in range(retry_count):
|
||||
try:
|
||||
async with timeout(10):
|
||||
# For VSE GPT, we'll skip the actual models endpoint check
|
||||
if "vsegpt" in endpoint.lower():
|
||||
# Instead, let's verify the API key with a simple request
|
||||
test_url = f"{base_url}/models"
|
||||
async with session.get(test_url, headers=headers) as response:
|
||||
if response.status == 404:
|
||||
# This is actually expected for VSE GPT
|
||||
if model.startswith("anthropic/"):
|
||||
return True, "", [model]
|
||||
elif response.status == 401:
|
||||
return False, ERROR_INVALID_API_KEY, []
|
||||
elif response.status == 429:
|
||||
return False, ERROR_RATE_LIMIT, []
|
||||
return True, "", [model]
|
||||
|
||||
# For other APIs, proceed with normal validation
|
||||
async with session.get(models_url, headers=headers) as response:
|
||||
_LOGGER.debug("API response status: %s", response.status)
|
||||
|
||||
if response.status == 200:
|
||||
data = await response.json()
|
||||
|
||||
# Handle different API response formats
|
||||
if "vsegpt" in endpoint.lower():
|
||||
model_ids = [m["id"] for m in data.get("data", [])]
|
||||
# Add VSE GPT specific model handling if needed
|
||||
return True, "", model_ids
|
||||
|
||||
elif any(m in model.lower() for m in ["claude", "anthropic"]):
|
||||
if any(m in model.lower() for m in ["claude", "anthropic"]):
|
||||
model_ids = [m["id"] for m in data.get("models", [])]
|
||||
# Support for custom Anthropic model names
|
||||
if model.startswith("anthropic/"):
|
||||
model = model.split("/")[1]
|
||||
if model in model_ids or any(m.endswith(model) for m in model_ids):
|
||||
return True, "", model_ids
|
||||
|
||||
else: # OpenAI format
|
||||
model_ids = [m["id"] for m in data.get("data", [])]
|
||||
if model in model_ids:
|
||||
|
||||
Reference in New Issue
Block a user