|
from pydantic import BaseModel, Field |
|
from typing import List, Optional |
|
|
|
|
|
|
|
|
|
class RequirementInfo(BaseModel): |
|
"""Represents an extracted requirement info""" |
|
context: str = Field(..., description="Context for the requirement.") |
|
requirement: str = Field(..., description="The requirement itself.") |
|
document: str = Field(..., |
|
description="The document the requirement is extracted from.") |
|
|
|
|
|
class ReqGroupingCategory(BaseModel): |
|
"""Represents the category of requirements grouped together""" |
|
id: int = Field(..., description="ID of the grouping category") |
|
title: str = Field(..., description="Title given to the grouping category") |
|
requirements: List[RequirementInfo] = Field( |
|
..., description="List of grouped requirements") |
|
|
|
|
|
class SolutionSearchResult(BaseModel): |
|
Context: str |
|
Requirements: List[str] |
|
ProblemDescription: str |
|
SolutionDescription: str |
|
References: Optional[str] = "" |
|
|
|
|
|
|
|
|
|
class ReqGroupingRequest(BaseModel): |
|
"""Request schema of a requirement grouping call.""" |
|
requirements: list[RequirementInfo] |
|
max_n_categories: Optional[int] = Field( |
|
default=None, description="Max number of categories to construct. Defaults to None") |
|
|
|
|
|
class ReqGroupingResponse(BaseModel): |
|
"""Response of a requirement grouping call.""" |
|
categories: List[ReqGroupingCategory] |
|
|
|
|
|
|
|
class _ReqGroupingCategory(BaseModel): |
|
title: str = Field(..., description="Title given to the grouping category") |
|
items: list[int] = Field( |
|
..., description="List of the IDs of the requirements belonging to the category.") |
|
|
|
|
|
class _ReqGroupingOutput(BaseModel): |
|
categories: list[_ReqGroupingCategory] = Field( |
|
..., description="List of grouping categories") |
|
|
|
|
|
|
|
|
|
class CriticizeSolutionsRequest(BaseModel): |
|
solutions: list[SolutionSearchResult] |
|
|