create config.py
Browse files
config.py
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# FILE: config.py
|
2 |
+
# (Corrected and complete version with all constants)
|
3 |
+
|
4 |
+
import os
|
5 |
+
import dspy
|
6 |
+
import logging
|
7 |
+
from dotenv import load_dotenv
|
8 |
+
from dspy_llm_wrapper import SyncCustomGeminiDspyLM
|
9 |
+
|
10 |
+
# Load environment variables from a .env file
|
11 |
+
load_dotenv()
|
12 |
+
|
13 |
+
# Setup basic logging
|
14 |
+
logging.basicConfig(level=logging.INFO, format='{levelname} {asctime} {name}: {message}', style='{')
|
15 |
+
logger = logging.getLogger(__name__)
|
16 |
+
|
17 |
+
API_KEY = os.environ.get("GOOGLE_API_KEY")
|
18 |
+
|
19 |
+
def initialize_dspy():
|
20 |
+
"""Configures and returns the DSPy Language Model instance."""
|
21 |
+
if not API_KEY:
|
22 |
+
logger.error("FATAL: GOOGLE_API_KEY not found. Cannot initialize DSPy.")
|
23 |
+
return None
|
24 |
+
|
25 |
+
try:
|
26 |
+
LITELLM_MODEL_STRING = "gemini/gemini-2.5-flash-preview-04-17"
|
27 |
+
custom_lm = SyncCustomGeminiDspyLM(
|
28 |
+
model=LITELLM_MODEL_STRING,
|
29 |
+
api_key=API_KEY,
|
30 |
+
temperature=0.7,
|
31 |
+
)
|
32 |
+
dspy.settings.configure(lm=custom_lm)
|
33 |
+
logger.info(f"DSPy configured globally with model: {LITELLM_MODEL_STRING}")
|
34 |
+
return custom_lm
|
35 |
+
except Exception as e:
|
36 |
+
logger.error(f"Fatal error configuring DSPy: {e}")
|
37 |
+
return None
|
38 |
+
|
39 |
+
# --- Application Constants ---
|
40 |
+
|
41 |
+
# State Keys for managing the conversation state
|
42 |
+
STATE_STAGE = "stage"
|
43 |
+
STATE_HISTORY = "conversation_history"
|
44 |
+
STATE_FINAL_SYLLABUS = "final_syllabus_xml"
|
45 |
+
STATE_EXPLAINER_PROMPT = "explainer_system_prompt"
|
46 |
+
STATE_EXPLANATION_START_INDEX = "explanation_start_index"
|
47 |
+
STATE_CURRENT_TITLE = "current_title" # <-- ADDED
|
48 |
+
STATE_GENERATED_TITLE = "generated_title" # <-- ADDED
|
49 |
+
STATE_RESOURCE_SUMMARY_OVERVIEW = "resource_summary_overview_for_manager"
|
50 |
+
STATE_RESOURCE_TYPE_FOR_SYLLABUS = "resource_type_for_syllabus_gen"
|
51 |
+
STATE_RESOURCE_CONTENT_JSON_FOR_SYLLABUS = "resource_content_json_for_syllabus_gen"
|
52 |
+
|
53 |
+
# Flag Keys for UI updates
|
54 |
+
STATE_DISPLAY_SYLLABUS_FLAG = "display_syllabus_flag"
|
55 |
+
STATE_TRANSITION_EXPLAINER_FLAG = "transition_to_explainer_flag"
|
56 |
+
|
57 |
+
# Stage Names
|
58 |
+
STAGE_START = "START"
|
59 |
+
STAGE_NEGOTIATING = "NEGOTIATING"
|
60 |
+
STAGE_EXPLAINING = "EXPLAINING"
|
61 |
+
STAGE_ERROR = "ERROR"
|
62 |
+
STATE_UPLOADED_FILENAMES = "uploaded_filenames_list"
|
63 |
+
|
64 |
+
# Chat Logic Constants
|
65 |
+
DEFAULT_CHAT_TITLE = "New Chat" # <-- ADDED
|
66 |
+
TITLE_GENERATION_THRESHOLD = 4 # <-- ADDED
|
67 |
+
TITLE_MAX_HISTORY_SNIPPET_FOR_TITLE = 6 # <-- ADDED
|