Skip to content
Draft
Show file tree
Hide file tree
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
8 changes: 4 additions & 4 deletions g4f/Provider/you/har_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from ...errors import MissingRequirementsError
from ... import debug

logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)

class NoValidHarFileError(Exception):
...
Expand Down Expand Up @@ -81,14 +81,14 @@ async def get_telemetry_ids(proxy: str = None) -> list:
return [await create_telemetry_id(proxy)]
except NoValidHarFileError as e:
if debug.logging:
logging.error(e)
logger.error(e)

try:
from nodriver import start
except ImportError:
raise MissingRequirementsError('Add .har file from you.com or install "nodriver" package | pip install -U nodriver')
if debug.logging:
logging.error('Getting telemetry_id for you.com with nodriver')
logger.error('Getting telemetry_id for you.com with nodriver')

browser = page = None
try:
Expand All @@ -112,4 +112,4 @@ async def get_telemetry_id():
await browser.stop()
except Exception as e:
if debug.logging:
logging.error(e)
logger.error(e)
9 changes: 8 additions & 1 deletion g4f/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import os
import logging

from . import debug, version
from .models import Model
Expand All @@ -11,6 +12,12 @@
from .providers.base_provider import AsyncGeneratorProvider
from .client.service import get_model_and_provider, get_last_provider

logger = logging.getLogger(__name__)
log_handler = logging.StreamHandler()
log_handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
logger.addHandler(log_handler)
logger.setLevel(logging.ERROR)

class ChatCompletion:
@staticmethod
def create(model : Union[Model, str],
Expand Down Expand Up @@ -145,4 +152,4 @@ def create(model : Union[Model, str],

result = provider.create_completion(model, [{"role": "user", "content": prompt}], stream, **kwargs)

return result if stream else ''.join(result)
return result if stream else ''.join(result)
8 changes: 5 additions & 3 deletions g4f/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
from g4f.typing import Messages
from g4f.cookies import read_cookie_files

logger = logging.getLogger(__name__)

def create_app():
app = FastAPI()
api = Api(app)
Expand Down Expand Up @@ -174,13 +176,13 @@ async def streaming():
except GeneratorExit:
pass
except Exception as e:
logging.exception(e)
logger.exception(e)
yield f'data: {format_exception(e, config)}\n\n'
yield "data: [DONE]\n\n"
return StreamingResponse(streaming(), media_type="text/event-stream")

except Exception as e:
logging.exception(e)
logger.exception(e)
return Response(content=format_exception(e, config), status_code=500, media_type="application/json")

@self.app.post("/v1/completions")
Expand All @@ -203,7 +205,7 @@ async def images_generate(config: ImagesGenerateForm, request: Request = None, p
)
return JSONResponse(response.to_json())
except Exception as e:
logging.exception(e)
logger.exception(e)
return Response(content=format_exception(e, config), status_code=500, media_type="application/json")

def format_exception(e: Exception, config: ChatCompletionsForm) -> str:
Expand Down
36 changes: 18 additions & 18 deletions g4f/api/_logging.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import sys,logging

from loguru import logger
#from loguru import logger

def __exception_handle(e_type, e_value, e_traceback):
if issubclass(e_type, KeyboardInterrupt):
Expand All @@ -9,24 +9,24 @@ def __exception_handle(e_type, e_value, e_traceback):

sys.__excepthook__(e_type, e_value, e_traceback)

class __InterceptHandler(logging.Handler):
def emit(self, record):
try:
level = logger.level(record.levelname).name
except ValueError:
level = record.levelno

frame, depth = logging.currentframe(), 2
while frame.f_code.co_filename == logging.__file__:
frame = frame.f_back
depth += 1

logger.opt(depth=depth, exception=record.exc_info).log(
level, record.getMessage()
)
#class __InterceptHandler(logging.Handler):
# def emit(self, record):
# try:
# level = logger.level(record.levelname).name
# except ValueError:
# level = record.levelno
#
# frame, depth = logging.currentframe(), 2
# while frame.f_code.co_filename == logging.__file__:
# frame = frame.f_back
# depth += 1

# logger.opt(depth=depth, exception=record.exc_info).log(
# level, record.getMessage()
# )

def hook_except_handle():
sys.excepthook = __exception_handle

def hook_logging(**kwargs):
logging.basicConfig(handlers=[__InterceptHandler()], **kwargs)
#def hook_logging(**kwargs):
# logging.basicConfig(handlers=[__InterceptHandler()], **kwargs)
7 changes: 4 additions & 3 deletions g4f/gui/server/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from g4f.providers.base_provider import ProviderModelMixin, FinishReason
from g4f.providers.conversation import BaseConversation

logger = logging.getLogger(__name__)
conversations: dict[dict[str, BaseConversation]] = {}
images_dir = "./generated_images"

Expand Down Expand Up @@ -184,7 +185,7 @@ def _create_response_stream(self, kwargs: dict, conversation_id: str, provider:
conversations[provider][conversation_id] = chunk
yield self._format_json("conversation", conversation_id)
elif isinstance(chunk, Exception):
logging.exception(chunk)
logger.exception(chunk)
yield self._format_json("message", get_error_message(chunk))
elif isinstance(chunk, ImagePreview):
yield self._format_json("preview", chunk.to_string())
Expand Down Expand Up @@ -212,7 +213,7 @@ async def copy_image(image):
elif not isinstance(chunk, FinishReason):
yield self._format_json("content", str(chunk))
except Exception as e:
logging.exception(e)
logger.exception(e)
yield self._format_json('error', get_error_message(e))

def _format_json(self, response_type: str, content):
Expand Down Expand Up @@ -245,4 +246,4 @@ def get_error_message(exception: Exception) -> str:
provider = get_last_provider()
if provider is None:
return message
return f"{provider.__name__}: {message}"
return f"{provider.__name__}: {message}"
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ PyExecJS
duckduckgo-search>=5.0
nest_asyncio
werkzeug
loguru
pillow
platformdirs
fastapi
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"pillow", # image
"cairosvg", # svg image
"werkzeug", "flask", # gui
"loguru", "fastapi", # api
"fastapi", # api
"uvicorn", "nest_asyncio", # api
"pycryptodome" # openai
],
Expand Down