feat:LLM 分析文件并生成结构化建议
This commit is contained in:
+20
-1
@@ -1,6 +1,6 @@
|
||||
"""前端设计请求:原始需求、当前大屏及可选补充上下文"""
|
||||
|
||||
from pydantic import Field
|
||||
from pydantic import Field, field_validator
|
||||
|
||||
from .base import ExtensibleModel, JsonObject, NonBlankString
|
||||
from .screen import Screen
|
||||
@@ -20,3 +20,22 @@ class DesignRequest(ExtensibleModel):
|
||||
# 本条消息附带的材料;{"kind": "data_file", "file_id": "..."} 引用本会话上传的数据文件,
|
||||
# 其他种类只原样进入摘要,不读取文件或远程资源
|
||||
attachments: list[JsonObject] = Field(default_factory=list)
|
||||
|
||||
@field_validator("attachments")
|
||||
@classmethod
|
||||
def _data_files_have_ids(cls, value: list[JsonObject]) -> list[JsonObject]:
|
||||
for item in value:
|
||||
if item.get("kind") == "data_file" and not isinstance(
|
||||
item.get("file_id"), str
|
||||
):
|
||||
raise ValueError("data_file 附件缺少 file_id")
|
||||
return value
|
||||
|
||||
@property
|
||||
def data_file_ids(self) -> set[str]:
|
||||
"""本条消息附带的数据文件"""
|
||||
return {
|
||||
str(item["file_id"])
|
||||
for item in self.attachments
|
||||
if item.get("kind") == "data_file"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user