無念である。
def stream( self, input: InputT | Command | None, config: RunnableConfig | None = None, *, context: ContextT | None = None, stream_mode: StreamMode | Sequence[StreamMode] | None = None, print_mode: StreamMode | Sequence[StreamMode] = (), output_keys: str | Sequence[str] | None = None, interrupt_before: All | Sequence[str] | None = None, interrupt_after: All | Sequence[str] | None = None, durability: Durability | None = None, subgraphs: bool = False, debug: bool | None = None, **kwargs: Unpack[DeprecatedKwargs], ) -> Iterator[dict[str, Any] | Any]:
invoke も BaseMessageより詳しくできない。ステートの型とか指定できない。
@override def invoke( self, input: LanguageModelInput, config: Optional[RunnableConfig] = None, *, stop: Optional[list[str]] = None, **kwargs: Any, ) -> BaseMessage:
そのため、せっかくステート型を定義してやりとりするのだけど肝心のど真ん中で型定義を活用できないのがもったいない。グラフをビルドするときに循環構造を検出してくれたりするので、python コードはグラフを構築するDSLでしかない、みたいな立て付けなのかも。