@@ -102,8 +102,13 @@ def _process_query_with_cot(self, query: str) -> Dict[str, Any]:
102102 logger .warning ("No planner agent available, using direct response" )
103103 return self ._generate_general_response (query )
104104
105- plan = self .agents ["planner" ].plan (query , initial_context )
106- logger .info (f"Generated plan:\n { plan } " )
105+ try :
106+ plan = self .agents ["planner" ].plan (query , initial_context )
107+ logger .info (f"Generated plan:\n { plan } " )
108+ except Exception as e :
109+ logger .error (f"Error in planning step: { str (e )} " )
110+ logger .info ("Falling back to general response" )
111+ return self ._generate_general_response (query )
107112
108113 # Step 2: Research each step (if researcher is available)
109114 logger .info ("Step 2: Research" )
@@ -112,11 +117,21 @@ def _process_query_with_cot(self, query: str) -> Dict[str, Any]:
112117 for step in plan .split ("\n " ):
113118 if not step .strip ():
114119 continue
115- step_research = self .agents ["researcher" ].research (query , step )
116- research_results .append ({"step" : step , "findings" : step_research })
117- # Log which sources were used for this step
118- source_indices = [initial_context .index (finding ) + 1 for finding in step_research if finding in initial_context ]
119- logger .info (f"Research for step: { step } \n Using sources: { source_indices } " )
120+ try :
121+ step_research = self .agents ["researcher" ].research (query , step )
122+ # Extract findings from research result
123+ findings = step_research .get ("findings" , []) if isinstance (step_research , dict ) else []
124+ research_results .append ({"step" : step , "findings" : findings })
125+
126+ # Log which sources were used for this step
127+ try :
128+ source_indices = [initial_context .index (finding ) + 1 for finding in findings if finding in initial_context ]
129+ logger .info (f"Research for step: { step } \n Using sources: { source_indices } " )
130+ except ValueError as ve :
131+ logger .warning (f"Could not find some findings in initial context: { str (ve )} " )
132+ except Exception as e :
133+ logger .error (f"Error during research for step '{ step } ': { str (e )} " )
134+ research_results .append ({"step" : step , "findings" : []})
120135 else :
121136 # If no researcher or no context, use the steps directly
122137 research_results = [{"step" : step , "findings" : []} for step in plan .split ("\n " ) if step .strip ()]
@@ -130,30 +145,39 @@ def _process_query_with_cot(self, query: str) -> Dict[str, Any]:
130145
131146 reasoning_steps = []
132147 for result in research_results :
133- step_reasoning = self .agents ["reasoner" ].reason (
134- query ,
135- result ["step" ],
136- result ["findings" ] if result ["findings" ] else [{"content" : "Using general knowledge" , "metadata" : {"source" : "General Knowledge" }}]
137- )
138- reasoning_steps .append (step_reasoning )
139- logger .info (f"Reasoning for step: { result ['step' ]} \n { step_reasoning } " )
148+ try :
149+ step_reasoning = self .agents ["reasoner" ].reason (
150+ query ,
151+ result ["step" ],
152+ result ["findings" ] if result ["findings" ] else [{"content" : "Using general knowledge" , "metadata" : {"source" : "General Knowledge" }}]
153+ )
154+ reasoning_steps .append (step_reasoning )
155+ logger .info (f"Reasoning for step: { result ['step' ]} \n { step_reasoning } " )
156+ except Exception as e :
157+ logger .error (f"Error in reasoning for step '{ result ['step' ]} ': { str (e )} " )
158+ reasoning_steps .append (f"Error in reasoning for this step: { str (e )} " )
140159
141160 # Step 4: Synthesize final answer
142161 logger .info ("Step 4: Synthesis" )
143162 if not self .agents .get ("synthesizer" ):
144163 logger .warning ("No synthesizer agent available, using direct response" )
145164 return self ._generate_general_response (query )
146165
147- final_answer = self .agents ["synthesizer" ].synthesize (query , reasoning_steps )
148- logger .info (f"Final synthesized answer:\n { final_answer } " )
166+ try :
167+ final_answer = self .agents ["synthesizer" ].synthesize (query , reasoning_steps )
168+ logger .info (f"Final synthesized answer:\n { final_answer } " )
169+ except Exception as e :
170+ logger .error (f"Error in synthesis step: { str (e )} " )
171+ logger .info ("Falling back to general response" )
172+ return self ._generate_general_response (query )
149173
150174 return {
151175 "answer" : final_answer ,
152176 "context" : initial_context ,
153177 "reasoning_steps" : reasoning_steps
154178 }
155179 except Exception as e :
156- logger .error (f"Error in CoT processing: { str (e )} " )
180+ logger .error (f"Error in CoT processing: { str (e )} " , exc_info = True )
157181 logger .info ("Falling back to general response" )
158182 return self ._generate_general_response (query )
159183
0 commit comments