mirror of
https://github.com/Zippland/NanoComic.git
synced 2026-01-31 06:19:53 +08:00
49 lines
1.0 KiB
Python
49 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import TypedDict
|
|
|
|
from langgraph.graph import add_messages
|
|
from typing_extensions import Annotated
|
|
|
|
|
|
import operator
|
|
|
|
|
|
class OverallState(TypedDict):
|
|
messages: Annotated[list, add_messages]
|
|
search_query: Annotated[list, operator.add]
|
|
web_research_result: Annotated[list, operator.add]
|
|
sources_gathered: Annotated[list, operator.add]
|
|
initial_search_query_count: int
|
|
max_research_loops: int
|
|
research_loop_count: int
|
|
reasoning_model: str
|
|
|
|
|
|
class ReflectionState(TypedDict):
|
|
is_sufficient: bool
|
|
knowledge_gap: str
|
|
follow_up_queries: Annotated[list, operator.add]
|
|
research_loop_count: int
|
|
number_of_ran_queries: int
|
|
|
|
|
|
class Query(TypedDict):
|
|
query: str
|
|
rationale: str
|
|
|
|
|
|
class QueryGenerationState(TypedDict):
|
|
search_query: list[Query]
|
|
|
|
|
|
class WebSearchState(TypedDict):
|
|
search_query: str
|
|
id: str
|
|
|
|
|
|
@dataclass(kw_only=True)
|
|
class SearchStateOutput:
|
|
running_summary: str = field(default=None) # Final report
|