fix: use correct google-genai async API and remove debug endpoint

The google-genai SDK uses `client.aio.models.generate_content()` for
async calls, not `client.models.generate_content_async()` which doesn't
exist. Also removes the temporary /ai/provider-debug endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chihlasm
2026-02-27 00:08:20 -05:00
parent dc68d992a4
commit 957f13b993
3 changed files with 4 additions and 32 deletions

View File

@@ -54,34 +54,6 @@ def _require_ai_enabled() -> None:
detail="AI flow builder is not configured. Set GOOGLE_AI_API_KEY or ANTHROPIC_API_KEY.",
)
@router.get("/provider-debug")
async def provider_debug(
current_user: Annotated[User, Depends(get_current_active_user)],
_: None = Depends(require_engineer_or_admin),
):
"""Temporary debug endpoint — shows which AI provider would be selected."""
from app.core.ai_provider import get_ai_provider
has_gemini_key = bool(settings.GOOGLE_AI_API_KEY)
has_anthropic_key = bool(settings.ANTHROPIC_API_KEY)
provider_setting = settings.AI_PROVIDER
try:
provider = get_ai_provider()
provider_type = type(provider).__name__
except RuntimeError as e:
provider_type = f"ERROR: {e}"
return {
"ai_provider_setting": provider_setting,
"has_gemini_key": has_gemini_key,
"gemini_key_prefix": settings.GOOGLE_AI_API_KEY[:8] + "..." if settings.GOOGLE_AI_API_KEY else None,
"has_anthropic_key": has_anthropic_key,
"anthropic_key_prefix": settings.ANTHROPIC_API_KEY[:8] + "..." if settings.ANTHROPIC_API_KEY else None,
"selected_provider": provider_type,
"gemini_model": settings.AI_MODEL_GEMINI,
"anthropic_model": settings.AI_MODEL_ANTHROPIC,
}
@router.get("/quota", response_model=AIQuotaStatusResponse)
async def get_quota(
current_user: Annotated[User, Depends(get_current_active_user)],

View File

@@ -68,7 +68,7 @@ class GeminiProvider(AIProvider):
response_mime_type="application/json",
)
response = await client.models.generate_content_async(
response = await client.aio.models.generate_content(
model=self._model,
contents=contents,
config=config,

View File

@@ -137,7 +137,7 @@ class TestGeminiProvider:
mock_response.usage_metadata = mock_usage
mock_client = MagicMock()
mock_client.models.generate_content_async = AsyncMock(
mock_client.aio.models.generate_content = AsyncMock(
return_value=mock_response
)
@@ -172,7 +172,7 @@ class TestGeminiProvider:
assert input_tokens == 80
assert output_tokens == 40
mock_client.models.generate_content_async.assert_called_once()
mock_client.aio.models.generate_content.assert_called_once()
@pytest.mark.asyncio
async def test_generate_json_handles_none_usage(self):
@@ -185,7 +185,7 @@ class TestGeminiProvider:
mock_response.usage_metadata = mock_usage
mock_client = MagicMock()
mock_client.models.generate_content_async = AsyncMock(
mock_client.aio.models.generate_content = AsyncMock(
return_value=mock_response
)