Spaces:
Sleeping
Sleeping
| from langgraph.graph import StateGraph, END | |
| from state import WorkflowState | |
| from nodes import ( | |
| node_analyze_image, | |
| node_fetch_symptoms, | |
| node_ask_symptom_question, | |
| node_process_user_response, | |
| node_generate_final_response, | |
| router_check_image_analysis, | |
| router_should_ask_symptoms, | |
| router_should_continue_asking | |
| ) | |
| def build_graph(): | |
| """ | |
| Builds and compiles the two agentic workflows: | |
| 1. The main diagnosis graph. | |
| 2. The reply-handling graph. | |
| """ | |
| workflow = StateGraph(WorkflowState) | |
| workflow.add_node("analyze_image", node_analyze_image) | |
| workflow.add_node("fetch_symptoms", node_fetch_symptoms) | |
| workflow.add_node("ask_symptom_question", node_ask_symptom_question) | |
| workflow.add_node("generate_final_response", node_generate_final_response) | |
| workflow.set_entry_point("analyze_image") | |
| workflow.add_conditional_edges( | |
| "analyze_image", | |
| router_check_image_analysis, | |
| { | |
| "fetch_symptoms": "fetch_symptoms", | |
| "end_error": END | |
| } | |
| ) | |
| workflow.add_conditional_edges( | |
| "fetch_symptoms", | |
| router_should_ask_symptoms, | |
| { | |
| "ask_symptom_question": "ask_symptom_question", | |
| "generate_final_response": "generate_final_response" | |
| } | |
| ) | |
| workflow.add_edge("ask_symptom_question", END) | |
| workflow.add_edge("generate_final_response", END) | |
| diagnosis_graph = workflow.compile() | |
| reply_workflow = StateGraph(WorkflowState) | |
| reply_workflow.add_node("process_user_response", node_process_user_response) | |
| reply_workflow.add_node("ask_symptom_question", node_ask_symptom_question) | |
| reply_workflow.add_node("generate_final_response", node_generate_final_response) | |
| reply_workflow.set_entry_point("process_user_response") | |
| reply_workflow.add_conditional_edges( | |
| "process_user_response", | |
| router_should_continue_asking, | |
| { | |
| "ask_symptom_question": "ask_symptom_question", | |
| "generate_final_response": "generate_final_response" | |
| } | |
| ) | |
| reply_workflow.add_edge("ask_symptom_question", END) | |
| reply_workflow.add_edge("generate_final_response", END) | |
| reply_graph = reply_workflow.compile() | |
| print("--- LangGraph Compiled ---") | |
| return diagnosis_graph, reply_graph | |