openai_api.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. """
  2. coding : utf-8
  3. @Date : 2024/7/11
  4. @Author : Shaobo
  5. @Describe:
  6. """
  7. import time
  8. from typing import Literal
  9. import shortuuid
  10. from pydantic import BaseModel
  11. class ChatMessage(BaseModel):
  12. role: str
  13. content: str
  14. class ChatCompletionRequest(BaseModel):
  15. model: str = "codegeex4"
  16. messages: list[ChatMessage]
  17. temperature: float = 0.2
  18. top_p: float = 1.0
  19. max_tokens: int = 1024
  20. stop: list[str] = ['<|user|>', '<|assistant|>', '<|observation|>', '<|endoftext|>']
  21. stream: bool = True
  22. presence_penalty: float = None
  23. class DeltaMessage(BaseModel):
  24. role: str
  25. content: str
  26. class ChatCompletionResponseStreamChoice(BaseModel):
  27. index: int = 0
  28. delta: DeltaMessage = DeltaMessage(role='assistant', content='')
  29. finish_reason: Literal["stop", "length"] = None
  30. class ChatCompletionStreamResponse(BaseModel):
  31. id: str = f"chatcmpl-{shortuuid.random()}"
  32. object: str = "chat.completion.chunk"
  33. created: int = int(time.time())
  34. model: str = "codegeex4"
  35. choices: list[ChatCompletionResponseStreamChoice] = [ChatCompletionResponseStreamChoice()]
  36. class ChatCompletionResponseChoice(BaseModel):
  37. index: int = 0
  38. message: ChatMessage = ChatMessage(role="assistant", content="")
  39. finish_reason: Literal["stop", "length"] = None
  40. class ChatCompletionResponse(BaseModel):
  41. id: str = f"chatcmpl-{shortuuid.random()}"
  42. object: str = "chat.completion"
  43. created: int = int(time.time())
  44. model: str = "codegeex4"
  45. choices: list[ChatCompletionResponseChoice] = [ChatCompletionResponseChoice()]
  46. # usage: UsageInfo