fix: AIModel.provider error - add ModelProvider import and use joined query
This commit is contained in:
1 parent
251bbc4123
commit
1d32385f17
1 file changed
+13
-9
@@ -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
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user