Spaces:
Sleeping
Sleeping
File size: 1,213 Bytes
3194955 1651eb7 3194955 1651eb7 3194955 1651eb7 3194955 1651eb7 3194955 1651eb7 3194955 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
"""
LangGraph Workflow Setup for ChaBo RAG Orchestrator
"""
import logging
from functools import partial
from langgraph.graph import StateGraph, START, END
from .state import GraphState
from .nodes import retrieve_node, generate_node_streaming, ingest_node
logger = logging.getLogger(__name__)
def build_workflow(retriever_instance, generator_instance):
"""
Build and compile the LangGraph workflow for RAG orchestration
"""
workflow = StateGraph(GraphState)
# Inject services into nodes (ingest_node doesn't need dependency injection)
r_node = partial(retrieve_node, retriever=retriever_instance)
g_node = partial(generate_node_streaming, generator=generator_instance)
# Add nodes
workflow.add_node("ingest", ingest_node)
workflow.add_node("retrieve", r_node)
workflow.add_node("generate", g_node)
# Define edges: ingest -> retrieve -> generate
workflow.add_edge(START, "ingest")
workflow.add_edge("ingest", "retrieve")
workflow.add_edge("retrieve", "generate")
workflow.add_edge("generate", END)
compiled_graph = workflow.compile()
logger.info("LangGraph workflow compiled successfully with ingest node")
return compiled_graph |