base.py 819 B

123456789101112131415161718192021222324252627
  1. from pydantic import BaseModel, Field
  2. from typing import Dict, List, Literal, Optional
  3. class DeltaMessage(BaseModel):
  4. role: Optional[Literal["user", "assistant", "system"]] = None
  5. content: Optional[str] = None
  6. class Prompt(BaseModel):
  7. examples: List[str] = []
  8. instruction: str
  9. template: str
  10. action_list: List[str]
  11. def build(self):
  12. if self.examples:
  13. example_str = '\n'.join([
  14. f'Example #{idx}:\n{ex}' for idx, ex in enumerate(self.examples)
  15. ])
  16. return self.template(example_list=example_str, instruction=self.instruction)
  17. else:
  18. return self.template(instruction=self.instruction)
  19. class UserResponseStream(BaseModel):
  20. type: Literal["thought", "assistant", "info", "summary"] = "info"
  21. content: str