SparrowAgent / src /states /queryState.py
nivakaran's picture
Create queryState.py
defefe7 verified
import operator
from typing_extensions import Optional, Annotated, List, Sequence, Literal
from langchain_core.messages import BaseMessage
from langgraph.graph import MessagesState
from langgraph.graph.message import add_messages
from pydantic import BaseModel, Field
class SparrowInputState(MessagesState):
"""Input state for the full agent - only contains from the user input."""
pass
class SparrowAgentState(MessagesState):
"""
Main state for the full multi-agent Sparrow customer service system.
Extends MessagesState with additional fields for Sparrow customer service coordination.
Note: Some fields are duplicated across different state classes for proper
state management between subgraphs and main workflow.
"""
query_brief: Optional[str]
master_messages: Annotated[Sequence[BaseMessage], add_messages]
notes: Annotated[list[str], operator.add] = []
final_message: str
class ClarifyWithUser(BaseModel):
"""Schema for user clarification decision and questions"""
need_clarification: Literal["yes", "no"] = Field(
description="Whether the user needs to be asked a clarifying question"
)
question: str = Field(
description="A question to ask the user to clarify the need"
)
verification:str = Field(
description="Verify message that we will start research after the user has provided the necessary information"
)
class CustomerQuestion(BaseModel):
"""Schema for structured customer query brief """
query_brief: str = Field(
description="A customer question that will be used to guide the research."
)