state.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from __future__ import annotations
  2. from dataclasses import dataclass, field
  3. from typing import TypedDict
  4. from langgraph.graph import add_messages
  5. from typing_extensions import Annotated
  6. import operator
  7. class OverallState(TypedDict):
  8. messages: Annotated[list, add_messages]
  9. search_query: Annotated[list, operator.add]
  10. web_research_result: Annotated[list, operator.add]
  11. sources_gathered: Annotated[list, operator.add]
  12. initial_search_query_count: int
  13. max_research_loops: int
  14. research_loop_count: int
  15. reasoning_model: str
  16. class ReflectionState(TypedDict):
  17. is_sufficient: bool
  18. knowledge_gap: str
  19. follow_up_queries: Annotated[list, operator.add]
  20. research_loop_count: int
  21. number_of_ran_queries: int
  22. class Query(TypedDict):
  23. query: str
  24. rationale: str
  25. class QueryGenerationState(TypedDict):
  26. search_query: list[Query]
  27. class WebSearchState(TypedDict):
  28. search_query: str
  29. id: str
  30. @dataclass(kw_only=True)
  31. class SearchStateOutput:
  32. running_summary: str = field(default=None) # Final report