99from uuid import UUID
1010from datetime import datetime , timezone
1111from fastapi import HTTPException , status , UploadFile
12+ from api .config import get
13+ from api .llm .token_counter import TokenCounter
1214from api .error_constant import ErrorConstants
1315from api .cache .cache_enums import CacheType
1416from api .Assistant .assistant_cache_service import (
1820)
1921from api .utils import Utils
2022
23+ token_counter = TokenCounter (api_key = get ("GEMINI_API_KEY" ))
24+
2125
2226def _build_context_responses (contexts ) -> List [ContextResponse ]:
2327 return [
@@ -81,8 +85,9 @@ async def create_assistant_service(token: str, assistant_request: AssistantReque
8185 content = "\n \n " .join ([detail .content for detail in search_details ]) if search_details else ""
8286 else :
8387 content = ctx .content
88+ token_count = token_counter .count_tokens (content )
8489 contexts_list .append (
85- Context (content = content , pecha_title = ctx .pecha_title , pecha_text_id = ctx .pecha_text_id )
90+ Context (content = content , pecha_title = ctx .pecha_title , pecha_text_id = ctx .pecha_text_id , token_count = token_count )
8691 )
8792 if files :
8893 for file in files :
@@ -91,7 +96,8 @@ async def create_assistant_service(token: str, assistant_request: AssistantReque
9196 try :
9297 Utils .validate_file (file .filename , len (file_bytes ))
9398 extracted_content = Utils .extract_content_from_file (file_bytes , file .filename )
94- contexts_list .append (Context (content = extracted_content ))
99+ file_token_count = token_counter .count_tokens (extracted_content )
100+ contexts_list .append (Context (content = extracted_content , token_count = file_token_count ))
95101 except ValueError as e :
96102 raise HTTPException (status_code = status .HTTP_400_BAD_REQUEST , detail = str (e ))
97103
@@ -171,8 +177,9 @@ async def update_assistant_service(assistant_id: UUID, update_request: UpdateAss
171177 content = "\n \n " .join ([detail .content for detail in search_details ]) if search_details else ""
172178 else :
173179 content = ctx .content
180+ token_count = token_counter .count_tokens (content )
174181 new_contexts .append (
175- Context (content = content , pecha_title = ctx .pecha_title , pecha_text_id = ctx .pecha_text_id )
182+ Context (content = content , pecha_title = ctx .pecha_title , pecha_text_id = ctx .pecha_text_id , token_count = token_count )
176183 )
177184 assistant .contexts = new_contexts
178185
0 commit comments