dosemate / workflow.py
DoseMate
Deploy DoseMate to Hugging Face Spaces
a0c836f
Raw History Blame Contribute Delete
1.26 kB
from agents import *
from state import State
from langgraph.graph import StateGraph , START , END
from langsmith import traceable
class Workflow:
def __init__(self):
self.check_input = check_input_type
self.vision = vision_agent
self.rewrite = rewritten_query_agent
self.retrieve = retriever_agent
self.respond = response_agent
def build_graph(self):
graph = StateGraph(State)
# nodes
graph.add_node("vision_agent", self.vision)
graph.add_node("rewrite_query", self.rewrite)
graph.add_node("retrieve_documents", self.retrieve)
graph.add_node("generate_response", self.respond)
graph.add_conditional_edges(
START,
self.check_input,
{"image": "vision_agent", "text": "rewrite_query"} )
# edges
graph.add_edge("vision_agent", "retrieve_documents")
graph.add_edge("rewrite_query", "retrieve_documents")
graph.add_edge("retrieve_documents", "generate_response")
graph.add_edge("generate_response", END)
return graph.compile()
@traceable(project_name="medicine-assistant")
def run(self, initial_state: State):
graph = self.build_graph()
result = graph.invoke(initial_state)
return result