fix: Fix app pydantic error (#1478)

This commit is contained in:
Fangyin Cheng 2024-04-29 20:31:02 +08:00 committed by GitHub
parent 939b67715c
commit 8427fef5f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 33 additions and 13 deletions

View File

@ -15,6 +15,7 @@ from dbgpt.serve.agent.db.gpts_app import (
GptsAppCollectionDao, GptsAppCollectionDao,
GptsAppDao, GptsAppDao,
GptsAppQuery, GptsAppQuery,
GptsAppResponse,
) )
from dbgpt.serve.agent.hub.plugin_hub import plugin_hub from dbgpt.serve.agent.hub.plugin_hub import plugin_hub
from dbgpt.serve.agent.team.base import TeamMode from dbgpt.serve.agent.team.base import TeamMode
@ -36,7 +37,7 @@ async def create(gpts_app: GptsApp):
return Result.failed(code="E000X", msg=f"create app error: {ex}") return Result.failed(code="E000X", msg=f"create app error: {ex}")
@router.post("/v1/app/list") @router.post("/v1/app/list", response_model=Result[GptsAppResponse])
async def app_list(query: GptsAppQuery): async def app_list(query: GptsAppQuery):
try: try:
return Result.succ(gpts_dao.app_list(query, True)) return Result.succ(gpts_dao.app_list(query, True))
@ -137,7 +138,7 @@ async def llm_strategy_values(type: str):
) )
@router.get("/v1/app/resources/list", response_model=Result[str]) @router.get("/v1/app/resources/list", response_model=Result[list[str]])
async def app_resources( async def app_resources(
type: str, name: str = None, user_code: str = None, sys_code: str = None type: str, name: str = None, user_code: str = None, sys_code: str = None
): ):

View File

@ -7,7 +7,13 @@ from typing import Any, Dict, List, Optional, Union
from sqlalchemy import Column, DateTime, Integer, String, Text, UniqueConstraint from sqlalchemy import Column, DateTime, Integer, String, Text, UniqueConstraint
from dbgpt._private.pydantic import BaseModel, ConfigDict, Field, model_to_json from dbgpt._private.pydantic import (
BaseModel,
ConfigDict,
Field,
model_to_json,
model_validator,
)
from dbgpt.agent.plan.awel.team_awel_layout import AWELTeamContext from dbgpt.agent.plan.awel.team_awel_layout import AWELTeamContext
from dbgpt.agent.resource.resource_api import AgentResource from dbgpt.agent.resource.resource_api import AgentResource
from dbgpt.serve.agent.team.base import TeamMode from dbgpt.serve.agent.team.base import TeamMode
@ -129,11 +135,20 @@ class GptsApp(BaseModel):
details=d.get("details", None), details=d.get("details", None),
) )
@model_validator(mode="before")
@classmethod
def pre_fill(cls, values):
if not isinstance(values, dict):
return values
is_collected = values.get("is_collected")
if is_collected is not None and isinstance(is_collected, bool):
values["is_collected"] = "true" if is_collected else "false"
return values
class GptsAppQuery(GptsApp): class GptsAppQuery(GptsApp):
page_size: int = 100 page_size: int = 100
page_no: int = 1 page_no: int = 1
is_collected: Optional[str] = None
class GptsAppResponse(BaseModel): class GptsAppResponse(BaseModel):
@ -377,9 +392,9 @@ class GptsAppDao(BaseDao):
), ),
"user_code": app_info.user_code, "user_code": app_info.user_code,
"sys_code": app_info.sys_code, "sys_code": app_info.sys_code,
"is_collected": "true" "is_collected": (
if app_info.app_code in app_codes "true" if app_info.app_code in app_codes else "false"
else "false", ),
"created_at": app_info.created_at, "created_at": app_info.created_at,
"updated_at": app_info.updated_at, "updated_at": app_info.updated_at,
"details": [ "details": [
@ -502,9 +517,11 @@ class GptsAppDao(BaseDao):
resources=json.dumps(resource_dicts, ensure_ascii=False), resources=json.dumps(resource_dicts, ensure_ascii=False),
prompt_template=item.prompt_template, prompt_template=item.prompt_template,
llm_strategy=item.llm_strategy, llm_strategy=item.llm_strategy,
llm_strategy_value=None llm_strategy_value=(
if item.llm_strategy_value is None None
else json.dumps(tuple(item.llm_strategy_value.split(","))), if item.llm_strategy_value is None
else json.dumps(tuple(item.llm_strategy_value.split(",")))
),
created_at=item.created_at, created_at=item.created_at,
updated_at=item.updated_at, updated_at=item.updated_at,
) )
@ -546,9 +563,11 @@ class GptsAppDao(BaseDao):
resources=json.dumps(resource_dicts, ensure_ascii=False), resources=json.dumps(resource_dicts, ensure_ascii=False),
prompt_template=item.prompt_template, prompt_template=item.prompt_template,
llm_strategy=item.llm_strategy, llm_strategy=item.llm_strategy,
llm_strategy_value=None llm_strategy_value=(
if item.llm_strategy_value is None None
else json.dumps(tuple(item.llm_strategy_value.split(","))), if item.llm_strategy_value is None
else json.dumps(tuple(item.llm_strategy_value.split(",")))
),
created_at=item.created_at, created_at=item.created_at,
updated_at=item.updated_at, updated_at=item.updated_at,
) )