From f67b7c37a638fcc87b521f0f55130307d5005710 Mon Sep 17 00:00:00 2001 From: Mathias Scheider Date: Sat, 3 Oct 2026 09:29:37 +0200 Subject: [PATCH] logging --- .gitignore | 1 + src/photools3/cli.py | 13 ++++++++----- src/photools3/llm_session.py | 7 ++++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 1e73087..180b435 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ wheels/ .venv .env +logs/ diff --git a/src/photools3/cli.py b/src/photools3/cli.py index bff0dd0..b86db43 100644 --- a/src/photools3/cli.py +++ b/src/photools3/cli.py @@ -1,7 +1,9 @@ +import logging from pathlib import Path from typing import Annotated import typer +from utils.logging_config import LoggingSettings from photools3.llm_session import ( LlmSessionCaptionsAndKeywords, @@ -10,7 +12,8 @@ from photools3.llm_session import ( from photools3.photo import Photo app = typer.Typer(help="PhotoTools3: A CLI for image processing.") - +LoggingSettings() +logger = logging.getLogger(__name__) @app.callback(invoke_without_command=True) def main( @@ -49,16 +52,16 @@ def _run_llm_task( file_path: Path, session: LlmSessionCaptionsAndKeywords | LlmSessionQuality ): try: - typer.echo(f"Processing: {file_path}") + logger.info(f"Processing: {file_path}") photo = Photo(file_path) result = session.call([photo]) - print(result) + logger.info(result) except FileNotFoundError: - typer.echo(f"Error: File '{file_path}' does not exist.", err=True) + logger.error(f"Error: File '{file_path}' does not exist.") raise typer.Exit(code=1) except Exception as e: # noqa: BLE001 - typer.echo(f"Error processing image: {e}", err=True) raise typer.Exit(code=1) + logger.error(f"Error processing image: {e}") if __name__ == "__main__": diff --git a/src/photools3/llm_session.py b/src/photools3/llm_session.py index 08fc89b..e3b1f4a 100644 --- a/src/photools3/llm_session.py +++ b/src/photools3/llm_session.py @@ -1,4 +1,5 @@ import json +import logging import re import openai @@ -18,6 +19,8 @@ from photools3.models import ( from photools3.photo import Photo from photools3.settings import Settings +logger = logging.getLogger(__name__) + settings = Settings() # type: ignore[reportCallIssue] @@ -83,10 +86,12 @@ class LlmSession: except (json.JSONDecodeError, ValidationError) as e: last_error = e if attempt < max_retries: + logger.info("Chatbot response is invalid; promting to correct ...") # Prepare a correction prompt correction_prompt = ( f"The previous response was invalid due to: {e}. " - f"Please provide the corrected JSON based on this content: {json_str if 'json_str' in locals() else 'the original input'}" + f"Please provide the corrected JSON based on this content: " + f"{json_str if 'json_str' in locals() else 'the original input'}" ) # Append correction prompt as a new user message for the next attempt request.messages.append(