from pydantic import BaseModel, Field from typing import Dict, List, Literal, Optional class DeltaMessage(BaseModel): role: Optional[Literal["user", "assistant", "system"]] = None content: Optional[str] = None class Prompt(BaseModel): examples: List[str] = [] instruction: str template: str action_list: List[str] def build(self): if self.examples: example_str = '\n'.join([ f'Example #{idx}:\n{ex}' for idx, ex in enumerate(self.examples) ]) return self.template(example_list=example_str, instruction=self.instruction) else: return self.template(instruction=self.instruction) class UserResponseStream(BaseModel): type: Literal["thought", "assistant", "info", "summary"] = "info" content: str