Free lesson · Forward Deployed GenAI Engineering

LangGraph state மூலம் LLM-இயக்கும் discovery interviews நடத்துங்கள்

சூழலுக்கு ஏற்ற follow-up கேள்விகளை உருவாக்கி, Pydantic வழியாக கட்டமைக்கப்பட்ட insights-ஐ பிரித்தெடுக்கும் ஒரு DiscoveryInterviewAgent-ஐ LangGraph state machine ஆக நீங்கள் உருவாக்குகிறீர்கள்.

Course: AI Solution Delivery · Chapter 1 · AI Use Case Discovery & Data Readiness Assessment

Free to read — no subscription required.

அறிமுகம்

AI பயன்பாட்டு வழக்குகளை வெளிக்கொணர பொறியாளர்கள் பெரும்பாலும் பல வாரங்கள் ஒருவருக்கு-ஒருவர் கண்டறிதல் நேர்காணல்களை நடத்துகிறார்கள், ஆனால் கட்டமைப்பில்லாத குறிப்புகள் முக்கியமான வலிப்புள்ளிகளை புதைத்துவிடுவதையோ அல்லது முற்றிலும் தவறவிடுவதையோ கண்டறிகிறார்கள். ஒரு பங்குதாரர் கடந்தகால தோல்வி அல்லது சோதிக்கப்படாத அனுமானம் பற்றி சுட்டிக்காட்டும்போது ஆழமாக ஆராய்வதையும் கைமுறை நெறிப்படுத்தல் கடினமாக்குகிறது. இந்த பாடம் LangGraph ஐப் பயன்படுத்தி ஒரு DiscoveryInterviewAgent ஐ எவ்வாறு உருவாக்குவது என்பதைக் கற்பிக்கிறது — சூழல்சார் பின்தொடர் கேள்விகளை உருவாக்கும், கட்டமைக்கப்பட்ட மெட்டாடேட்டாவுடன் பதில்களைப் பிடிக்கும், மற்றும் ஒவ்வொரு வாடிக்கையாளர் உரையாடலிலிருந்தும் AI வாய்ப்புகள் மற்றும் தரவு தயார்நிலை கட்டுப்பாடுகள் பற்றிய மதிப்பெண்ணிடப்பட்ட நுண்ணறிவுகளைப் பிரித்தெடுக்கும் ஒரு நிலையுடைய (stateful), தகவமைப்பு நேர்காணல் அமைப்பு.

முக்கிய சொற்கள்

  • InterviewState — நேர்காணல் சுற்றுகள் முழுவதும் அனைத்து மாறக்கூடிய தரவையும் வைத்திருக்கும் TypedDict; இதில் questions_asked, responses, follow_ups_pending, insights, மற்றும் turn_count அடங்கும். LangGraph வரைபடத்தில் உள்ள ஒவ்வொரு node-ம் இந்த ஒற்றை பகிரப்பட்ட பொருளிலிருந்து படித்து மீண்டும் அதில் எழுதுகிறது, இதனால் ஒவ்வொரு node-க்கும் முழு திரட்டப்பட்ட உரையாடல் வரலாற்றிற்கான அணுகல் கிடைக்கிறது.

  • add reducer — InterviewState இல் உள்ள பட்டியல் புலங்களுக்கு Annotated[List[T], add] என பயன்படுத்தப்படும் ஒரு குறிப்பு (annotation); இது ஒவ்வொரு node return இலும் பட்டியலை மாற்றுவதற்குப் பதிலாக புதிய உருப்படிகளைச் சேர்க்க LangGraph-க்கு அறிவுறுத்துகிறது. இதுவே questions_asked மற்றும் responses எந்த கைமுறை பட்டியல்-இணைப்பு தர்க்கமும் இல்லாமல் சுற்றுகள் முழுவதும் வளர அனுமதிக்கிறது.

  • Node செயல்பாடு — add_node வழியாக ஒரு StateGraph உடன் பதிவு செய்யப்பட்ட Python செயல்பாடு; இது முழுமையான தற்போதைய InterviewState ஐப் பெற்று, அது மாற்றும் புலங்களை மட்டுமே கொண்ட ஒரு பகுதி dictionary ஐத் திருப்பித் தருகிறது. வரைபடத்தில் அடுத்த node-க்கு வழிநடத்துவதற்கு முன் LangGraph ஒவ்வொரு node இன் return ஐயும் state உடன் இணைக்கிறது.

  • DiscoveryInsight — நேர்காணலிலிருந்து ஒரு கட்டமைக்கப்பட்ட கண்டுபிடிப்பைக் குறிக்கும் Pydantic மாடல்; இதில் ஒரு category (pain_point, opportunity, constraint, அல்லது requirement), ஒரு confidence float, மற்றும் கீழ்நிலை தடமறிதலுக்காக (traceability) கண்டுபிடிப்பை பங்குதாரரின் சரியான கூற்றுகளுடன் இணைக்கும் supporting_quotes உள்ளன.

  • InterviewSummary — ஒரு அமர்வில் உருவாக்கப்பட்ட அனைத்து DiscoveryInsight பொருள்களையும் ஒருங்கிணைத்து, அமர்வு-நிலை புலங்களைச் சேர்க்கும் Pydantic மாடல் — key_themes மற்றும் recommended_follow_ups — எந்த AI பயன்பாட்டு வழக்குகள் முழு தரவு தயார்நிலை மதிப்பீட்டிற்குத் தகுதியானவை என்பதைத் தீர்மானிக்க ஆலோசகர்களுக்கு முன்னுரிமைப்படுத்தப்பட்ட பார்வையை வழங்குகிறது.

  • StateGraph — node செயல்பாடுகளையும் அவற்றுக்கிடையேயான திசைசார் விளிம்புகளையும் (directed edges) பதிவு செய்யும் LangGraph கட்டுமானம்; இதில் turn_count max_turns ஐ அடைந்தவுடன் END க்கு செல்லும் நிபந்தனை வழி அடங்கும், இது தளர்வாக இணைக்கப்பட்ட செயல்பாடுகளை ஒரு ஒருங்கிணைந்த, நிலையுடைய நேர்காணல் சுழற்சியாக மாற்றுகிறது.

கருத்துகள்

Loading diagram...

நிலையுடைய உரையாடல் ஒரு வரைபடமாக

கண்டறிதல் நேர்காணல்கள் நேரியல் அல்லாதவை: ஒரு பங்குதாரர் கடந்தகால தோல்வி பற்றி தற்செயலாகக் கூறும் கருத்து, அதைத் தொடர்ந்து வரும் திட்டமிடப்பட்ட கேள்விக்கான அவர்களின் பதிலை விட அதிக மதிப்புடையதாக இருக்கலாம். நேர்காணலை ஒரு LangGraph StateGraph ஆகக் குறிப்பிடுவது அந்த கிளைப்பிரிவு தர்க்கத்தை வெளிப்படையாக குறியாக்க உங்களை அனுமதிக்கிறது — generate_question analyze_response க்கு வழிநடத்துகிறது, அது extract_insights க்கு வழிநடத்துகிறது அல்லது மற்றொரு சுற்றுக்காக மீண்டும் திரும்புகிறது — உள்ளடுக்கிய நிபந்தனைகளில் கட்டுப்பாட்டு ஓட்டத்தைப் புதைக்காமல். வரைபடத்தின் விளிம்புகள் எப்போது முன்னேற வேண்டும் மற்றும் எப்போது ஆழமாக ஆராய வேண்டும் என்பதை விவரிக்கின்றன, இது நேர்காணலின் தர்க்கத்தை ஆய்வு செய்யக்கூடியதாகவும் சோதிக்கக்கூடியதாகவும் ஆக்குகிறது. முகவர் (agent) ஒரு நிலையான ஸ்கிரிப்டைப் பின்பற்றுவதில்லை; அது வரைபடத்தால் வரையறுக்கப்பட்ட ஒரு கடப்புக் கொள்கையைப் (traversal policy) பின்பற்றுகிறது, மற்றும் இதுவரை திரட்டப்பட்ட state ஒவ்வொரு விளிம்பும் எந்தப் பாதையை எடுக்கும் என்பதைத் தீர்மானிக்கிறது (குறியீடு விளக்கம் ஐப் பார்க்கவும்).

Reducer வடிவம்: கணக்கு வைத்தல் இல்லாமல் திரட்டல்

LangGraph இன் இயல்புநிலை நடத்தை என்பது ஒரு node எதைத் திருப்பித் தருகிறதோ அதனால் ஒரு state புலத்தை மாற்றுவதாகும். ஒற்றை-சுற்று தொடர்புக்கு அது போதுமானது, ஆனால் பல-சுற்று நேர்காணலுக்கு questions_asked மற்றும் responses ஒவ்வொரு சுழற்சியிலும் வளர வேண்டும். Annotated[List[T], add] குறிப்பு இணைப்பு நடத்தையை மாற்றுதலிலிருந்து சேர்த்தலுக்கு மாற்றுகிறது: ஒவ்வொரு node-ம் அது உருவாக்கிய புதிய உருப்படிகளை மட்டுமே திருப்பித் தருகிறது, மற்றும் LangGraph இணைப்பைக் கையாளுகிறது. ஒரு அமர்வின் முடிவில் extract_insights இயங்கும் நேரத்தில், முழுமையான உரையாடல் வரலாறு ஏற்கனவே state இல் ஒருங்கிணைக்கப்பட்டிருக்கும் — கைமுறை பட்டியல் மேலாண்மை அல்லது உலகளாவிய திரட்டி (global accumulator) தேவையில்லை. node-களுக்கு இடையே திரட்டல் பிழைகள் அல்லது state விலகல் இல்லாமல் DiscoveryInterviewAgent எத்தனை சுற்றுகள் என்றாலும் இயங்க முடிவதற்கு இதுவே முக்கிய காரணம்.

கட்டமைப்பின் இரண்டு நிலைகள்: Insight vs. Summary

வெவ்வேறு நுகர்வோருக்குச் சேவை செய்யும் இரண்டு Pydantic வெளியீட்டு வடிவங்களை இந்தப் பாடம் வேறுபடுத்துகிறது. DiscoveryInsight நுணுக்கமானது: ஒவ்வொரு பொருளும் ஒரு கண்டுபிடிப்பு, அதன் category, ஒரு confidence மதிப்பெண், மற்றும் பங்குதாரர் உண்மையில் கூறியதற்கு அதைத் தடமறியும் supporting_quotes ஐப் பிடிக்கிறது. கண்டுபிடிப்புகளை இந்த நுணுக்கத்தில் வைத்திருப்பது அவற்றை இயந்திரம்-படிக்கக்கூடியதாக ஆக்குகிறது — ஒரு கீழ்நிலை மதிப்பெண்ணிடும் படி சுதந்திர உரையைப் பாகுபடுத்தாமல் category மூலம் வடிகட்டலாம், confidence மூலம் தரவரிசைப்படுத்தலாம், அல்லது related_use_cases மூலம் கொத்தாக்கலாம்.

InterviewSummary என்பது அமர்வுப் பார்வை: இது ஒரு நேர்காணலிலிருந்து அனைத்து நுண்ணறிவுகளையும் சேகரித்து, எந்தப் பயன்பாட்டு வழக்குகள் முழு தரவு தயார்நிலை மதிப்பீட்டிற்குத் தகுதியானவை என்பதைத் தீர்மானிக்க வேண்டிய ஆலோசகருக்காக key_themes மற்றும் recommended_follow_ups ஐ வெளிக்கொணர்கிறது. இரண்டு-நிலை வடிவமைப்பு என்பது அதே மூல நேர்காணல் வெளியீடு ஒரு தானியங்கி மதிப்பெண்ணிடும் pipeline மற்றும் ஒரு மனித முடிவெடுக்கும் அடுக்கு இரண்டிற்கும் உள்ளீடாகிறது — தரவை நகலெடுக்காமல் அல்லது supporting_quotes வழங்கும் தடமறிதலை இழக்காமல் (குறியீடு விளக்கம் ஐப் பார்க்கவும்).

குறியீடு விளக்கம்

DiscoveryInterviewAgent கடந்து செல்லும் நான்கு நிலைகளை — கேள்வி உருவாக்கம், பதில் பிடிப்பு, பின்தொடர் பகுப்பாய்வு, மற்றும் நுண்ணறிவு பிரித்தெடுத்தல் — இப்போது நீங்கள் புரிந்துகொண்டுள்ளதால், அடுத்த படி அந்த நிலைகளை ஒரு LangGraph வரைபடத்தில் இணைத்து, முகவரின் வெளியீட்டைக் கட்டமைக்கும் Pydantic மாடல்களை வரையறுப்பதாகும்.

அடித்தளம் InterviewState ஆகும், இது ஒரு TypedDict; இதன் பட்டியல் புலங்கள் add reducer உடன் Annotated ஐப் பயன்படுத்துகின்றன. இது ஒவ்வொரு node 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)

ஒவ்வொரு node செயல்பாடும் முழு தற்போதைய state ஐப் பெற்று ஒரு பகுதி dictionary ஐத் திருப்பித் தருகிறது; அடுத்த node இயங்குவதற்கு முன் LangGraph return மதிப்பை மீண்டும் state உடன் இணைக்கிறது. 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 இடையேயான பிரிப்பு வேண்டுமென்றே செய்யப்பட்டது: தனிப்பட்ட நுண்ணறிவுகள் தானியங்கி மதிப்பெண்ணிடுதலுக்குப் போதுமான நுணுக்கத்துடன் இருக்கின்றன, அதே நேரத்தில் summary எந்த AI பயன்பாட்டு வழக்குகள் முழு தரவு தயார்நிலை மதிப்பீட்டிற்குத் தகுதியானவை என்பதை முன்னுரிமைப்படுத்த ஒரு ஆலோசகருக்குத் தேவையான அமர்வு-நிலை பார்வையை வழங்குகிறது.

வரைபடம் பிழையின்றி இயங்கி, extract_insights ஒரு InterviewSummary ஐத் திருப்பித் தரும்போது — அதன் insights பட்டியல் வெறுமையாக இல்லாமல், ஒவ்வொரு உள்ளீடும் நிரப்பப்பட்ட confidence மதிப்பெண்ணையும் supporting_quotes இல் குறைந்தது ஒரு உள்ளீட்டையும் கொண்டிருக்கும்போது — அது வேலை செய்கிறது என்பதை நீங்கள் அறிவீர்கள்.

துறை பயன்பாடு

செய்ய வேண்டியவை மற்றும் செய்யக்கூடாதவை

மேலே உள்ள உள்ளடக்கத்தைக் கடந்து வந்த பிறகு, பின்வரும் செய்ய வேண்டியவை மற்றும் செய்யக்கூடாதவை அதை நடைமுறையாகச் சுருக்குகின்றன.

செய்ய வேண்டியவை

  1. InterviewState இல் questions_asked மற்றும் responses ஐ Annotated[List[...], add] உடன் குறிக்கவும் — add reducer ஒவ்வொரு node return இலும் பட்டியலை மாற்றுவதற்குப் பதிலாக ஒவ்வொரு சுழற்சியிலும் உருப்படிகளைச் சேர்க்க LangGraph-க்குச் சொல்கிறது, இதுவே எந்த கைமுறை இணைப்பு தர்க்கமும் இல்லாமல் extract_insights க்கு முழு உரையாடல் வரலாற்றிற்கான அணுகலை வழங்குகிறது.
  2. ஒவ்வொரு DiscoveryInsight இலும் supporting_quotes ஐ நிரப்பவும் — ஒவ்வொரு கண்டுபிடிப்பையும் பங்குதாரரின் சொல்லுக்குச் சொல் மொழியுடன் இணைப்பது நுண்ணறிவுகளை உண்மையில் கூறப்பட்டதற்குத் தடமறியக்கூடியதாக வைக்கிறது, இதுவே கீழ்நிலை பயன்பாட்டு வழக்கு மதிப்பெண்ணிடும் படி confidence மதிப்பெண்களை கருப்பு-பெட்டி வெளியீடுகளாகக் கருதுவதற்குப் பதிலாக சரிபார்க்க அனுமதிக்கிறது.
  3. உங்கள் நிபந்தனை விளிம்பில் turn_count ஐ max_turns உடன் ஒப்பிட்டு END க்கு வழிநடத்தவும் — வெளிப்படையான முடிவுக் கட்டுப்பாடு மட்டுமே generate → analyze → extract சுழற்சி முடிவில்லாமல் இயங்குவதைத் தடுக்கிறது, மேலும் வெறுமையற்ற insights பட்டியலை உருவாக்கப் போதுமான உரையாடல் திரட்டப்பட்ட பிறகு மட்டுமே extract_insights இயங்குவதை இது உறுதி செய்கிறது.

செய்யக்கூடாதவை

  1. questions_asked அல்லது responses ஐ add reducer இல்லாமல் வெற்று List[str] அல்லது List[dict] ஆக அறிவிக்காதீர்கள் — Annotated[List[...], add] இல்லாமல், ஒவ்வொரு node இன் return dict புலத்தை முழுவதுமாக மேலெழுதுகிறது, முந்தைய சுற்றுகளை அமைதியாக நிராகரித்து, extract_insights முழு அமர்வுக்குப் பதிலாக மிகச் சமீபத்திய பரிமாற்றத்தை மட்டுமே பார்க்கும்படி செய்கிறது.
  2. DiscoveryInsight மற்றும் InterviewSummary ஐ ஒற்றை மாடலாகச் சுருக்காதீர்கள் — அவற்றைத் தட்டையாக்குவது தானியங்கி மதிப்பெண்ணிடுதல் சார்ந்திருக்கும் ஒவ்வொரு-நுண்ணறிவு confidence மதிப்பெண் மற்றும் supporting_quotes நுணுக்கத்தை இழக்கிறது; InterviewSummary இல் உள்ள அமர்வு-நிலை key_themes மற்றும் recommended_follow_ups க்கு ஒருங்கிணைக்க தனிப்பட்ட நுண்ணறிவுப் பொருள்கள் தேவை, மறுபுறம் அல்ல.
  3. ஒரு node செயல்பாட்டிலிருந்து முழு திரட்டப்பட்ட state ஐத் திருப்பித் தராதீர்கள் — நீங்கள் மாற்றும் புலங்களை மட்டுமே return செய்யவும் — ஒவ்வொரு node-ம் முழுமையான InterviewState ஐப் பெறுகிறது ஆனால் ஒரு பகுதி dict ஐத் திருப்பித் தர வேண்டும்; முழு state பொருளைத் திருப்பித் தருவது மாறாத add-குறிக்கப்பட்ட புலங்களை சேர்க்க வேண்டிய புதிய உருப்படிகளாக LangGraph விளக்கும்படி செய்கிறது, ஒவ்வொரு சுழற்சியிலும் ஒவ்வொரு முந்தைய கேள்வியையும் பதிலையும் நகலெடுக்கிறது.

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

All free lessons in Forward Deployed GenAI Engineering →