diff --git a/src/openai_client.py b/src/openai_client.py deleted file mode 100644 index 34868fb..0000000 --- a/src/openai_client.py +++ /dev/null @@ -1,68 +0,0 @@ -"""OpenAI client with custom MCP integration.""" - -import configparser -import logging # Import logging - -from openai import OpenAI - -from mcp_manager import SyncMCPManager - -# Get a logger for this module -logger = logging.getLogger(__name__) - - -class OpenAIClient: - def __init__(self): - logger.debug("Initializing OpenAIClient...") # Add init log - self.config = configparser.ConfigParser() - self.config.read("config/config.ini") - - # Validate configuration - if not self.config.has_section("openai"): - raise Exception("Missing [openai] section in config.ini") - if not self.config["openai"].get("api_key"): - raise Exception("Missing api_key in config.ini") - - # Configure OpenAI client - self.client = OpenAI( - api_key=self.config["openai"]["api_key"], base_url=self.config["openai"]["base_url"], default_headers={"HTTP-Referer": "https://streamlit-chat-app.com", "X-Title": "Streamlit Chat App"} - ) - - # Initialize MCP manager if configured - self.mcp_manager = None - if self.config.has_section("mcp"): - mcp_config_path = self.config["mcp"].get("servers_json", "config/mcp_config.json") - self.mcp_manager = SyncMCPManager(mcp_config_path) - - def get_chat_response(self, messages): - try: - # Try using MCP if available - if self.mcp_manager and self.mcp_manager.initialize(): - logger.info("Using MCP with tools...") # Use logger - last_message = messages[-1]["content"] - # Pass API key and base URL from config.ini - response = self.mcp_manager.process_query( - query=last_message, - model_name=self.config["openai"]["model"], - api_key=self.config["openai"]["api_key"], - base_url=self.config["openai"].get("base_url"), # Use .get for optional base_url - ) - - if "error" not in response: - logger.debug("MCP processing successful, wrapping response.") - # Convert to OpenAI-compatible response format - return self._wrap_mcp_response(response) - - # Fall back to standard OpenAI - logger.info(f"Falling back to standard OpenAI API with model: {self.config['openai']['model']}") # Use logger - return self.client.chat.completions.create(model=self.config["openai"]["model"], messages=messages, stream=True) - - except Exception as e: - error_msg = f"API Error (Code: {getattr(e, 'code', 'N/A')}): {str(e)}" - logger.error(error_msg, exc_info=True) # Use logger - raise Exception(error_msg) - - def _wrap_mcp_response(self, response: dict): - """Return the MCP response dictionary directly (for non-streaming).""" - # No conversion needed if app.py handles dicts separately - return response