fix: AIModel.provider error - add ModelProvider import and use joined query

This commit is contained in:
qyyfw committed 2026-07-03 17:54:55 +08:00
1 parent 251bbc4123
commit 1d32385f17
1 file changed
+13 -9
+13 -9
View File
@@ -8,7 +8,7 @@ from sqlalchemy import or_, func
from pydantic import BaseModel from pydantic import BaseModel
from typing import Optional, List from typing import Optional, List
from ...database import get_db from ...database import get_db
from ...models import MarketApp, EvolutionSkill, AIModel, User from ...models import MarketApp, EvolutionSkill, AIModel, User, ModelProvider
from ...auth import get_current_admin from ...auth import get_current_admin
from ...middleware.log_service import LogService from ...middleware.log_service import LogService
import uuid import uuid
@@ -223,9 +223,11 @@ async def get_agent(
result["linked_skills"] = [] result["linked_skills"] = []
# 获取可用模型列表 # 获取可用模型列表
models = db.query(AIModel).filter(AIModel.is_enabled == True).all() models = db.query(AIModel, ModelProvider).join(
ModelProvider, AIModel.provider_id == ModelProvider.id
).filter(AIModel.is_enabled == True).all()
result["available_models"] = [ result["available_models"] = [
{"id": m.id, "name": m.name, "provider": m.provider} for m in models {"id": m.id, "name": m.name, "provider": p.name} for m, p in models
] ]
return {"code": 0, "data": result} return {"code": 0, "data": result}
@@ -533,7 +535,9 @@ async def get_available_models(
db: Session = Depends(get_db), db: Session = Depends(get_db),
): ):
"""获取可用于 Agent 的模型列表""" """获取可用于 Agent 的模型列表"""
models = db.query(AIModel).filter( models = db.query(AIModel, ModelProvider).join(
ModelProvider, AIModel.provider_id == ModelProvider.id
).filter(
AIModel.is_enabled == True AIModel.is_enabled == True
).order_by(AIModel.name).all() ).order_by(AIModel.name).all()
@@ -543,11 +547,11 @@ async def get_available_models(
{ {
"id": m.id, "id": m.id,
"name": m.name, "name": m.name,
"provider": m.provider, "provider": p.name,
"model_type": m.model_type, "model_type": p.protocol,
"input_price": float(m.input_price) if m.input_price else 0, "input_price": float(m.price_per_million_tokens) if m.price_per_million_tokens else 0,
"output_price": float(m.output_price) if m.output_price else 0, "output_price": float(m.price_per_million_tokens) if m.price_per_million_tokens else 0,
} }
for m in models for m, p in models
] ]
} }