Spaces:
Sleeping
Sleeping
| import logging | |
| import os | |
| from dotenv import load_dotenv | |
| from langchain_openai.chat_models import AzureChatOpenAI | |
| from azure.identity import AzureCliCredential ,ChainedTokenCredential ,ManagedIdentityCredential | |
| from openai import AzureOpenAI | |
| from azure.core.credentials import AzureKeyCredential | |
| # Load environment variables from .env (so OPENAI_API_KEY in .env is available) | |
| load_dotenv() | |
| credential_chain = ChainedTokenCredential( | |
| ManagedIdentityCredential(),AzureCliCredential() | |
| ) | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='[%(asctime)s] [%(levelname)s] %(name)s: %(message)s', | |
| ) | |
| logger = logging.getLogger("webcrawler-fastapi") | |
| logging.getLogger("LiteLLM").setLevel(logging.WARNING) | |
| logging.getLogger("azure.core.pipeline.policies.http_logging_policy").setLevel(logging.WARNING) | |
| logging.getLogger("httpx").setLevel(logging.WARNING) | |
| logging.getLogger("uvicorn.access").setLevel(logging.WARNING) | |
| def setup_azure_openai_local(logger): | |
| """Setup Azure OpenAI client for local deployment.""" | |
| try: | |
| logger.info("Setting up Azure OpenAI client for local deployment") | |
| openai_endpoint = 'https://dmrid-ai-services-dev-openai-04.openai.azure.com/' | |
| azure_deployment = 'gpt-4.1' | |
| # Prefer OPENAI_API_KEY from .env or env, fall back to legacy OPEN_AI_API | |
| api_key = os.getenv('OPENAI_API_KEY') or os.getenv('OPEN_AI_API') | |
| if api_key: | |
| os.environ["OPENAI_API_KEY"] = api_key | |
| logger.info("OPENAI_API_KEY set from environment/.env variable.") | |
| else: | |
| logger.error( | |
| "Neither OPENAI_API_KEY nor OPEN_AI_API is set.\n" | |
| "Set OPENAI_API_KEY in your shell or in a .env file (e.g. OPENAI_API_KEY=your_key),\n" | |
| "or update the code to use the Azure SDK (azure.openai.OpenAIClient) with Managed Identity." | |
| ) | |
| raise RuntimeError( | |
| "OPENAI_API_KEY not set; cannot initialize AzureChatOpenAI without API key." | |
| ) | |
| azure_openai_client = AzureChatOpenAI( | |
| azure_deployment=azure_deployment, | |
| openai_api_type='azure_ad', | |
| api_version="2024-09-01-preview", | |
| azure_endpoint=openai_endpoint, | |
| temperature=0 | |
| ) | |
| logger.info("Azure OpenAI client setup completed.") | |
| return azure_openai_client | |
| except Exception as e: | |
| logger.error(f"Failed to set up Azure OpenAI client: {e}", exc_info=True) | |
| raise | |
| azure_openai_client = setup_azure_openai_local(logger) | |