Free lesson · Forward Deployed GenAI Engineering
LangGraph state ಬಳಸಿ LLM-ಚಾಲಿತ ಡಿಸ್ಕವರಿ ಸಂದರ್ಶನಗಳನ್ನು ನಡೆಸಿ
ನೀವು DiscoveryInterviewAgent ಅನ್ನು LangGraph state machine ಆಗಿ ನಿರ್ಮಿಸುತ್ತೀರಿ, ಇದು ಸಂದರ್ಭೋಚಿತ ಅನುಸರಣಾ ಪ್ರಶ್ನೆಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ ಮತ್ತು Pydantic ಮೂಲಕ ರಚನಾತ್ಮಕ ಒಳನೋಟಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ.
Course: AI Solution Delivery · Chapter 1 · AI Use Case Discovery & Data Readiness Assessment
Free to read — no subscription required.
ಪರಿಚಯ
ಇಂಜಿನಿಯರ್ಗಳು AI ಬಳಕೆಯ ಸಂದರ್ಭಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಲು ವಾರಗಟ್ಟಲೆ ಒಬ್ಬರಿಗೊಬ್ಬರು ಡಿಸ್ಕವರಿ ಸಂದರ್ಶನಗಳನ್ನು ನಡೆಸುತ್ತಾರೆ, ಆದರೆ ಅಸಂಘಟಿತ ಟಿಪ್ಪಣಿಗಳು ನಿರ್ಣಾಯಕ ಸಮಸ್ಯೆಗಳನ್ನು (pain points) ಹೂತುಹಾಕುತ್ತವೆ ಅಥವಾ ಸಂಪೂರ್ಣವಾಗಿ ತಪ್ಪಿಸುತ್ತವೆ ಎಂದು ಕೊನೆಗೆ ಕಂಡುಕೊಳ್ಳುತ್ತಾರೆ. ಒಬ್ಬ ಪಾಲುದಾರರು (stakeholder) ಹಿಂದಿನ ವೈಫಲ್ಯ ಅಥವಾ ಪರೀಕ್ಷಿಸದ ಊಹೆಯ ಸುಳಿವು ನೀಡಿದಾಗ ಹೆಚ್ಚು ಆಳವಾಗಿ ಶೋಧಿಸುವುದನ್ನು ಕೈಯಾರೆ ನಡೆಸುವ ಸಂದರ್ಶನವು ಕಷ್ಟಕರವಾಗಿಸುತ್ತದೆ. ಈ ಪಾಠವು LangGraph ಬಳಸಿ DiscoveryInterviewAgent ಅನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸಬೇಕೆಂದು ಕಲಿಸುತ್ತದೆ — ಇದು ಸಂದರ್ಭೋಚಿತ ಅನುಸರಣಾ ಪ್ರಶ್ನೆಗಳನ್ನು ಉತ್ಪಾದಿಸುವ, ರಚನಾತ್ಮಕ ಮೆಟಾಡೇಟಾದೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಸೆರೆಹಿಡಿಯುವ ಮತ್ತು ಪ್ರತಿ ಕ್ಲೈಂಟ್ ಸಂಭಾಷಣೆಯಿಂದ AI ಅವಕಾಶಗಳು ಹಾಗೂ ಡೇಟಾ ಸಿದ್ಧತೆಯ ನಿರ್ಬಂಧಗಳ ಬಗ್ಗೆ ಅಂಕ ನೀಡಲಾದ ಒಳನೋಟಗಳನ್ನು ಹೊರತೆಗೆಯುವ ಸ್ಥಿತಿಯುತ (stateful), ಹೊಂದಿಕೊಳ್ಳುವ ಸಂದರ್ಶನ ವ್ಯವಸ್ಥೆ.
ಪ್ರಮುಖ ಪರಿಭಾಷೆ
-
InterviewState— ಸಂದರ್ಶನದ ತಿರುವುಗಳ (turns) ಉದ್ದಕ್ಕೂ ಎಲ್ಲಾ ಬದಲಾಯಿಸಬಹುದಾದ ಡೇಟಾವನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವTypedDict, ಇದರಲ್ಲಿquestions_asked,responses,follow_ups_pending,insightsಮತ್ತುturn_countಸೇರಿವೆ. LangGraph ಗ್ರಾಫ್ನ ಪ್ರತಿ ನೋಡ್ ಈ ಒಂದೇ ಹಂಚಿಕೆಯ ಆಬ್ಜೆಕ್ಟ್ನಿಂದ ಓದುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ ಹಿಂತಿರುಗಿ ಬರೆಯುತ್ತದೆ, ಇದರಿಂದ ಪ್ರತಿ ನೋಡ್ಗೆ ಸಂಗ್ರಹಗೊಂಡ ಸಂಪೂರ್ಣ ಸಂಭಾಷಣೆಯ ಇತಿಹಾಸದ ಪ್ರವೇಶ ಸಿಗುತ್ತದೆ. -
addreducer —InterviewStateನಲ್ಲಿನ ಲಿಸ್ಟ್ ಫೀಲ್ಡ್ಗಳಿಗೆAnnotated[List[T], add]ಎಂದು ಅನ್ವಯಿಸಲಾಗುವ ಒಂದು ಟಿಪ್ಪಣಿ (annotation), ಇದು ಪ್ರತಿ ನೋಡ್ನreturnನಲ್ಲಿ ಲಿಸ್ಟ್ ಅನ್ನು ಬದಲಿಸುವ ಬದಲು ಹೊಸ ಐಟಂಗಳನ್ನು ಸೇರಿಸಲು LangGraph ಗೆ ಸೂಚಿಸುತ್ತದೆ. ಯಾವುದೇ ಕೈಯಾರೆ ಲಿಸ್ಟ್-ವಿಲೀನ ತರ್ಕವಿಲ್ಲದೆquestions_askedಮತ್ತುresponsesತಿರುವುಗಳ ಉದ್ದಕ್ಕೂ ಬೆಳೆಯಲು ಇದೇ ಕಾರಣ. -
ನೋಡ್ ಫಂಕ್ಷನ್ —
add_nodeಮೂಲಕStateGraphನಲ್ಲಿ ನೋಂದಾಯಿಸಲಾದ ಪೈಥಾನ್ ಫಂಕ್ಷನ್, ಇದು ಸಂಪೂರ್ಣ ಪ್ರಸ್ತುತInterviewStateಅನ್ನು ಸ್ವೀಕರಿಸಿ, ತಾನು ಬದಲಿಸುವ ಫೀಲ್ಡ್ಗಳ ಮಾತ್ರದ ಆಂಶಿಕ ಡಿಕ್ಷನರಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಗ್ರಾಫ್ನ ಮುಂದಿನ ನೋಡ್ಗೆ ಮಾರ್ಗ ಕಲ್ಪಿಸುವ ಮೊದಲು LangGraph ಪ್ರತಿ ನೋಡ್ನreturnಅನ್ನು ಸ್ಟೇಟ್ನಲ್ಲಿ ವಿಲೀನಗೊಳಿಸುತ್ತದೆ. -
DiscoveryInsight— ಸಂದರ್ಶನದಿಂದ ದೊರೆತ ಒಂದು ರಚನಾತ್ಮಕ ಕಂಡುಹಿಡಿತವನ್ನು ಪ್ರತಿನಿಧಿಸುವ Pydantic ಮಾಡೆಲ್, ಇದರಲ್ಲಿcategory(pain_point, opportunity, constraint ಅಥವಾ requirement),confidenceಫ್ಲೋಟ್, ಮತ್ತು ಮುಂದಿನ ಹಂತಗಳ ಪತ್ತೆಹಚ್ಚುವಿಕೆಗಾಗಿ (traceability) ಕಂಡುಹಿಡಿತವನ್ನು ಪಾಲುದಾರರ ನಿಖರ ಹೇಳಿಕೆಗಳಿಗೆ ಬಂಧಿಸುವsupporting_quotesಇರುತ್ತವೆ. -
InterviewSummary— ಒಂದು ಸೆಷನ್ನಲ್ಲಿ ಉತ್ಪಾದಿಸಲಾದ ಎಲ್ಲಾDiscoveryInsightಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸಿ, ಸೆಷನ್-ಮಟ್ಟದ ಫೀಲ್ಡ್ಗಳನ್ನು —key_themesಮತ್ತುrecommended_follow_ups— ಸೇರಿಸುವ Pydantic ಮಾಡೆಲ್, ಇದು ಯಾವ AI ಬಳಕೆಯ ಸಂದರ್ಭಗಳು ಸಂಪೂರ್ಣ ಡೇಟಾ ಸಿದ್ಧತೆ ಮೌಲ್ಯಮಾಪನಕ್ಕೆ ಅರ್ಹವೆಂದು ನಿರ್ಧರಿಸಲು ಸಲಹೆಗಾರರಿಗೆ ಆದ್ಯತೆಯ ನೋಟವನ್ನು ನೀಡುತ್ತದೆ. -
StateGraph— ನೋಡ್ ಫಂಕ್ಷನ್ಗಳನ್ನು ಮತ್ತು ಅವುಗಳ ನಡುವಿನ ದಿಕ್ಕಿನ ಅಂಚುಗಳನ್ನು (directed edges) ನೋಂದಾಯಿಸುವ LangGraph ರಚನೆ, ಇದರಲ್ಲಿturn_countmax_turnsತಲುಪಿದಾಗENDಗೆ ಹೋಗುವ ಷರತ್ತುಬದ್ಧ ಮಾರ್ಗವೂ ಸೇರಿದೆ; ಇದು ಸಡಿಲವಾಗಿ ಸಂಪರ್ಕಗೊಂಡ ಫಂಕ್ಷನ್ಗಳನ್ನು ಸುಸಂಬದ್ಧ, ಸ್ಥಿತಿಯುತ ಸಂದರ್ಶನ ಲೂಪ್ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.
ಪರಿಕಲ್ಪನೆಗಳು
ಸ್ಥಿತಿಯುತ ಸಂಭಾಷಣೆ ಒಂದು ಗ್ರಾಫ್ ಆಗಿ
ಡಿಸ್ಕವರಿ ಸಂದರ್ಶನಗಳು ರೇಖೀಯವಲ್ಲ: ಹಿಂದಿನ ವೈಫಲ್ಯದ ಬಗ್ಗೆ ಪಾಲುದಾರರ ಅನಿರೀಕ್ಷಿತ ಮಾತು, ಅದರ ನಂತರ ಬರುವ ಸ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಪ್ರಶ್ನೆಗೆ ಅವರ ಉತ್ತರಕ್ಕಿಂತ ಹೆಚ್ಚು ಮೌಲ್ಯಯುತವಾಗಿರಬಹುದು. ಸಂದರ್ಶನವನ್ನು LangGraph StateGraph ಆಗಿ ಪ್ರತಿನಿಧಿಸುವುದರಿಂದ ಆ ಕವಲೊಡೆಯುವ ತರ್ಕವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಎನ್ಕೋಡ್ ಮಾಡಬಹುದು — generate_question analyze_response ಗೆ ಮಾರ್ಗ ಕಲ್ಪಿಸುತ್ತದೆ, ಅದು extract_insights ಗೆ ಹೋಗುತ್ತದೆ ಅಥವಾ ಇನ್ನೊಂದು ತಿರುವಿಗಾಗಿ ಹಿಂತಿರುಗುತ್ತದೆ — ನಿಯಂತ್ರಣ ಹರಿವನ್ನು ಗೂಡುಕಟ್ಟಿದ ಷರತ್ತುಗಳಲ್ಲಿ ಹೂತುಹಾಕದೆ. ಗ್ರಾಫ್ನ ಅಂಚುಗಳು ಯಾವಾಗ ಮುಂದೆ ಸಾಗಬೇಕು ಮತ್ತು ಯಾವಾಗ ಆಳವಾಗಿ ಶೋಧಿಸಬೇಕು ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತವೆ, ಇದರಿಂದ ಸಂದರ್ಶನದ ತರ್ಕವು ಪರಿಶೀಲಿಸಬಹುದಾದ ಮತ್ತು ಪರೀಕ್ಷಿಸಬಹುದಾದಂತೆ ಆಗುತ್ತದೆ. ಏಜೆಂಟ್ ಸ್ಥಿರ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಅನುಸರಿಸುವುದಿಲ್ಲ; ಅದು ಗ್ರಾಫ್ ವ್ಯಾಖ್ಯಾನಿಸಿದ ಸಂಚಾರ ನೀತಿಯನ್ನು (traversal policy) ಅನುಸರಿಸುತ್ತದೆ, ಮತ್ತು ಇಲ್ಲಿಯವರೆಗೆ ಸಂಗ್ರಹವಾದ ಸ್ಟೇಟ್ ಪ್ರತಿ ಅಂಚು ಯಾವ ಮಾರ್ಗವನ್ನು ಹಿಡಿಯುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ (ಕೋಡ್ ವಾಕ್ಥ್ರೂ ನೋಡಿ).
Reducer ಪ್ಯಾಟರ್ನ್: ಲೆಕ್ಕಪತ್ರವಿಲ್ಲದ ಸಂಗ್ರಹಣೆ
LangGraph ನ ಡೀಫಾಲ್ಟ್ ವರ್ತನೆಯು ನೋಡ್ ಏನು ಹಿಂತಿರುಗಿಸುತ್ತದೆಯೋ ಅದರಿಂದ ಸ್ಟೇಟ್ ಫೀಲ್ಡ್ ಅನ್ನು ಬದಲಿಸುವುದು. ಒಂದೇ ತಿರುವಿನ ಸಂವಹನಕ್ಕೆ ಅದು ಸಾಕು, ಆದರೆ ಬಹು-ತಿರುವಿನ ಸಂದರ್ಶನಕ್ಕೆ questions_asked ಮತ್ತು responses ಪ್ರತಿ ಚಕ್ರದ ಉದ್ದಕ್ಕೂ ಬೆಳೆಯಬೇಕಾಗುತ್ತದೆ. Annotated[List[T], add] ಟಿಪ್ಪಣಿಯು ವಿಲೀನ ವರ್ತನೆಯನ್ನು ಬದಲಿಸುವಿಕೆಯಿಂದ ಸೇರಿಸುವಿಕೆಗೆ ಬದಲಾಯಿಸುತ್ತದೆ: ಪ್ರತಿ ನೋಡ್ ತಾನು ಉತ್ಪಾದಿಸಿದ ಹೊಸ ಐಟಂಗಳನ್ನು ಮಾತ್ರ ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಮತ್ತು LangGraph ಜೋಡಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಸೆಷನ್ನ ಕೊನೆಯಲ್ಲಿ extract_insights ಚಾಲನೆಯಾಗುವ ವೇಳೆಗೆ, ಸಂಪೂರ್ಣ ಸಂಭಾಷಣೆಯ ಇತಿಹಾಸವು ಈಗಾಗಲೇ ಸ್ಟೇಟ್ನಲ್ಲಿ ಜೋಡಣೆಗೊಂಡಿರುತ್ತದೆ — ಕೈಯಾರೆ ಲಿಸ್ಟ್ ನಿರ್ವಹಣೆ ಅಥವಾ ಗ್ಲೋಬಲ್ ಸಂಗ್ರಾಹಕ ಅಗತ್ಯವಿಲ್ಲ. DiscoveryInterviewAgent ಯಾವುದೇ ಸಂಖ್ಯೆಯ ತಿರುವುಗಳವರೆಗೆ ಸಂಗ್ರಹಣಾ ದೋಷಗಳಿಲ್ಲದೆ ಅಥವಾ ನೋಡ್ಗಳ ನಡುವೆ ಸ್ಟೇಟ್ ಜಾರುವಿಕೆಯಿಲ್ಲದೆ ಚಲಿಸಬಲ್ಲದು ಎಂಬುದಕ್ಕೆ ಇದೇ ಮೂಲ ಕಾರಣ.
ರಚನೆಯ ಎರಡು ಹಂತಗಳು: Insight vs. Summary
ಈ ಪಾಠವು ಬೇರೆ ಬೇರೆ ಬಳಕೆದಾರರಿಗೆ ಸೇವೆ ಸಲ್ಲಿಸುವ ಎರಡು Pydantic ಔಟ್ಪುಟ್ ಆಕಾರಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. DiscoveryInsight ಸೂಕ್ಷ್ಮ-ಮಟ್ಟದ್ದು: ಪ್ರತಿ ಆಬ್ಜೆಕ್ಟ್ ಒಂದು ಕಂಡುಹಿಡಿತ, ಅದರ ವರ್ಗ, confidence ಅಂಕ, ಮತ್ತು ಪಾಲುದಾರರು ವಾಸ್ತವವಾಗಿ ಏನು ಹೇಳಿದರು ಎಂಬುದಕ್ಕೆ ಅದನ್ನು ಹಿಂದಕ್ಕೆ ಪತ್ತೆಹಚ್ಚುವ supporting_quotes ಅನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ. ಕಂಡುಹಿಡಿತಗಳನ್ನು ಈ ಸೂಕ್ಷ್ಮತೆಯಲ್ಲಿ ಇಡುವುದರಿಂದ ಅವು ಯಂತ್ರ-ಓದಬಲ್ಲವಾಗುತ್ತವೆ — ಮುಂದಿನ ಹಂತದ ಅಂಕ ನೀಡುವ ಪ್ರಕ್ರಿಯೆಯು ಮುಕ್ತ ಪಠ್ಯವನ್ನು ವಿಶ್ಲೇಷಿಸದೆ category ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು, confidence ಮೂಲಕ ಶ್ರೇಣೀಕರಿಸಬಹುದು ಅಥವಾ related_use_cases ಮೂಲಕ ಗುಂಪುಗೂಡಿಸಬಹುದು.
InterviewSummary ಸೆಷನ್ ನೋಟ: ಇದು ಒಂದು ಸಂದರ್ಶನದ ಎಲ್ಲಾ ಒಳನೋಟಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ, ಯಾವ ಬಳಕೆಯ ಸಂದರ್ಭಗಳು ಸಂಪೂರ್ಣ ಡೇಟಾ ಸಿದ್ಧತೆ ಮೌಲ್ಯಮಾಪನಕ್ಕೆ ಅರ್ಹವೆಂದು ನಿರ್ಧರಿಸಬೇಕಾದ ಸಲಹೆಗಾರರಿಗೆ key_themes ಮತ್ತು recommended_follow_ups ಅನ್ನು ಮುಂದಿಡುತ್ತದೆ. ಎರಡು-ಹಂತದ ವಿನ್ಯಾಸವೆಂದರೆ ಒಂದೇ ಕಚ್ಚಾ ಸಂದರ್ಶನ ಔಟ್ಪುಟ್ ಸ್ವಯಂಚಾಲಿತ ಅಂಕ ನೀಡುವ ಪೈಪ್ಲೈನ್ ಮತ್ತು ಮಾನವ ನಿರ್ಧಾರ ಕೈಗೊಳ್ಳುವ ಪದರ ಎರಡಕ್ಕೂ ಆಹಾರವಾಗುತ್ತದೆ — ಡೇಟಾವನ್ನು ನಕಲು ಮಾಡದೆ ಅಥವಾ supporting_quotes ಒದಗಿಸುವ ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ (ಕೋಡ್ ವಾಕ್ಥ್ರೂ ನೋಡಿ).
ಕೋಡ್ ವಾಕ್ಥ್ರೂ
DiscoveryInterviewAgent ಹಾದುಹೋಗುವ ನಾಲ್ಕು ಸ್ಥಿತಿಗಳನ್ನು — ಪ್ರಶ್ನೆ ಉತ್ಪಾದನೆ, ಪ್ರತಿಕ್ರಿಯೆ ಸೆರೆಹಿಡಿಯುವಿಕೆ, ಅನುಸರಣಾ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಒಳನೋಟ ಹೊರತೆಗೆಯುವಿಕೆ — ನೀವು ಈಗ ಅರ್ಥಮಾಡಿಕೊಂಡಿರುವುದರಿಂದ, ಮುಂದಿನ ಹೆಜ್ಜೆ ಆ ಸ್ಥಿತಿಗಳನ್ನು LangGraph ಗ್ರಾಫ್ಗೆ ಜೋಡಿಸುವುದು ಮತ್ತು ಏಜೆಂಟ್ನ ಔಟ್ಪುಟ್ಗೆ ರಚನೆ ನೀಡುವ Pydantic ಮಾಡೆಲ್ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು.
ಅಡಿಪಾಯವೆಂದರೆ InterviewState, ಇದು TypedDict ಆಗಿದ್ದು, ಇದರ ಲಿಸ್ಟ್ ಫೀಲ್ಡ್ಗಳು add reducer ನೊಂದಿಗೆ Annotated ಅನ್ನು ಬಳಸುತ್ತವೆ. ಇದು ಪ್ರತಿ ನೋಡ್ನ return ನಲ್ಲಿ questions_asked ಮತ್ತು responses ಅನ್ನು ಬದಲಿಸುವ ಬದಲು ಹೊಸ ಐಟಂಗಳನ್ನು ಅವುಗಳಿಗೆ ಸೇರಿಸಲು LangGraph ಗೆ ಹೇಳುತ್ತದೆ; ಇದರಿಂದಲೇ ಏಜೆಂಟ್ ಕೈಯಾರೆ ವಿಲೀನ ತರ್ಕವಿಲ್ಲದೆ ತಿರುವುಗಳ ಉದ್ದಕ್ಕೂ ಸಂಪೂರ್ಣ ಸಂಭಾಷಣೆಯನ್ನು ಸಂಗ್ರಹಿಸಬಲ್ಲದು.
Code snippetpython
1from langgraph.graph import StateGraph, END 2from typing import TypedDict, List, Annotated 3from operator import add 4 5class InterviewState(TypedDict): 6 """State maintained across interview turns.""" 7 topic: str 8 questions_asked: Annotated[List[str], add] 9 responses: Annotated[List[dict], add] 10 follow_ups_pending: List[str] 11 insights: List[dict] 12 turn_count: int 13 max_turns: int 14 15def generate_question(state: InterviewState) -> dict: 16 """Generate the next contextual question.""" 17 ... 18 19def analyze_response(state: InterviewState) -> dict: 20 """Analyze response and determine follow-up needs.""" 21 ... 22 23def extract_insights(state: InterviewState) -> dict: 24 """Extract structured insights from conversation history.""" 25 ... 26 27graph = StateGraph(InterviewState) 28graph.add_node("generate_question", generate_question) 29graph.add_node("analyze_response", analyze_response) 30graph.add_node("extract_insights", extract_insights)
ಪ್ರತಿ ನೋಡ್ ಫಂಕ್ಷನ್ ಸಂಪೂರ್ಣ ಪ್ರಸ್ತುತ ಸ್ಟೇಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿ ಆಂಶಿಕ ಡಿಕ್ಷನರಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ; ಮುಂದಿನ ನೋಡ್ ಚಲಿಸುವ ಮೊದಲು LangGraph return ಮೌಲ್ಯವನ್ನು ಸ್ಟೇಟ್ನಲ್ಲಿ ಮತ್ತೆ ವಿಲೀನಗೊಳಿಸುತ್ತದೆ. generate_question → analyze_response → extract_insights ಚಕ್ರವು turn_count max_turns ತಲುಪುವವರೆಗೆ ಮುಂದುವರಿಯುತ್ತದೆ, ಆ ಹಂತದಲ್ಲಿ ಗ್ರಾಫ್ END ಗೆ ಮಾರ್ಗ ಕಲ್ಪಿಸುತ್ತದೆ. add ಟಿಪ್ಪಣಿ ಹೊಂದಿದ ಫೀಲ್ಡ್ಗಳು ಪ್ರತಿ ಚಕ್ರದ ಉದ್ದಕ್ಕೂ ಸಂಗ್ರಹಗೊಳ್ಳುತ್ತವೆ, ಹೀಗಾಗಿ extract_insights ಚಾಲನೆಯಾಗುವ ವೇಳೆಗೆ ಸಂಪೂರ್ಣ ಸಂಭಾಷಣೆಯ ಇತಿಹಾಸವು ಯಾವುದೇ ಕೈಯಾರೆ ಲೆಕ್ಕಪತ್ರವಿಲ್ಲದೆ questions_asked ಮತ್ತು responses ನಲ್ಲಿ ಲಭ್ಯವಿರುತ್ತದೆ.
ಗ್ರಾಫ್ ಸಾಕಷ್ಟು ತಿರುವುಗಳನ್ನು ಸಂಗ್ರಹಿಸಿದ ನಂತರ, extract_insights ರಚನಾತ್ಮಕ Pydantic ಮಾಡೆಲ್ಗಳನ್ನು ತುಂಬುತ್ತದೆ. DiscoveryInsight ವೈಯಕ್ತಿಕ ಕಂಡುಹಿಡಿತಗಳನ್ನು — ಸಮಸ್ಯೆಗಳು, ಅವಕಾಶಗಳು, ನಿರ್ಬಂಧಗಳು ಮತ್ತು ಅವಶ್ಯಕತೆಗಳು — confidence ಅಂಕ ಮತ್ತು ಪಾಲುದಾರರು ವಾಸ್ತವವಾಗಿ ಏನು ಹೇಳಿದರು ಎಂಬುದಕ್ಕೆ ಪತ್ತೆಹಚ್ಚಲು supporting_quotes ಜೊತೆಗೆ ಸೆರೆಹಿಡಿಯುತ್ತದೆ. InterviewSummary ಒಂದು ಸೆಷನ್ನ ಎಲ್ಲಾ ಒಳನೋಟಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸಿ, ಮುಂದಿನ ಹಂತದ ಬಳಕೆಯ ಸಂದರ್ಭ ಅಂಕ ನೀಡುವ ಹೆಜ್ಜೆಗೆ ಆಹಾರವಾಗುವ recommended_follow_ups ಮತ್ತು key_themes ಅನ್ನು ಮುಂದಿಡುತ್ತದೆ.
Code snippetpython
1from pydantic import BaseModel 2from typing import List 3 4class DiscoveryInsight(BaseModel): 5 """Structured insight from interview analysis.""" 6 category: str # pain_point, opportunity, constraint, requirement 7 description: str 8 stakeholder: str 9 confidence: float 10 supporting_quotes: List[str] 11 related_use_cases: List[str] 12 13class InterviewSummary(BaseModel): 14 """Complete summary of an interview session.""" 15 session_id: str 16 stakeholder_role: str 17 duration_minutes: int 18 insights: List[DiscoveryInsight] 19 recommended_follow_ups: List[str] 20 key_themes: List[str]
DiscoveryInsight ಮತ್ತು InterviewSummary ನಡುವಿನ ಪ್ರತ್ಯೇಕತೆ ಉದ್ದೇಶಪೂರ್ವಕ: ವೈಯಕ್ತಿಕ ಒಳನೋಟಗಳು ಸ್ವಯಂಚಾಲಿತ ಅಂಕ ನೀಡಲು ಸಾಕಷ್ಟು ಸೂಕ್ಷ್ಮವಾಗಿ ಉಳಿಯುತ್ತವೆ, ಅದೇ ವೇಳೆ ಸಾರಾಂಶವು ಯಾವ AI ಬಳಕೆಯ ಸಂದರ್ಭಗಳು ಸಂಪೂರ್ಣ ಡೇಟಾ ಸಿದ್ಧತೆ ಮೌಲ್ಯಮಾಪನಕ್ಕೆ ಅರ್ಹವೆಂದು ಆದ್ಯತೆ ನೀಡಲು ಸಲಹೆಗಾರರಿಗೆ ಅಗತ್ಯವಿರುವ ಸೆಷನ್-ಮಟ್ಟದ ನೋಟವನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಗ್ರಾಫ್ ದೋಷವಿಲ್ಲದೆ ಕಾರ್ಯಗತವಾಗಿ, extract_insights ಖಾಲಿಯಲ್ಲದ insights ಲಿಸ್ಟ್ ಹೊಂದಿದ InterviewSummary ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ, ಅದರ ಪ್ರತಿ ನಮೂದಿನಲ್ಲಿ ತುಂಬಿದ confidence ಅಂಕ ಮತ್ತು supporting_quotes ನಲ್ಲಿ ಕನಿಷ್ಠ ಒಂದು ನಮೂದು ಇದ್ದಾಗ ಅದು ಕೆಲಸ ಮಾಡುತ್ತಿದೆ ಎಂದು ನಿಮಗೆ ತಿಳಿಯುತ್ತದೆ.
ಶಿಸ್ತು ಅನ್ವಯ
ಮಾಡಬೇಕಾದವು ಮತ್ತು ಮಾಡಬಾರದವು
ಮೇಲಿನ ವಿಷಯವನ್ನು ಹಾದುಹೋದ ನಂತರ, ಕೆಳಗಿನ ಮಾಡಬೇಕಾದವು ಮತ್ತು ಮಾಡಬಾರದವು ಅದನ್ನು ಅಭ್ಯಾಸಕ್ಕೆ ಸಾರರೂಪದಲ್ಲಿ ತರುತ್ತವೆ.
ಮಾಡಬೇಕಾದವು
InterviewStateನಲ್ಲಿquestions_askedಮತ್ತುresponsesಗೆAnnotated[List[...], add]ಟಿಪ್ಪಣಿ ಹಾಕಿ —addreducer ಪ್ರತಿ ನೋಡ್ನreturnನಲ್ಲಿ ಲಿಸ್ಟ್ ಅನ್ನು ಬದಲಿಸುವ ಬದಲು ಪ್ರತಿ ಚಕ್ರದ ಉದ್ದಕ್ಕೂ ಐಟಂಗಳನ್ನು ಸೇರಿಸಲು LangGraph ಗೆ ಹೇಳುತ್ತದೆ; ಇದರಿಂದಲೇextract_insightsಗೆ ಯಾವುದೇ ಕೈಯಾರೆ ವಿಲೀನ ತರ್ಕವಿಲ್ಲದೆ ಸಂಪೂರ್ಣ ಸಂಭಾಷಣೆಯ ಇತಿಹಾಸದ ಪ್ರವೇಶ ಸಿಗುತ್ತದೆ.- ಪ್ರತಿ
DiscoveryInsightನಲ್ಲಿsupporting_quotesಅನ್ನು ತುಂಬಿ — ಪ್ರತಿ ಕಂಡುಹಿಡಿತವನ್ನು ಪಾಲುದಾರರ ಯಥಾವತ್ ಭಾಷೆಗೆ ಬಂಧಿಸುವುದರಿಂದ ಒಳನೋಟಗಳು ವಾಸ್ತವವಾಗಿ ಹೇಳಿದ್ದಕ್ಕೆ ಪತ್ತೆಹಚ್ಚಬಲ್ಲವಾಗಿ ಉಳಿಯುತ್ತವೆ; ಇದರಿಂದಲೇ ಮುಂದಿನ ಹಂತದ ಬಳಕೆಯ ಸಂದರ್ಭ ಅಂಕ ನೀಡುವ ಹೆಜ್ಜೆಯು confidence ಅಂಕಗಳನ್ನು ಕಪ್ಪು-ಪೆಟ್ಟಿಗೆ ಔಟ್ಪುಟ್ಗಳಂತೆ ಪರಿಗಣಿಸುವ ಬದಲು ಅವುಗಳನ್ನು ಮೌಲ್ಯೀಕರಿಸಬಲ್ಲದು. - ನಿಮ್ಮ ಷರತ್ತುಬದ್ಧ ಅಂಚಿನಲ್ಲಿ
turn_countಅನ್ನುmax_turnsನೊಂದಿಗೆ ಹೋಲಿಸಿENDಗೆ ಮಾರ್ಗ ಕಲ್ಪಿಸಿ — ಸ್ಪಷ್ಟ ಮುಕ್ತಾಯ ನಿಯಂತ್ರಣವೊಂದೇ generate → analyze → extract ಚಕ್ರವು ಅನಿರ್ದಿಷ್ಟವಾಗಿ ಚಲಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ, ಮತ್ತು ಖಾಲಿಯಲ್ಲದinsightsಲಿಸ್ಟ್ ಉತ್ಪಾದಿಸಲು ಸಾಕಷ್ಟು ಸಂಭಾಷಣೆ ಸಂಗ್ರಹವಾದ ನಂತರವೇextract_insightsಚಾಲನೆಯಾಗುವುದನ್ನು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಮಾಡಬಾರದವು
addreducer ಇಲ್ಲದೆquestions_askedಅಥವಾresponsesಅನ್ನು ಸಾದಾList[str]ಅಥವಾList[dict]ಆಗಿ ಘೋಷಿಸಬೇಡಿ —Annotated[List[...], add]ಇಲ್ಲದಿದ್ದರೆ, ಪ್ರತಿ ನೋಡ್ನreturnಡಿಕ್ಟ್ ಫೀಲ್ಡ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಮೇಲ್ಬರಹ ಮಾಡುತ್ತದೆ, ಹಿಂದಿನ ತಿರುವುಗಳನ್ನು ಮೌನವಾಗಿ ತ್ಯಜಿಸುತ್ತದೆ; ಹೀಗಾಗಿextract_insightsಸಂಪೂರ್ಣ ಸೆಷನ್ನ ಬದಲು ಅತ್ಯಂತ ಇತ್ತೀಚಿನ ವಿನಿಮಯವನ್ನು ಮಾತ್ರ ನೋಡುತ್ತದೆ.DiscoveryInsightಮತ್ತುInterviewSummaryಅನ್ನು ಒಂದೇ ಮಾಡೆಲ್ಗೆ ಕುಗ್ಗಿಸಬೇಡಿ — ಅವುಗಳನ್ನು ಚಪ್ಪಟೆಗೊಳಿಸುವುದರಿಂದ ಸ್ವಯಂಚಾಲಿತ ಅಂಕ ನೀಡುವಿಕೆ ಅವಲಂಬಿಸಿರುವ ಪ್ರತಿ-ಒಳನೋಟದconfidenceಅಂಕ ಮತ್ತುsupporting_quotesಸೂಕ್ಷ್ಮತೆ ಕಳೆದುಹೋಗುತ್ತದೆ;InterviewSummaryನಲ್ಲಿನ ಸೆಷನ್-ಮಟ್ಟದkey_themesಮತ್ತುrecommended_follow_upsಗೆ ಒಟ್ಟುಗೂಡಿಸಲು ವೈಯಕ್ತಿಕ ಒಳನೋಟ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಬೇಕು, ಅದರ ವಿರುದ್ಧ ದಿಕ್ಕಿನಲ್ಲಿ ಅಲ್ಲ.- ನೋಡ್ ಫಂಕ್ಷನ್ನಿಂದ ಸಂಪೂರ್ಣ ಸಂಗ್ರಹಗೊಂಡ ಸ್ಟೇಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಬೇಡಿ — ನೀವು ಬದಲಿಸುತ್ತಿರುವ ಫೀಲ್ಡ್ಗಳನ್ನು ಮಾತ್ರ
returnಮಾಡಿ — ಪ್ರತಿ ನೋಡ್ ಸಂಪೂರ್ಣInterviewStateಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಆದರೆ ಆಂಶಿಕ ಡಿಕ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು; ಸಂಪೂರ್ಣ ಸ್ಟೇಟ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿದರೆ LangGraph ಬದಲಾಗದadd-ಟಿಪ್ಪಣಿ ಹೊಂದಿದ ಫೀಲ್ಡ್ಗಳನ್ನು ಸೇರಿಸಬೇಕಾದ ಹೊಸ ಐಟಂಗಳೆಂದು ಅರ್ಥೈಸಿ, ಪ್ರತಿ ಚಕ್ರದಲ್ಲಿ ಹಿಂದಿನ ಪ್ರತಿ ಪ್ರಶ್ನೆ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನಕಲು ಮಾಡುತ್ತದೆ.
3 hands-on labs come with this lesson — real code, in a cloud IDE. Create a free account to run them. No card.
Free account · no card · straight to the labs
Or get the full path — from
Listen to this lesson
Audio overviews of this lesson's labs and its chapter, from GenBodha Bytes.
More free lessons in AI Solution Delivery
- Ch 1Score AI use cases with weighted multi-criteria evaluation
- Ch 1Profile customer datasets for quality and PII exposure
- Ch 1Run LLM-driven discovery interviews with LangGraph stateYou are here
- Ch 1Benchmark provider feasibility across OpenAI, Gemini, Anthropic
- Ch 1Generate executive discovery reports from structured assessment data
- Ch 2Classify project risks with DSPy-optimized prompts
- Ch 3Generate full SOW proposals with LangGraph workflows