import os import anyio from openai import OpenAI, OpenAIError from app.core.config import DEEPSEEK_API_BASE, DEEPSEEK_MODEL, DEEPSEEK_API_KEY # Ensure the API key is properly set if not DEEPSEEK_API_KEY: raise ValueError("DEEPSEEK_API_KEY is not set in environment variables") # Initialize the client client = OpenAI( api_key=DEEPSEEK_API_KEY, base_url=DEEPSEEK_API_BASE ) async def chat_with_openai(messages: list[dict[str, str]]) -> str: if not messages: raise ValueError("Messages list cannot be empty") try: # Run sync client in a thread (non-blocking for FastAPI) response = await anyio.to_thread.run_sync( lambda: client.chat.completions.create( model=DEEPSEEK_MODEL, messages=messages, max_tokens=1000, temperature=0.7, stream=False ) ) if not response.choices or not response.choices[0].message.content: return "No response content from the model" return response.choices[0].message.content.strip() except OpenAIError as e: error_msg = f"DeepSeek API Error: {str(e)}" print(error_msg) raise Exception(error_msg) from e except Exception as e: error_msg = f"Unexpected error: {str(e)}" print(error_msg) raise Exception(error_msg) from e