request.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. """
  2. 请求模型定义
  3. """
  4. from pydantic import BaseModel, Field
  5. from typing import Optional, List
  6. class PositionInfo(BaseModel):
  7. """位置信息"""
  8. char_start: int = Field(..., alias="charStart", description="字符起始位置")
  9. char_end: int = Field(..., alias="charEnd", description="字符结束位置")
  10. line: Optional[int] = Field(None, description="所在行号")
  11. page: Optional[int] = Field(None, description="所在页码")
  12. file_id: Optional[str] = Field(None, alias="fileId", description="文件ID")
  13. class Config:
  14. populate_by_name = True
  15. class EntityInfo(BaseModel):
  16. """实体信息"""
  17. name: str = Field(..., description="实体名称")
  18. type: str = Field(..., description="实体类型")
  19. value: Optional[str] = Field(None, description="实体值")
  20. position: Optional[PositionInfo] = Field(None, description="位置信息")
  21. context: Optional[str] = Field(None, description="上下文片段")
  22. confidence: Optional[float] = Field(None, description="置信度")
  23. temp_id: Optional[str] = Field(None, alias="tempId", description="临时ID")
  24. class Config:
  25. populate_by_name = True
  26. class NerRequest(BaseModel):
  27. """NER 请求"""
  28. document_id: Optional[str] = Field(None, alias="documentId", description="文档ID")
  29. text: str = Field(..., description="待提取的文本内容")
  30. entity_types: Optional[List[str]] = Field(None, alias="entityTypes", description="指定提取的实体类型")
  31. extract_relations: bool = Field(True, alias="extractRelations", description="是否提取关系")
  32. user_id: Optional[str] = Field(None, alias="userId", description="用户ID")
  33. class Config:
  34. populate_by_name = True
  35. class RelationRequest(BaseModel):
  36. """关系抽取请求"""
  37. document_id: Optional[str] = Field(None, alias="documentId", description="文档ID")
  38. text: str = Field(..., description="原始文本内容")
  39. entities: List[EntityInfo] = Field(..., description="已提取的实体列表")
  40. class Config:
  41. populate_by_name = True