44import os
55import platform
66import time
7+ from itertools import count
78from typing import TYPE_CHECKING , Any , cast
89
910import requests
@@ -39,6 +40,11 @@ class AiServiceClient:
3940 def __init__ (self ) -> None :
4041 self .base_url = self .get_aiservice_base_url ()
4142 self .headers = {"Authorization" : f"Bearer { get_codeflash_api_key ()} " , "Connection" : "close" }
43+ self .llm_call_counter = count (1 )
44+
45+ def get_next_sequence (self ) -> int :
46+ """Get the next LLM call sequence number."""
47+ return next (self .llm_call_counter )
4248
4349 def get_aiservice_base_url (self ) -> str :
4450 if os .environ .get ("CODEFLASH_AIS_SERVER" , default = "prod" ).lower () == "local" :
@@ -151,7 +157,7 @@ def optimize_python_code( # noqa: D417
151157 "repo_name" : git_repo_name ,
152158 "is_async" : is_async ,
153159 "lsp_mode" : is_LSP_enabled (),
154- "call_sequence" : 1 ,
160+ "call_sequence" : self . get_next_sequence () ,
155161 }
156162 logger .debug (f"Sending optimize request: trace_id={ trace_id } , lsp_mode={ payload ['lsp_mode' ]} " )
157163
@@ -218,7 +224,7 @@ def optimize_python_code_line_profiler( # noqa: D417
218224 "experiment_metadata" : experiment_metadata ,
219225 "codeflash_version" : codeflash_version ,
220226 "lsp_mode" : is_LSP_enabled (),
221- "call_sequence" : 1 ,
227+ "call_sequence" : self . get_next_sequence () ,
222228 }
223229
224230 try :
@@ -269,7 +275,7 @@ def optimize_python_code_refinement(self, request: list[AIServiceRefinerRequest]
269275 "trace_id" : opt .trace_id ,
270276 "function_references" : opt .function_references ,
271277 "python_version" : platform .python_version (),
272- "call_sequence" : opt . call_sequence ,
278+ "call_sequence" : self . get_next_sequence () ,
273279 }
274280 for opt in request
275281 ]
@@ -359,7 +365,6 @@ def get_new_explanation( # noqa: D417
359365 throughput_improvement : str | None = None ,
360366 function_references : str | None = None ,
361367 codeflash_version : str = codeflash_version ,
362- call_sequence : int | None = None ,
363368 ) -> str :
364369 """Optimize the given python code for performance by making a request to the Django endpoint.
365370
@@ -405,7 +410,7 @@ def get_new_explanation( # noqa: D417
405410 "throughput_improvement" : throughput_improvement ,
406411 "function_references" : function_references ,
407412 "codeflash_version" : codeflash_version ,
408- "call_sequence" : call_sequence ,
413+ "call_sequence" : self . get_next_sequence () ,
409414 }
410415 logger .info ("loading|Generating explanation" )
411416 console .rule ()
@@ -533,7 +538,6 @@ def generate_regression_tests( # noqa: D417
533538 test_timeout : int ,
534539 trace_id : str ,
535540 test_index : int ,
536- call_sequence : int | None = None ,
537541 ) -> tuple [str , str , str ] | None :
538542 """Generate regression tests for the given function by making a request to the Django endpoint.
539543
@@ -569,7 +573,7 @@ def generate_regression_tests( # noqa: D417
569573 "python_version" : platform .python_version (),
570574 "codeflash_version" : codeflash_version ,
571575 "is_async" : function_to_optimize .is_async ,
572- "call_sequence" : call_sequence ,
576+ "call_sequence" : self . get_next_sequence () ,
573577 }
574578 try :
575579 response = self .make_ai_service_request ("/testgen" , payload = payload , timeout = 90 )
@@ -610,7 +614,6 @@ def get_optimization_review(
610614 replay_tests : str ,
611615 concolic_tests : str , # noqa: ARG002
612616 calling_fn_details : str ,
613- call_sequence : int | None = None ,
614617 ) -> str :
615618 """Compute the optimization review of current Pull Request.
616619
@@ -626,7 +629,6 @@ def get_optimization_review(
626629 root_dir: Path -> path of git directory
627630 concolic_tests: str -> concolic_tests (not used)
628631 calling_fn_details: str -> filenames and definitions of functions which call the function_to_optimize
629- call_sequence: int | None -> sequence number for multi-model calls
630632
631633 Returns:
632634 -------
@@ -658,7 +660,7 @@ def get_optimization_review(
658660 "codeflash_version" : codeflash_version ,
659661 "calling_fn_details" : calling_fn_details ,
660662 "python_version" : platform .python_version (),
661- "call_sequence" : call_sequence ,
663+ "call_sequence" : self . get_next_sequence () ,
662664 }
663665 console .rule ()
664666 try :
0 commit comments