fido_changes / src /pydantic_restrictions.py
szymskul's picture
update files
00cccb0
from pydantic import BaseModel, Field
from typing import Literal
class introductionChapter(BaseModel):
model_output: str = Field(..., title="Odpowiedz modelu")
situation: str = Field(..., title="Wskazanie i zwrot opisu sytuacji, którą przedstawił użytkownik")
think: str = Field(..., title="Wskazanie i zwrot myśli, którą przedstawił użytkownik")
emotion: str = Field(..., title="Wskazanie i zwrot emocji, którą przedstawił użytkownik")
chapter_end: str = Field(..., title="Ustawiamy na true jeśli użytkownik został przepytany i możemy przejść do etapu wskazanie definicji zniekształcenia")
class UnderstandDistortionClassifier(BaseModel):
message_type: Literal["understand", "no_understand"] = Field(
...,
description=(
"""Klasyfikuje odpowiedź użytkownika po przedstawieniu wykrytego zniekształcenia poznawczego i jego definicji.
'understand' oznacza, że użytkownik rozumie zniekształcenie i chce nad nim pracować. Zakwalifikuj również jeśli użytkownik wykazuje lekkie przekonanie że może spróbujmy albo pyta jak zacząć.
'no understand' oznacza brak zrozumienia zniekształcenia."""
),
)
class SocraticQuestion(BaseModel):
question: str = Field(..., description="Pytanie sokratejskie")
class Summary(BaseModel):
summarized_output: str = Field(..., title="Odpowiedź modelu")
class SocraticEval(BaseModel):
cue_hit: bool = Field(..., description="Czy odpowiedź dotyka sensu intencji (True dla advance/refine, False dla switch)")
route: Literal["advance", "refine", "switch"] = Field(..., description="Decyzja: przechodzimy do wniosku / zostajemy i doprecyzowujemy / zmieniamy intencję")
explanation: str = Field(..., description="Objaśnienie podjętej decyzji dotyczącej przejścia do wniosku, zostania i doprecyzowania lub zmiany intencji")
proposition: str = Field(..., description="Jeśli roure = refine - podaj wskazówki dotyczące tego o co spytać w kolejnym pytaniu aby osiągnać przejście do wniosku. Konkretne rzeczy jakie powinno się umieścić w nowym pytaniu. Odwołuj się do explanation czyli czemu odrzuciłeś przejście do wniosku to warto zawrzeć również")
class AltThoughtOut(BaseModel):
alt_thought: str = Field(..., min_length=5, description="Zwięzła, realistyczna, życzliwa alternatywna myśl w 1. osobie.")
reasoning: str = Field(..., min_length=5, description="Dlaczego ta myśl jest bardziej zrównoważona (krótko).")
class AltInviteOut(BaseModel):
assistant_message: str = Field(..., min_length=5)
class AltReviewOut(BaseModel):
is_ok: bool
assistant_message: str = Field(..., min_length=5)
class AltCloseOut(BaseModel):
assistant_message: str = Field(..., min_length=5)
class SecurityCheckUser(BaseModel):
decision: bool
message_to_user: str = Field(..., title="Wiadomość do użytkownika")
explanation: str = Field(..., title="Wyjasnienie czemu wiadomosc użytkownika jest odrzucona")
class ThoughtChecker(BaseModel):
decision_beliefs: bool = Field(..., description="True, jeśli wiadomość zawiera MYŚL lub PRZEKONANIE; False, jeśli to opis sytuacji lub emocji.")