|
from dataclasses import dataclass |
|
from typing import Dict, List, Optional, Annotated |
|
from pydantic import BaseModel, BeforeValidator, Field, field_validator |
|
from semantic_kernel.data import ( |
|
DistanceFunction, |
|
IndexKind, |
|
VectorStoreRecordDataField, |
|
VectorStoreRecordKeyField, |
|
VectorStoreRecordVectorField, |
|
vectorstoremodel |
|
) |
|
|
|
class LampConnections(BaseModel): |
|
min: float |
|
max: float |
|
|
|
@field_validator('min', 'max', mode='before') |
|
def convert_values(cls, v): |
|
v_str = str(v) |
|
|
|
v_str = v_str.replace(',', '.') |
|
return float(v_str) |
|
|
|
class VoltageRange(BaseModel): |
|
min: float |
|
max: float |
|
|
|
@field_validator('min', 'max', mode='before') |
|
def convert_values(cls, v): |
|
v_str = str(v) |
|
|
|
v_str = v_str.replace(',', '.') |
|
return float(v_str) |
|
|
|
@vectorstoremodel |
|
class PowerConverterVector(BaseModel): |
|
id: Annotated[str, VectorStoreRecordKeyField]=Field(None, alias="id") |
|
artnr: Annotated[int, VectorStoreRecordDataField()] = Field(..., alias="artnr") |
|
ip: Annotated[int, VectorStoreRecordDataField()] = Field(..., alias="ip") |
|
type: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="type") |
|
lamps: Dict[str, LampConnections] = None |
|
|
|
name: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="name") |
|
efficiency_full_load: Annotated[float, VectorStoreRecordDataField()] = Field(None, alias="efficiency_full_load") |
|
pdf_link: Annotated[str, VectorStoreRecordDataField()] = None |
|
converter_description: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="converter_description") |
|
|
|
nom_input_voltage: Optional[VoltageRange] = Field(None, alias="nom_input_voltage_v") |
|
output_voltage: Optional[VoltageRange] = Field(None, alias="output_voltage_v") |
|
|
|
unit: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="unit") |
|
price: Annotated[float, VectorStoreRecordDataField()] = Field(None, alias="listprice") |
|
life_cycle: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="lifecycle") |
|
size: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="size") |
|
ccr_amplitude: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="ccr_amplitude") |
|
dimmability: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="dimmability") |
|
dim_list_type: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="dimlist_type") |
|
gross_weight: Annotated[float, VectorStoreRecordDataField()] = Field(None, alias="gross_weight") |
|
strain_relief: Annotated[str, VectorStoreRecordDataField()] = Field(None, alias="strain_relief") |
|
embedding: Annotated[List[float], VectorStoreRecordVectorField( |
|
dimensions=1536, |
|
distance_function=DistanceFunction.COSINE_DISTANCE, |
|
index_kind=IndexKind.DISK_ANN |
|
)] = Field(default_factory=list) |
|
|