Spaces:
Sleeping
Sleeping
Commit ·
2516328
1
Parent(s): 7ae2c0e
Fix langchain deprecation + lazy init RAGExplainer
Browse files- rag/explainer.py +3 -3
- routes/analyze.py +10 -3
rag/explainer.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
from
|
| 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 |
-
"
|
| 16 |
}
|
| 17 |
if settings.OPENAI_BASE_URL:
|
| 18 |
-
llm_kwargs["
|
| 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 =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
|
| 24 |
class AnalysisResponse(BaseModel):
|
|
@@ -107,7 +114,7 @@ async def analyze_resume(
|
|
| 107 |
)
|
| 108 |
|
| 109 |
# Generate AI explanation and suggestions
|
| 110 |
-
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 =
|
| 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,
|