diff --git a/devchat/llm/openai.py b/devchat/llm/openai.py index f6dfd03f..ce882596 100644 --- a/devchat/llm/openai.py +++ b/devchat/llm/openai.py @@ -7,6 +7,8 @@ import httpx import openai +from devchat.ide import IDEService + from .pipeline import ( RetryException, exception_handle, @@ -83,6 +85,7 @@ def retry_timeout(chunks): for chunk in chunks: yield chunk except (openai.APIConnectionError, openai.APITimeoutError) as err: + IDEService().ide_logging("info", f"in retry_timeout: err: {err}") raise RetryException(err) from err @@ -127,8 +130,10 @@ def content_to_json(content): response_obj = json.loads(content_no_block) return response_obj except json.JSONDecodeError as err: + IDEService().ide_logging("info", f"in content_to_json: json decode error: {err}") raise RetryException(err) from err except Exception as err: + IDEService().ide_logging("info", f"in content_to_json: other error: {err}") raise err diff --git a/devchat/llm/pipeline.py b/devchat/llm/pipeline.py index 7917f0b4..6a2bcf32 100644 --- a/devchat/llm/pipeline.py +++ b/devchat/llm/pipeline.py @@ -1,8 +1,11 @@ import sys +import time from typing import Dict import openai +from devchat.ide import IDEService + class RetryException(Exception): def __init__(self, err): @@ -17,8 +20,10 @@ def wrapper(*args, **kwargs): except RetryException as err: if index + 1 == times: raise err.error + IDEService().ide_logging("debug", f"has retries: {index + 1}") continue except Exception as err: + IDEService().ide_logging("info", f"exception: {err}") raise err.error return wrapper @@ -59,6 +64,7 @@ def wrapper(*args, **kwargs): def pipeline(*funcs): def wrapper(*args, **kwargs): + start_time = time.time() for index, func in enumerate(funcs): if index > 0: if isinstance(args, Dict) and args.get("__type__", None) == "parallel": @@ -67,6 +73,8 @@ def wrapper(*args, **kwargs): args = func(args) else: args = func(*args, **kwargs) + end_time = time.time() + IDEService().ide_logging("debug", f"time on pipeline: {end_time-start_time}") return args return wrapper