feat(compute): compute_catalog 透传模型富字段(模态/作者/供应商/区间价/窗口/输出/免费试用)给 OPC 端
This commit is contained in:
@@ -5,9 +5,24 @@
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
from . import compute_client
|
||||
|
||||
|
||||
def _parse_list(v):
|
||||
"""JSON 数组字符串 → list;已 list 原样。"""
|
||||
if isinstance(v, list):
|
||||
return v
|
||||
if isinstance(v, str):
|
||||
try:
|
||||
a = json.loads(v)
|
||||
return a if isinstance(a, list) else []
|
||||
except Exception: # noqa: BLE001
|
||||
return []
|
||||
return []
|
||||
|
||||
|
||||
def _map(row: dict) -> dict:
|
||||
"""Model 行 → 桌面端模型形状。"""
|
||||
name = row.get("name") or row.get("model_name") or ""
|
||||
@@ -28,6 +43,30 @@ def _map(row: dict) -> dict:
|
||||
"video_support": bool(row.get("video_support", False)),
|
||||
"tags": (row.get("tags") or "").split(",") if row.get("tags") else [],
|
||||
"vendor_id": row.get("vendor_id", 0),
|
||||
# 富字段(models.json 语义)
|
||||
"icon": row.get("icon", ""),
|
||||
"icon_file": row.get("icon_file", ""),
|
||||
"modality": row.get("modality", ""),
|
||||
"input_forms": _parse_list(row.get("input_forms")),
|
||||
"output_forms": _parse_list(row.get("output_forms")),
|
||||
"function_icons": _parse_list(row.get("function_icons")),
|
||||
"url": row.get("url", ""),
|
||||
"author": row.get("author", ""),
|
||||
"author_icon": row.get("author_icon", ""),
|
||||
"supplier": row.get("supplier", ""),
|
||||
"supplier_icon": row.get("supplier_icon", ""),
|
||||
"price_is_range": bool(row.get("price_is_range", False)),
|
||||
"input_price_min": row.get("input_price_min", 0) or 0,
|
||||
"input_price_max": row.get("input_price_max", 0) or 0,
|
||||
"output_price_min": row.get("output_price_min", 0) or 0,
|
||||
"output_price_max": row.get("output_price_max", 0) or 0,
|
||||
"context_window": row.get("context_window", 0) or 0,
|
||||
"context_window_unit": row.get("context_window_unit", "M"),
|
||||
"context_window_display": row.get("context_window_display", ""),
|
||||
"max_output": row.get("max_output", 0) or 0,
|
||||
"max_output_unit": row.get("max_output_unit", "K"),
|
||||
"max_output_display": row.get("max_output_display", ""),
|
||||
"free_trial": bool(row.get("free_trial", False)),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user