From c0debab0cbfd33f9758811a24fc925b8e29b6f75 Mon Sep 17 00:00:00 2001 From: xds Date: Thu, 5 Feb 2026 22:19:57 +0300 Subject: [PATCH] feat: Add `use_profile_image` and detailed token usage fields to generation models. --- .../google_adapter.cpython-313.pyc | Bin 7479 -> 7787 bytes adapters/google_adapter.py | 10 +++++++++- api/models/GenerationRequest.py | 3 +++ .../GenerationRequest.cpython-313.pyc | Bin 2600 -> 2775 bytes .../generation_service.cpython-313.pyc | Bin 18279 -> 18666 bytes api/service/generation_service.py | 8 ++++++-- models/Generation.py | 3 +++ models/__pycache__/Generation.cpython-313.pyc | Bin 2224 -> 2399 bytes 8 files changed, 21 insertions(+), 3 deletions(-) diff --git a/adapters/__pycache__/google_adapter.cpython-313.pyc b/adapters/__pycache__/google_adapter.cpython-313.pyc index e61c572219462ef389e5d207417d6cd0581aecac..221010d0d5c3b72691cd3c4249ec4296b12e2eb1 100644 GIT binary patch delta 584 zcmdmP_1cE-GcPX}0}x0&Y{`t1*vPk?mr0Io^Kss7EF8fsd4fPJG-i-`T|mlFL7pH`jkvlSswjw;CltyR${s2hDikcN$C4);${i{^xmzfhF<|q3p&TYg zmdQS%nliTpGxG{cOX5rNvs3fpON$fJQ*R07mzIFUCTEGNF{*5yD9X>McT1?CC_lFV zrZ73bG_T~ASaM=sN@hx8Noq0F0I;~G$mB(06=sn@M-=G+iCa8Kb`;;@g&GgGviKHz zZfZ$UW^!?{2vDhl!em2nFUIqeYs3SXoESHs6+gll^*~yt!{>&KY=`d+e(~%4YCv>D zUj4ef*+qG?>++r#{-$ez#3A`WJ81$`g$ZOqDHN2r_{E?GY zoUg7InB=s6ge%z3}TCO`S38GR#fw0XFkKu>ccZRT51|&#^g^@T{?b@ ztUinjfd8-K90lE&7=0K&F@UKeS)eQc9bv0o delta 356 zcmaEDv)zjCGcPX}0}%MlZpr*9wvlf;FVhUx&BuASvG9d*g|Y_=>oMgChH{4rP8Jjn zX5`(RDxAZ_$TazqsODrPF=dQw-yi-+|T zD?3o+6b~y<1m8flhtIpblezOeHa%6e_#MJ zcJM$MC(5CW3#pkGvhpvc76AE^@5m%_fYpIGuCl8IQb68R0ucfrB4?7E1Y_xBNjXQs RIz~nx#!n1jsz??n2>>N`US$9P diff --git a/adapters/google_adapter.py b/adapters/google_adapter.py index 7298066..d40d60f 100644 --- a/adapters/google_adapter.py +++ b/adapters/google_adapter.py @@ -131,9 +131,17 @@ class GoogleAdapter: else: logger.warning("No images text generated from parts") + input_tokens = 0 + output_tokens = 0 + if response.usage_metadata: + input_tokens = response.usage_metadata.prompt_token_count + output_tokens = response.usage_metadata.candidates_token_count + metrics = { "api_execution_time_seconds": api_duration, - "token_usage": token_usage + "token_usage": token_usage, + "input_token_usage": input_tokens, + "output_token_usage": output_tokens } return generated_images, metrics diff --git a/api/models/GenerationRequest.py b/api/models/GenerationRequest.py index 06f8a96..02e6436 100644 --- a/api/models/GenerationRequest.py +++ b/api/models/GenerationRequest.py @@ -14,6 +14,7 @@ class GenerationRequest(BaseModel): quality: Quality = Quality.ONEK prompt: str telegram_id: Optional[int] = None + use_profile_image: bool = True assets_list: List[str] @@ -32,6 +33,8 @@ class GenerationResponse(BaseModel): execution_time_seconds: Optional[float] = None api_execution_time_seconds: Optional[float] = None token_usage: Optional[int] = None + input_token_usage: Optional[int] = None + output_token_usage: Optional[int] = None progress: int = 0 created_at: datetime = datetime.now(UTC) updated_at: datetime = datetime.now(UTC) diff --git a/api/models/__pycache__/GenerationRequest.cpython-313.pyc b/api/models/__pycache__/GenerationRequest.cpython-313.pyc index ff498b0c63c3f89ea26d6f101def9d416d5f9e61..dce78439a7eecf9a676f44ab034945bc55c4fdd3 100644 GIT binary patch delta 841 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 delta 433 zcmcaFv_X*fGcPX}0}y<_)siW`k++tKF=BEzQ)_(;e++vthdNLuMgYj-1hd$HEG`f$ zn5jrGhBbzb6(r9d%ng>I*PzWRzBdNp?EG)$kEMm!6Bo!kKG*lEWE(R5s0gH=+&5$UPO=r@SoGi!U zKe>@*;$%zKNsNk<&#-oB7y*qdG6oSMAVL;I$bkq`5Mc%+lt2vg$#rZ}jB=A_vPHOX zg9La$gcgWk0}(nPLKj5n0f}3zX*v0cB}Mum0Rs@h2_h^(1T%=Rp6tc0#&nZmauK`# mGTKc3z@g6QI$46#Oi+l?hjD`BR|XIbb`$^z0ZdT<