Spaces:
Sleeping
Sleeping
| import logging | |
| from langchain_core.messages import SystemMessage , HumanMessage | |
| from langgraph.graph import StateGraph, MessagesState, START, END | |
| from langgraph.checkpoint.memory import MemorySaver | |
| from .utils.state import State, CompletionFormatter | |
| from .utils.nodes import IntroductionNode | |
| from .utils.utils import DetailsExtractor | |
| from src.genai.utils.models_loader import llm_gpt | |
| from .utils.prompts import completion_check_prompt | |
| business_state = State() | |
| class IntroductionChatbot: | |
| def __init__(self): | |
| self.memory = MemorySaver() | |
| self.llm = llm_gpt | |
| self.workflow = self._initialize_workflow() | |
| self.interact_agent = self.workflow.compile(checkpointer=self.memory) | |
| self.messages = [] | |
| def _initialize_workflow(self): | |
| workflow = StateGraph(MessagesState) | |
| workflow.add_node("chatbot", lambda state: IntroductionNode().run(state, self.llm)) | |
| workflow.add_edge(START, "chatbot") | |
| workflow.add_edge("chatbot", END) | |
| return workflow | |
| def chat(self, user_input: str): | |
| self.messages.append({"role": "user", "content": user_input}) | |
| config = {"configurable": {"thread_id": "1"}} | |
| for message_chunk, metadata in self.interact_agent.stream( | |
| {"messages": [user_input]}, | |
| config=config, | |
| stream_mode="messages" | |
| ): | |
| yield message_chunk.content | |
| def is_complete(self, latest_response: str) -> bool: | |
| messages = [SystemMessage(content=completion_check_prompt()),HumanMessage(content=f'''The response of assistant is: {latest_response}''')] | |
| response = llm_gpt.with_structured_output(CompletionFormatter).invoke(messages) | |
| print('Completion response:', response.completion) | |
| return response.completion | |
| def extract_details(self): | |
| response = DetailsExtractor(business_state.interactions).run() | |
| return response | |
| def reset(self): | |
| self.memory= MemorySaver() | |
| self.interact_agent = self.workflow.compile(checkpointer=self.memory) | |