fix(llm): add fetch-models endpoint, fix SQL Lab INSERT (client_id truncation, sync mode, target_column, timestamp normalization)
- Add POST /api/llm/providers/fetch-models route with LLMClient.fetch_models() - Add target_column to TranslationJob model/schema/service/orchestrator - Fix SQL Lab execute: truncate client_id to 11 chars (varchar(11)) - Switch SQL Lab to sync mode (runAsync: false) — no Celery workers - Fix polling: unwrap nested result from Superset query API - Fix ClickHouse timestamp: normalize float timestamps to YYYY-MM-DD
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
# #region LLMAnalysisService [C:3] [TYPE Module] [SEMANTICS llm, screenshot, playwright, openai, tenacity]
|
||||
# @COMPLEXITY: 3
|
||||
# @BRIEF Services for LLM interaction and dashboard screenshots.
|
||||
# @LAYER: Domain
|
||||
# @RELATION DEPENDS_ON -> playwright
|
||||
@@ -876,6 +875,29 @@ class LLMClient:
|
||||
return await self.get_json_completion(messages)
|
||||
# endregion LLMClient.test_runtime_connection
|
||||
|
||||
# region LLMClient.fetch_models [TYPE Function]
|
||||
# @PURPOSE: Fetch available models from the provider's API.
|
||||
# @PRE: Client is initialized with provider credentials.
|
||||
# @POST: Returns a list of model ID strings.
|
||||
# @SIDE_EFFECT: Calls external LLM API /v1/models endpoint.
|
||||
async def fetch_models(self) -> List[str]:
|
||||
with belief_scope("LLMClient.fetch_models"):
|
||||
try:
|
||||
response = await self.client.models.list()
|
||||
model_ids = [m.id for m in response.data]
|
||||
model_ids.sort()
|
||||
logger.reason(
|
||||
f"[LLMClient.fetch_models] Fetched {len(model_ids)} models from {self.base_url}",
|
||||
extra={"src": "LLMClient.fetch_models"},
|
||||
)
|
||||
return model_ids
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"[LLMClient.fetch_models] Failed to fetch models: {e}",
|
||||
)
|
||||
raise
|
||||
# endregion LLMClient.fetch_models
|
||||
|
||||
# region LLMClient.analyze_dashboard [TYPE Function]
|
||||
# @PURPOSE: Sends dashboard data (screenshot + logs) to LLM for health analysis.
|
||||
# @PRE: screenshot_path exists, logs is a list of strings.
|
||||
|
||||
Reference in New Issue
Block a user