From 1d32385f17dfff3859a338f98465f76864721d41 Mon Sep 17 00:00:00 2001 From: qyyfw Date: Fri, 3 Jul 2026 17:54:55 +0800 Subject: [PATCH] fix: AIModel.provider error - add ModelProvider import and use joined query --- backend/python/app/api/admin/agents_admin.py | 22 ++++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/python/app/api/admin/agents_admin.py b/backend/python/app/api/admin/agents_admin.py index 6efdb67..27cea8b 100644 --- a/backend/python/app/api/admin/agents_admin.py +++ b/backend/python/app/api/admin/agents_admin.py @@ -8,7 +8,7 @@ from sqlalchemy import or_, func from pydantic import BaseModel from typing import Optional, List 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 ...middleware.log_service import LogService import uuid @@ -223,9 +223,11 @@ async def get_agent( 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"] = [ - {"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} @@ -533,7 +535,9 @@ async def get_available_models( db: Session = Depends(get_db), ): """获取可用于 Agent 的模型列表""" - models = db.query(AIModel).filter( + models = db.query(AIModel, ModelProvider).join( + ModelProvider, AIModel.provider_id == ModelProvider.id + ).filter( AIModel.is_enabled == True ).order_by(AIModel.name).all() @@ -543,11 +547,11 @@ async def get_available_models( { "id": m.id, "name": m.name, - "provider": m.provider, - "model_type": m.model_type, - "input_price": float(m.input_price) if m.input_price else 0, - "output_price": float(m.output_price) if m.output_price else 0, + "provider": p.name, + "model_type": p.protocol, + "input_price": float(m.price_per_million_tokens) if m.price_per_million_tokens 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 ] }