From 6ff455358ca29cfe3fa195671ca5b4768812fb66 Mon Sep 17 00:00:00 2001 From: Steve White Date: Fri, 28 Feb 2025 11:53:09 -0600 Subject: [PATCH] Fix Google Gemini model integration with LiteLLM --- config/config.yaml | 2 +- query/llm_interface.py | 2 +- report/report_synthesis.py | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index b5e945e..923a0cd 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -84,7 +84,7 @@ models: gemini-2.0-flash-lite: provider: "google" - model_name: "google/gemini-2.0-flash-lite-001" + model_name: "gemini-2.0-flash-lite-001" temperature: 0.5 max_tokens: 2048 top_p: 1.0 diff --git a/query/llm_interface.py b/query/llm_interface.py index c87b4cd..068482e 100644 --- a/query/llm_interface.py +++ b/query/llm_interface.py @@ -101,7 +101,7 @@ class LLMInterface: } elif provider == 'google': # Special handling for Google Gemini models - params['model'] = self.model_config.get('model_name', self.model_name) + params['model'] = f"google/{self.model_config.get('model_name', self.model_name)}" # Google Gemini uses a different API base params['api_base'] = self.model_config.get('endpoint', 'https://generativelanguage.googleapis.com/v1') else: diff --git a/report/report_synthesis.py b/report/report_synthesis.py index e9cb071..3d9ea50 100644 --- a/report/report_synthesis.py +++ b/report/report_synthesis.py @@ -95,6 +95,11 @@ class ReportSynthesizer: 'HTTP-Referer': 'https://sim-search.app', # Replace with your actual app URL 'X-Title': 'Intelligent Research System' # Replace with your actual app name } + elif provider == 'google': + # Special handling for Google Gemini models + params['model'] = f"google/{self.model_config.get('model_name', self.model_name)}" + # Google Gemini uses a different API base + params['api_base'] = self.model_config.get('endpoint', 'https://generativelanguage.googleapis.com/v1') else: # Standard provider (OpenAI, Anthropic, etc.) params['model'] = self.model_name @@ -118,6 +123,9 @@ class ReportSynthesizer: params['messages'] = messages params['stream'] = stream + logger.info(f"Generating completion with model: {params.get('model')}") + logger.info(f"Provider: {self.model_config.get('provider')}") + response = completion(**params) if stream: @@ -132,6 +140,13 @@ class ReportSynthesizer: return content except Exception as e: logger.error(f"Error generating completion: {e}") + logger.error(f"Model params: {params}") + + # More detailed error for debugging + if hasattr(e, '__dict__'): + for key, value in e.__dict__.items(): + logger.error(f"Error detail - {key}: {value}") + return f"Error: {str(e)}" def _process_thinking_tags(self, content: str) -> str: