2
2
from fastapi .responses import Response , StreamingResponse , RedirectResponse
3
3
from fastapi .encoders import jsonable_encoder
4
4
from json import dumps
5
- from pydantic import BaseModel , validator , PositiveInt
6
- from typing import Union , Any , Generator
5
+ from pydantic import BaseModel , field_validator , PositiveInt
6
+ from typing import Union , Any , AsyncGenerator
7
7
from pytgpt import gpt4free_providers
8
8
from uuid import uuid4
9
9
from .utils import api_exception_handler
@@ -77,7 +77,7 @@ class TextGenerationPayload(BaseModel):
77
77
}
78
78
}
79
79
80
- @validator ("provider" )
80
+ @field_validator ("provider" )
81
81
def validate_provider (provider : str ) -> object :
82
82
if provider not in supported_providers :
83
83
raise HTTPException (
@@ -162,7 +162,7 @@ class ImagePayload(BaseModel):
162
162
}
163
163
}
164
164
165
- @validator ("amount" )
165
+ @field_validator ("amount" )
166
166
def validate_amount (amount : int ) -> PositiveInt :
167
167
if amount > 10 :
168
168
raise HTTPException (
@@ -173,7 +173,7 @@ def validate_amount(amount: int) -> PositiveInt:
173
173
)
174
174
return amount
175
175
176
- @validator ("provider" )
176
+ @field_validator ("provider" )
177
177
def validate_provider (provider : Union [str , None ]) -> str :
178
178
179
179
if provider is not None and not provider in image_providers :
@@ -209,7 +209,7 @@ class ImageBytesPayload(BaseModel):
209
209
}
210
210
}
211
211
212
- @validator ("provider" )
212
+ @field_validator ("provider" )
213
213
def validate_provider (provider : Union [str , None ]) -> str :
214
214
if provider is not None and not provider in image_providers :
215
215
raise HTTPException (
@@ -265,7 +265,7 @@ class TextToAudioPayload(BaseModel):
265
265
}
266
266
}
267
267
268
- @validator ("voice" )
268
+ @field_validator ("voice" )
269
269
def validate_voice (voice ) -> str :
270
270
if not voice in Audio .all_voices :
271
271
raise HTTPException (
@@ -345,7 +345,7 @@ async def non_stream(payload: TextGenerationPayload) -> ProviderResponse:
345
345
)
346
346
347
347
348
- async def generate_streaming_response (payload : TextGenerationPayload ) -> Generator :
348
+ async def generate_streaming_response (payload : TextGenerationPayload ) -> AsyncGenerator :
349
349
provider_obj = await init_provider (payload )
350
350
async_chat = await provider_obj .chat (payload .prompt , stream = True )
351
351
async for text in async_chat :
0 commit comments