stubs.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. from __future__ import annotations
  2. from pydantic import BaseModel, Field
  3. from typing import Union, Optional
  4. try:
  5. from typing import Annotated
  6. except ImportError:
  7. class Annotated:
  8. pass
  9. from g4f.typing import Messages
  10. class ChatCompletionsConfig(BaseModel):
  11. messages: Messages = Field(examples=[[{"role": "system", "content": ""}, {"role": "user", "content": ""}]])
  12. model: str = Field(default="")
  13. provider: Optional[str] = None
  14. stream: bool = False
  15. image: Optional[str] = None
  16. image_name: Optional[str] = None
  17. images: Optional[list[tuple[str, str]]] = None
  18. media: Optional[list[tuple[str, str]]] = None
  19. modalities: Optional[list[str]] = ["text", "audio"]
  20. temperature: Optional[float] = None
  21. presence_penalty: Optional[float] = None
  22. frequency_penalty: Optional[float] = None
  23. top_p: Optional[float] = None
  24. max_tokens: Optional[int] = None
  25. stop: Union[list[str], str, None] = None
  26. api_key: Optional[str] = None
  27. api_base: str = None
  28. web_search: Optional[bool] = None
  29. proxy: Optional[str] = None
  30. conversation_id: Optional[str] = None
  31. conversation: Optional[dict] = None
  32. return_conversation: Optional[bool] = None
  33. history_disabled: Optional[bool] = None
  34. timeout: Optional[int] = None
  35. tool_calls: list = Field(default=[], examples=[[
  36. {
  37. "function": {
  38. "arguments": {"query":"search query", "max_results":5, "max_words": 2500, "backend": "auto", "add_text": True, "timeout": 5},
  39. "name": "search_tool"
  40. },
  41. "type": "function"
  42. }
  43. ]])
  44. tools: list = None
  45. parallel_tool_calls: bool = None
  46. tool_choice: Optional[str] = None
  47. reasoning_effort: Optional[str] = None
  48. logit_bias: Optional[dict] = None
  49. modalities: Optional[list[str]] = None
  50. audio: Optional[dict] = None
  51. response_format: Optional[dict] = None
  52. extra_data: Optional[dict] = None
  53. class ImageGenerationConfig(BaseModel):
  54. prompt: str
  55. model: Optional[str] = None
  56. provider: Optional[str] = None
  57. response_format: Optional[str] = None
  58. api_key: Optional[str] = None
  59. proxy: Optional[str] = None
  60. width: Optional[int] = None
  61. height: Optional[int] = None
  62. num_inference_steps: Optional[int] = None
  63. seed: Optional[int] = None
  64. guidance_scale: Optional[int] = None
  65. aspect_ratio: Optional[str] = None
  66. n: Optional[int] = None
  67. negative_prompt: Optional[str] = None
  68. class ProviderResponseModel(BaseModel):
  69. id: str
  70. object: str = "provider"
  71. created: int
  72. url: Optional[str]
  73. label: Optional[str]
  74. class ProviderResponseDetailModel(ProviderResponseModel):
  75. models: list[str]
  76. image_models: list[str]
  77. vision_models: list[str]
  78. params: list[str]
  79. class ModelResponseModel(BaseModel):
  80. id: str
  81. object: str = "model"
  82. created: int
  83. owned_by: Optional[str]
  84. class UploadResponseModel(BaseModel):
  85. bucket_id: str
  86. url: str
  87. class ErrorResponseModel(BaseModel):
  88. error: ErrorResponseMessageModel
  89. model: Optional[str] = None
  90. provider: Optional[str] = None
  91. class ErrorResponseMessageModel(BaseModel):
  92. message: str
  93. class FileResponseModel(BaseModel):
  94. filename: str