Procházet zdrojové kódy

refactor(api): improve handling of `tools` field and cleanup variable usage (#10553)

tags/0.11.2
-LAN- před 11 měsíci
rodič
revize
16b9665033
Žádný účet není propojen s e-mailovou adresou tvůrce revize

+ 7
- 2
api/core/tools/entities/api_entities.py Zobrazit soubor

from typing import Literal, Optional from typing import Literal, Optional


from pydantic import BaseModel
from pydantic import BaseModel, Field, field_validator


from core.model_runtime.utils.encoders import jsonable_encoder from core.model_runtime.utils.encoders import jsonable_encoder
from core.tools.entities.common_entities import I18nObject from core.tools.entities.common_entities import I18nObject
original_credentials: Optional[dict] = None original_credentials: Optional[dict] = None
is_team_authorization: bool = False is_team_authorization: bool = False
allow_delete: bool = True allow_delete: bool = True
tools: list[UserTool] | None = None
tools: list[UserTool] = Field(default_factory=list)
labels: list[str] | None = None labels: list[str] | None = None


@field_validator("tools", mode="before")
@classmethod
def convert_none_to_empty_list(cls, v):
return v if v is not None else []

def to_dict(self) -> dict: def to_dict(self) -> dict:
# ------------- # -------------
# overwrite tool parameter types for temp fix # overwrite tool parameter types for temp fix

+ 7
- 8
api/services/tools/api_tools_manage_service.py Zobrazit soubor

provider_name = provider_name.strip() provider_name = provider_name.strip()


# check if the provider exists # check if the provider exists
provider: ApiToolProvider = (
provider = (
db.session.query(ApiToolProvider) db.session.query(ApiToolProvider)
.filter( .filter(
ApiToolProvider.tenant_id == tenant_id, ApiToolProvider.tenant_id == tenant_id,
return {"schema": schema} return {"schema": schema}


@staticmethod @staticmethod
def list_api_tool_provider_tools(user_id: str, tenant_id: str, provider: str) -> list[UserTool]:
def list_api_tool_provider_tools(user_id: str, tenant_id: str, provider_name: str) -> list[UserTool]:
""" """
list api tool provider tools list api tool provider tools
""" """
provider_name = provider
provider: ApiToolProvider = (
provider = (
db.session.query(ApiToolProvider) db.session.query(ApiToolProvider)
.filter( .filter(
ApiToolProvider.tenant_id == tenant_id, ApiToolProvider.tenant_id == tenant_id,
ApiToolProvider.name == provider,
ApiToolProvider.name == provider_name,
) )
.first() .first()
) )
provider_name = provider_name.strip() provider_name = provider_name.strip()


# check if the provider exists # check if the provider exists
provider: ApiToolProvider = (
provider = (
db.session.query(ApiToolProvider) db.session.query(ApiToolProvider)
.filter( .filter(
ApiToolProvider.tenant_id == tenant_id, ApiToolProvider.tenant_id == tenant_id,
""" """
delete tool provider delete tool provider
""" """
provider: ApiToolProvider = (
provider = (
db.session.query(ApiToolProvider) db.session.query(ApiToolProvider)
.filter( .filter(
ApiToolProvider.tenant_id == tenant_id, ApiToolProvider.tenant_id == tenant_id,
if tool_bundle is None: if tool_bundle is None:
raise ValueError(f"invalid tool name {tool_name}") raise ValueError(f"invalid tool name {tool_name}")


db_provider: ApiToolProvider = (
db_provider = (
db.session.query(ApiToolProvider) db.session.query(ApiToolProvider)
.filter( .filter(
ApiToolProvider.tenant_id == tenant_id, ApiToolProvider.tenant_id == tenant_id,

Načítá se…
Zrušit
Uložit