IFX-sandbox / gradio_llm.py
aliss77777's picture
Upload folder using huggingface_hub
06cb2a3 verified
"""
This module initializes the language model and embedding model without Streamlit dependencies.
"""
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
# Load environment variables from the ifx-sandbox/.env file
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
ENV_FILE = os.path.join(PROJECT_DIR, ".env")
load_dotenv(ENV_FILE)
print(f"Loading environment variables from: {ENV_FILE}")
# Get API keys from environment
def get_api_key(key_name):
"""Get API key from environment variables only, no Streamlit"""
value = os.environ.get(key_name)
if value:
print(f"Found {key_name} in environment variables")
else:
print(f"WARNING: {key_name} not found in environment variables")
return value
OPENAI_API_KEY = get_api_key("OPENAI_API_KEY")
OPENAI_MODEL = get_api_key("OPENAI_MODEL") or "gpt-4-turbo"
if not OPENAI_API_KEY:
error_message = "OPENAI_API_KEY is not set in environment variables."
print(f"ERROR: {error_message}")
# Use a fallback API key for development testing, if available
fallback_key = os.environ.get("OPENAI_API_KEY_FALLBACK")
if fallback_key:
print("Using fallback API key for development")
OPENAI_API_KEY = fallback_key
else:
raise ValueError(error_message)
# Create the LLM with better error handling
try:
llm = ChatOpenAI(
openai_api_key=OPENAI_API_KEY,
model=OPENAI_MODEL,
temperature=0.1,
streaming=True # Enable streaming for better response handling
)
# Create the Embedding model
embeddings = OpenAIEmbeddings(
openai_api_key=OPENAI_API_KEY
)
print(f"Successfully initialized OpenAI models (using {OPENAI_MODEL})")
except Exception as e:
error_message = f"Failed to initialize OpenAI models: {str(e)}"
print(f"ERROR: {error_message}")
raise Exception(error_message)