"""知识检索工具的入参契约(与 `fund_contracts.py` 同一模式)。 放在 `app/core` 而不是 service 里:工具的 `input_model` 会被 ToolExecutor 用于参数校验, 属于跨层契约;放在 service 模块会让 API 层与工具注册处都反向依赖 service 实现。 """ from pydantic import BaseModel, ConfigDict, Field class KnowledgeSearchInput(BaseModel): """知识库检索入参。 `collection` 留空表示三个集合全查(客服默认行为);指定单个集合用于意图明确时收窄范围。 """ model_config = ConfigDict(extra="forbid") query: str = Field(min_length=1, max_length=500) collection: str = Field(default="", max_length=64) top_k: int = Field(default=5, ge=1, le=10)