Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions codeflash/api/aiservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ def __init__(self) -> None:
self.base_url = self.get_aiservice_base_url()
self.headers = {"Authorization": f"Bearer {get_codeflash_api_key()}", "Connection": "close"}
self.llm_call_counter = count(1)
self.is_local = self.base_url == "http://localhost:8000"
self.timeout: float | None = None if self.is_local else 90

def get_next_sequence(self) -> int:
"""Get the next LLM call sequence number."""
Expand Down Expand Up @@ -166,7 +168,7 @@ def optimize_python_code( # noqa: D417
logger.debug(f"Sending optimize request: trace_id={trace_id}, lsp_mode={payload['lsp_mode']}")

try:
response = self.make_ai_service_request("/optimize", payload=payload, timeout=60)
response = self.make_ai_service_request("/optimize", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating optimized candidates: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -232,7 +234,7 @@ def optimize_python_code_line_profiler( # noqa: D417
}

try:
response = self.make_ai_service_request("/optimize-line-profiler", payload=payload, timeout=60)
response = self.make_ai_service_request("/optimize-line-profiler", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating optimized candidates: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -260,7 +262,7 @@ def adaptive_optimize(self, request: AIServiceAdaptiveOptimizeRequest) -> Optimi
"original_source_code": request.original_source_code,
"candidates": request.candidates,
}
response = self.make_ai_service_request("/adaptive_optimize", payload=payload, timeout=120)
response = self.make_ai_service_request("/adaptive_optimize", payload=payload, timeout=self.timeout)
except (requests.exceptions.RequestException, TypeError) as e:
logger.exception(f"Error generating adaptive optimized candidates: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -316,7 +318,7 @@ def optimize_python_code_refinement(self, request: list[AIServiceRefinerRequest]
for opt in request
]
try:
response = self.make_ai_service_request("/refinement", payload=payload, timeout=120)
response = self.make_ai_service_request("/refinement", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating optimization refinements: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -356,7 +358,7 @@ def code_repair(self, request: AIServiceCodeRepairRequest) -> OptimizedCandidate
"trace_id": request.trace_id,
"test_diffs": request.test_diffs,
}
response = self.make_ai_service_request("/code_repair", payload=payload, timeout=120)
response = self.make_ai_service_request("/code_repair", payload=payload, timeout=self.timeout)
except (requests.exceptions.RequestException, TypeError) as e:
logger.exception(f"Error generating optimization repair: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -451,7 +453,7 @@ def get_new_explanation( # noqa: D417
logger.info("loading|Generating explanation")
console.rule()
try:
response = self.make_ai_service_request("/explain", payload=payload, timeout=60)
response = self.make_ai_service_request("/explain", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating explanations: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -503,7 +505,7 @@ def generate_ranking( # noqa: D417
logger.info("loading|Generating ranking")
console.rule()
try:
response = self.make_ai_service_request("/rank", payload=payload, timeout=60)
response = self.make_ai_service_request("/rank", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating ranking: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -559,7 +561,7 @@ def log_results( # noqa: D417
"optimizations_post": optimizations_post,
}
try:
self.make_ai_service_request("/log_features", payload=payload, timeout=5)
self.make_ai_service_request("/log_features", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error logging features: {e}")

Expand Down Expand Up @@ -612,7 +614,7 @@ def generate_regression_tests( # noqa: D417
"call_sequence": self.get_next_sequence(),
}
try:
response = self.make_ai_service_request("/testgen", payload=payload, timeout=90)
response = self.make_ai_service_request("/testgen", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating tests: {e}")
ph("cli-testgen-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -700,7 +702,7 @@ def get_optimization_review(
}
console.rule()
try:
response = self.make_ai_service_request("/optimization_review", payload=payload, timeout=120)
response = self.make_ai_service_request("/optimization_review", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
logger.exception(f"Error generating optimization refinements: {e}")
ph("cli-optimize-error-caught", {"error": str(e)})
Expand Down Expand Up @@ -742,7 +744,7 @@ def generate_workflow_steps(
)

try:
response = self.make_ai_service_request("/workflow-gen", payload=payload, timeout=60)
response = self.make_ai_service_request("/workflow-gen", payload=payload, timeout=self.timeout)
except requests.exceptions.RequestException as e:
# AI service unavailable - this is expected, will fall back to static workflow
logger.debug(
Expand Down
Loading