Akash-Dragon commited on
Commit
2516328
·
1 Parent(s): 7ae2c0e

Fix langchain deprecation + lazy init RAGExplainer

Browse files
Files changed (2) hide show
  1. rag/explainer.py +3 -3
  2. routes/analyze.py +10 -3
rag/explainer.py CHANGED
@@ -1,4 +1,4 @@
1
- from langchain.chat_models import ChatOpenAI
2
  from langchain.prompts import ChatPromptTemplate
3
  from langchain.schema import HumanMessage, SystemMessage
4
  from typing import Dict, List
@@ -12,10 +12,10 @@ class RAGExplainer:
12
  llm_kwargs = {
13
  "model": "gpt-4.1-nano",
14
  "temperature": 0.3,
15
- "openai_api_key": settings.OPENAI_API_KEY
16
  }
17
  if settings.OPENAI_BASE_URL:
18
- llm_kwargs["openai_api_base"] = settings.OPENAI_BASE_URL
19
 
20
  self.llm = ChatOpenAI(**llm_kwargs)
21
 
 
1
+ from langchain_openai import ChatOpenAI
2
  from langchain.prompts import ChatPromptTemplate
3
  from langchain.schema import HumanMessage, SystemMessage
4
  from typing import Dict, List
 
12
  llm_kwargs = {
13
  "model": "gpt-4.1-nano",
14
  "temperature": 0.3,
15
+ "api_key": settings.OPENAI_API_KEY
16
  }
17
  if settings.OPENAI_BASE_URL:
18
+ llm_kwargs["base_url"] = settings.OPENAI_BASE_URL
19
 
20
  self.llm = ChatOpenAI(**llm_kwargs)
21
 
routes/analyze.py CHANGED
@@ -18,7 +18,14 @@ router = APIRouter(prefix="/analyze", tags=["Resume Analysis"])
18
  # Initialize services
19
  embedding_model = EmbeddingModel(settings.EMBEDDING_MODEL)
20
  ranking_engine = RankingEngine()
21
- rag_explainer = RAGExplainer()
 
 
 
 
 
 
 
22
 
23
 
24
  class AnalysisResponse(BaseModel):
@@ -107,7 +114,7 @@ async def analyze_resume(
107
  )
108
 
109
  # Generate AI explanation and suggestions
110
- explanation = rag_explainer.generate_explanation(
111
  resume_text=resume_text,
112
  job_description=job_text,
113
  ranking_result=ranking_result,
@@ -184,7 +191,7 @@ async def analyze_resume_text(
184
  )
185
 
186
  # Generate AI explanation
187
- explanation = rag_explainer.generate_explanation(
188
  resume_text=resume_text,
189
  job_description=job_description,
190
  ranking_result=ranking_result,
 
18
  # Initialize services
19
  embedding_model = EmbeddingModel(settings.EMBEDDING_MODEL)
20
  ranking_engine = RankingEngine()
21
+ rag_explainer = None # Lazy init to avoid startup crash if no API key
22
+
23
+
24
+ def get_rag_explainer():
25
+ global rag_explainer
26
+ if rag_explainer is None:
27
+ rag_explainer = RAGExplainer()
28
+ return rag_explainer
29
 
30
 
31
  class AnalysisResponse(BaseModel):
 
114
  )
115
 
116
  # Generate AI explanation and suggestions
117
+ explanation = get_rag_explainer().generate_explanation(
118
  resume_text=resume_text,
119
  job_description=job_text,
120
  ranking_result=ranking_result,
 
191
  )
192
 
193
  # Generate AI explanation
194
+ explanation = get_rag_explainer().generate_explanation(
195
  resume_text=resume_text,
196
  job_description=job_description,
197
  ranking_result=ranking_result,