Spaces:
Sleeping
Sleeping
| # ===================== IMPORTS ===================== | |
| import time | |
| import sqlite3 | |
| from typing import List, Annotated, Optional | |
| from pydantic import BaseModel | |
| from langgraph.graph import StateGraph, START, END | |
| # from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver | |
| from langgraph.graph.message import add_messages | |
| from langchain_aws import ChatBedrockConverse | |
| from langchain.tools import tool | |
| from langchain.messages import HumanMessage, AIMessage, SystemMessage | |
| from langchain_core.messages import BaseMessage | |
| from langchain_community.tools import DuckDuckGoSearchResults | |
| from langchain_core.prompts import PromptTemplate | |
| from pydantic import Field | |
| from src.Agents.graphs.interview_graph_builder import load_conversation | |
| from src.Agents.prompts import generateInterviewPerformance_prompts as GenerateInterviewPerformancePrompt | |
| from src.Agents.llm.llm_loader import llm | |
| from src.Agents.models.Performance_model import Performance | |
| from src.Agents.prompts import interview_performance_prompt | |
| from utils.asyncHandler import asyncHandler | |
| from src.Agents.entity.artifact_entity import InterviewPerformanceArtifact | |
| from src.Agents.entity.config_entity import InterviewPerformanceConfig | |
| # ===================== SQLITE CHECKPOINTER ===================== | |
| # conn = sqlite3.connect("db.sqlite", check_same_thread=False) | |
| # checkpointer = AsyncSqliteSaver(conn) | |
| # ===================== LLM ===================== | |
| class InterviewPerformance: | |
| def __init__(self,interview_performance_config:InterviewPerformanceConfig): | |
| self.interview_performance_config=interview_performance_config | |
| self.llm_str=llm.with_structured_output(Performance) | |
| async def get_performance(self,thread_id:str)->InterviewPerformanceArtifact: | |
| system_message=SystemMessage(content=interview_performance_prompt.format()) | |
| conversations = await load_conversation(thread_id=thread_id) | |
| if not conversations: | |
| return None | |
| # Start with a human instruction message | |
| instruction = HumanMessage( | |
| content=GenerateInterviewPerformancePrompt.format() | |
| ) | |
| # Combine messages | |
| messages_for_llm = [instruction] + conversations | |
| # Ensure last message is human | |
| if not messages_for_llm[-1].type == "human": | |
| messages_for_llm.append(HumanMessage(content="Please generate performance.")) | |
| res = await self.llm_str.ainvoke(messages_for_llm) | |
| interview_performance_artifact=InterviewPerformanceArtifact( | |
| performance=res | |
| ) | |
| return interview_performance_artifact | |