본문으로 건너뛰기

[Open WebUI] FileMetadataResponse의 meta 필드를 Optional로 변경하여 배치 추가 오류 수정

PR 링크: open-webui/open-webui#20022 상태: Merged | 변경: +1 / -1

들어가며

Open WebUI에서 여러 파일을 Knowledge에 한꺼번에 추가할 때, 메타데이터가 없는 파일(meta=None)이 포함되면 Input should be a valid dictionary라는 Pydantic 유효성 검사 오류가 발생하여 전체 배치가 실패하는 문제가 있었습니다. 원인은 FileMetadataResponse 모델의 meta 필드가 dict로 선언되어 None 값을 거부했기 때문입니다.

핵심 코드 분석

meta 필드 타입 수정

Before:

class FileMetadataResponse(BaseModel):
    id: str
    hash: Optional[str] = None
    meta: dict
    created_at: int  # timestamp in epoch
    updated_at: int  # timestamp in epoch

After:

class FileMetadataResponse(BaseModel):
    id: str
    hash: Optional[str] = None
    meta: Optional[dict] = None
    created_at: int  # timestamp in epoch
    updated_at: int  # timestamp in epoch

FileModel에서는 이미 metaOptional이었으므로, FileModel 데이터를 FileMetadataResponse로 변환할 때 불일치가 발생했습니다. 응답 모델의 타입을 원본 모델과 맞추는 간단한 수정입니다.

왜 이게 좋은가

  1. 배치 작업 안정성: 메타데이터가 없는 파일 하나 때문에 전체 배치 작업이 실패하는 문제를 방지합니다.
  2. 모델 일관성: FileModelFileMetadataResponse 사이의 타입 불일치를 해소하여, 데이터 흐름에서 예상치 못한 오류를 줄입니다.
  3. 하위 호환성: 기존에 meta가 항상 dict인 파일들은 영향을 받지 않습니다. None인 경우만 추가로 허용됩니다.

참고 자료

댓글

관련 포스트

PR Analysis 의 다른글