Yaswanth123's picture
create config.py
aa03f63 verified
raw
history blame
2.38 kB
# FILE: config.py
# (Corrected and complete version with all constants)
import os
import dspy
import logging
from dotenv import load_dotenv
from dspy_llm_wrapper import SyncCustomGeminiDspyLM
# Load environment variables from a .env file
load_dotenv()
# Setup basic logging
logging.basicConfig(level=logging.INFO, format='{levelname} {asctime} {name}: {message}', style='{')
logger = logging.getLogger(__name__)
API_KEY = os.environ.get("GOOGLE_API_KEY")
def initialize_dspy():
"""Configures and returns the DSPy Language Model instance."""
if not API_KEY:
logger.error("FATAL: GOOGLE_API_KEY not found. Cannot initialize DSPy.")
return None
try:
LITELLM_MODEL_STRING = "gemini/gemini-2.5-flash-preview-04-17"
custom_lm = SyncCustomGeminiDspyLM(
model=LITELLM_MODEL_STRING,
api_key=API_KEY,
temperature=0.7,
)
dspy.settings.configure(lm=custom_lm)
logger.info(f"DSPy configured globally with model: {LITELLM_MODEL_STRING}")
return custom_lm
except Exception as e:
logger.error(f"Fatal error configuring DSPy: {e}")
return None
# --- Application Constants ---
# State Keys for managing the conversation state
STATE_STAGE = "stage"
STATE_HISTORY = "conversation_history"
STATE_FINAL_SYLLABUS = "final_syllabus_xml"
STATE_EXPLAINER_PROMPT = "explainer_system_prompt"
STATE_EXPLANATION_START_INDEX = "explanation_start_index"
STATE_CURRENT_TITLE = "current_title" # <-- ADDED
STATE_GENERATED_TITLE = "generated_title" # <-- ADDED
STATE_RESOURCE_SUMMARY_OVERVIEW = "resource_summary_overview_for_manager"
STATE_RESOURCE_TYPE_FOR_SYLLABUS = "resource_type_for_syllabus_gen"
STATE_RESOURCE_CONTENT_JSON_FOR_SYLLABUS = "resource_content_json_for_syllabus_gen"
# Flag Keys for UI updates
STATE_DISPLAY_SYLLABUS_FLAG = "display_syllabus_flag"
STATE_TRANSITION_EXPLAINER_FLAG = "transition_to_explainer_flag"
# Stage Names
STAGE_START = "START"
STAGE_NEGOTIATING = "NEGOTIATING"
STAGE_EXPLAINING = "EXPLAINING"
STAGE_ERROR = "ERROR"
STATE_UPLOADED_FILENAMES = "uploaded_filenames_list"
# Chat Logic Constants
DEFAULT_CHAT_TITLE = "New Chat" # <-- ADDED
TITLE_GENERATION_THRESHOLD = 4 # <-- ADDED
TITLE_MAX_HISTORY_SNIPPET_FOR_TITLE = 6 # <-- ADDED