Spaces:
Sleeping
Sleeping
File size: 1,702 Bytes
c01955c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
from src.Agents.models.interview_model import ChatState
from utils.asyncHandler import asyncHandler
from langchain_core.messages import AIMessage,SystemMessage
from src.Agents.prompts import interview_prompts2
from src.Agents.llm.llm_loader import llm
from langsmith import traceable
# ===================== CHAT NODE =====================
@asyncHandler
@traceable(name="Chat_node",tags=['interview:chat'])
async def chat(state: ChatState):
llm_chat = interview_prompts2 | llm
messages = state.messages
# Generate questions only once
if not state.questions_generated:
if not state.topic:
raise ValueError("Topic must be provided to start the interview")
questions = state.questions_generated
return {
"questions_generated": True,
"messages": messages + [
AIMessage(
content=(
f"📝 Interview Topic: **{state.topic}**\n\n"
f"Here are your interview questions:\n\n{questions}\n\n"
"Let's start.\n\nQuestion 1:"
)
)
]
}
# Normal interview flow with remaining time
response = await llm_chat.ainvoke(
state.messages + [SystemMessage(content=f"Time remaining: {state.time_remaining} seconds")]
)
# If time is 0, end politely
if state.time_remaining <= 0:
return {
"messages": messages + [
AIMessage(content="⏰ Time's up! The interview has ended. Thank you for participating.")
]
}
return {
"messages": messages + [AIMessage(content=response.content)]
}
|