@@ -152,6 +152,7 @@ async def _get_intent_context(
152152 product_facts : list [str ] = []
153153 extracted_links : list [dict [str , str ]] = []
154154 requires_lead : bool = False
155+ lead_form_type = None
155156
156157 intent_type = intent_data .get ("intent" , INTENT_FAQ )
157158 product_name = intent_data .get ("product_name" )
@@ -191,6 +192,7 @@ async def _get_intent_context(
191192 system_instructions = res .system_instructions
192193 extracted_links = res .extracted_links
193194 requires_lead = res .requires_lead
195+ lead_form_type = res .lead_form_type
194196 intent_type = res .new_intent_type or intent_type
195197
196198 if intent_type == INTENT_SEARCH :
@@ -209,12 +211,14 @@ async def _get_intent_context(
209211 system_instructions = res .system_instructions
210212 extracted_links = res .extracted_links
211213 requires_lead = res .requires_lead
214+ lead_form_type = res .lead_form_type
212215
213216 return IntentContextResult (
214217 product_facts = product_facts ,
215218 system_instructions = system_instructions ,
216219 extracted_links = extracted_links ,
217220 requires_lead = requires_lead ,
221+ lead_form_type = lead_form_type ,
218222 )
219223
220224 async def _try_capture_lead (
@@ -244,6 +248,7 @@ async def _try_capture_lead(
244248 sources = [],
245249 extracted_links = links ,
246250 requires_lead = False ,
251+ lead_form_type = None ,
247252 extended_user_message = "" ,
248253 )
249254 except Exception :
@@ -255,6 +260,7 @@ async def _try_capture_lead(
255260 sources = [],
256261 extracted_links = [],
257262 requires_lead = False ,
263+ lead_form_type = None ,
258264 extended_user_message = "" ,
259265 )
260266 return False , None
@@ -265,7 +271,7 @@ async def _prepare_rag_pipeline(
265271 """
266272 Executes the shared pipeline for both sync and stream methods.
267273 Returns:
268- is_valid, fallback_response, final_context, sources, links, requires_lead, extended_message
274+ is_valid, fallback_response, final_context, sources, links, requires_lead, lead_form_type, extended_message
269275 """
270276 if not self .guardrails_service .validate_input (question , client_ip = client_ip ):
271277 return PipelineContext (
@@ -275,6 +281,7 @@ async def _prepare_rag_pipeline(
275281 sources = [],
276282 extracted_links = [],
277283 requires_lead = False ,
284+ lead_form_type = None ,
278285 extended_user_message = "" ,
279286 )
280287
@@ -342,11 +349,13 @@ async def fetch_vectors() -> list[
342349 if isinstance (intent_results , BaseException ):
343350 logger .error (f"Intent context retrieval failed: { intent_results } " )
344351 product_facts , system_instructions , extracted_links , requires_lead = [], [], [], False
352+ lead_form_type = None
345353 else :
346354 product_facts = intent_results .product_facts
347355 system_instructions = intent_results .system_instructions
348356 extracted_links = intent_results .extracted_links
349357 requires_lead = intent_results .requires_lead
358+ lead_form_type = intent_results .lead_form_type
350359
351360 prepended_context : list [str ] = []
352361 if system_instructions :
@@ -365,6 +374,7 @@ async def fetch_vectors() -> list[
365374 sources = list (sources ),
366375 extracted_links = extracted_links ,
367376 requires_lead = requires_lead ,
377+ lead_form_type = lead_form_type ,
368378 extended_user_message = extended_user_message ,
369379 )
370380
@@ -384,6 +394,7 @@ async def process_query(
384394 has_context = False ,
385395 links = [],
386396 requires_lead = False ,
397+ lead_form_type = None ,
387398 )
388399 else :
389400 return RAGResponse (
@@ -392,6 +403,7 @@ async def process_query(
392403 has_context = False ,
393404 links = [LinkItem (** link ) for link in ctx .extracted_links ],
394405 requires_lead = False ,
406+ lead_form_type = None ,
395407 )
396408
397409 if not ctx .final_context :
@@ -402,6 +414,7 @@ async def process_query(
402414 has_context = False ,
403415 links = [],
404416 requires_lead = True ,
417+ lead_form_type = None ,
405418 )
406419
407420 try :
@@ -424,6 +437,7 @@ async def process_query(
424437 "has_context" : False ,
425438 "links" : [],
426439 "requires_lead" : True ,
440+ "lead_form_type" : None ,
427441 }
428442 )
429443
@@ -437,6 +451,7 @@ async def process_query(
437451 "has_context" : True ,
438452 "links" : ctx .extracted_links ,
439453 "requires_lead" : ctx .requires_lead ,
454+ "lead_form_type" : ctx .lead_form_type ,
440455 }
441456 )
442457
@@ -450,14 +465,20 @@ async def process_query_stream(
450465
451466 if not ctx .is_valid :
452467 meta_payload = json .dumps (
453- {"links" : ctx .extracted_links , "requires_lead" : False }, ensure_ascii = False
468+ {"links" : ctx .extracted_links , "requires_lead" : False , "lead_form_type" : None },
469+ ensure_ascii = False ,
454470 )
455471 yield f"[METADATA] { meta_payload } "
456472 yield json .dumps ({"token" : ctx .fallback_response }, ensure_ascii = False )
457473 return
458474
459475 meta_payload = json .dumps (
460- {"links" : ctx .extracted_links , "requires_lead" : ctx .requires_lead }, ensure_ascii = False
476+ {
477+ "links" : ctx .extracted_links ,
478+ "requires_lead" : ctx .requires_lead ,
479+ "lead_form_type" : ctx .lead_form_type ,
480+ },
481+ ensure_ascii = False ,
461482 )
462483 yield f"[METADATA] { meta_payload } "
463484
0 commit comments