File size: 1,292 Bytes
337a5ce |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
from enum import Enum
import openai
from pydantic import BaseModel, Field
from typing import Optional
from typing import List
import json
import random
class TackleboxCard(BaseModel):
description: str
share_with_other_player: bool = False
class TackleboxDeck(BaseModel):
cards: List[TackleboxCard] = Field(default_factory=list)
def draw_card(self) -> Optional[TackleboxCard]:
# shuffle and draw the top card
if self.cards and len(self.cards) > 0:
return self.cards.pop(random.randint(0, len(self.cards) - 1))
return None
class Hand(BaseModel):
cards: List[TackleboxCard] = Field(default_factory=list)
def add_card(self, card: TackleboxCard):
self.cards.append(card)
class Personality(BaseModel):
baseline: str
traits: list[str]
class SpeechStyle(BaseModel):
average_sentence_count: int
allows_small_action_descriptions: bool
forbidden_topics: list[str]
class Character(BaseModel):
name: str
age: int
gender: str
relationship_to_robin: str
recent_event: str
shared_past_event: str
reason_for_fishing_today: Optional[str] = None
relationship_type: Optional[str] = None
pronouns: Optional[str] = None
personality: Personality
speech_style: SpeechStyle
|