Skip to content

Commit f1c4a33

Browse files
committed
fix: Handle missing researcher agent in CoT
- Add checks for researcher agent availability - Handle cases with no context available - Provide fallback to general knowledge - Fix NoneType error in CoT processing
1 parent 27f514d commit f1c4a33

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

agentic_rag/local_rag_agent.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,20 @@ def _process_query_with_cot(self, query: str, analysis: QueryAnalysis) -> Dict[s
126126
plan = self.agents["planner"].plan(query, initial_context)
127127
logger.info(f"Generated plan:\n{plan}")
128128

129-
# Step 2: Research each step
129+
# Step 2: Research each step (if researcher is available)
130130
logger.info("Step 2: Research")
131131
research_results = []
132-
for step in plan.split("\n"):
133-
if not step.strip():
134-
continue
135-
step_research = self.agents["researcher"].research(query, step)
136-
research_results.append({"step": step, "findings": step_research})
137-
logger.info(f"Research for step: {step}\nFindings: {step_research}")
132+
if self.agents["researcher"] is not None and initial_context:
133+
for step in plan.split("\n"):
134+
if not step.strip():
135+
continue
136+
step_research = self.agents["researcher"].research(query, step)
137+
research_results.append({"step": step, "findings": step_research})
138+
logger.info(f"Research for step: {step}\nFindings: {step_research}")
139+
else:
140+
# If no researcher or no context, use the steps directly
141+
research_results = [{"step": step, "findings": []} for step in plan.split("\n") if step.strip()]
142+
logger.info("No research performed (no researcher agent or no context available)")
138143

139144
# Step 3: Reasoning about each step
140145
logger.info("Step 3: Reasoning")
@@ -143,7 +148,7 @@ def _process_query_with_cot(self, query: str, analysis: QueryAnalysis) -> Dict[s
143148
step_reasoning = self.agents["reasoner"].reason(
144149
query,
145150
result["step"],
146-
result["findings"]
151+
result["findings"] if result["findings"] else [{"content": "Using general knowledge", "metadata": {"source": "General Knowledge"}}]
147152
)
148153
reasoning_steps.append(step_reasoning)
149154
logger.info(f"Reasoning for step: {result['step']}\n{step_reasoning}")

agentic_rag/rag_agent.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,20 @@ def _process_query_with_cot(self, query: str, analysis: QueryAnalysis) -> Dict[s
9090
plan = self.agents["planner"].plan(query, initial_context)
9191
logger.info(f"Generated plan:\n{plan}")
9292

93-
# Step 2: Research each step
93+
# Step 2: Research each step (if researcher is available)
9494
logger.info("Step 2: Research")
9595
research_results = []
96-
for step in plan.split("\n"):
97-
if not step.strip():
98-
continue
99-
step_research = self.agents["researcher"].research(query, step)
100-
research_results.append({"step": step, "findings": step_research})
101-
logger.info(f"Research for step: {step}\nFindings: {step_research}")
96+
if self.agents["researcher"] is not None and initial_context:
97+
for step in plan.split("\n"):
98+
if not step.strip():
99+
continue
100+
step_research = self.agents["researcher"].research(query, step)
101+
research_results.append({"step": step, "findings": step_research})
102+
logger.info(f"Research for step: {step}\nFindings: {step_research}")
103+
else:
104+
# If no researcher or no context, use the steps directly
105+
research_results = [{"step": step, "findings": []} for step in plan.split("\n") if step.strip()]
106+
logger.info("No research performed (no researcher agent or no context available)")
102107

103108
# Step 3: Reasoning about each step
104109
logger.info("Step 3: Reasoning")
@@ -107,7 +112,7 @@ def _process_query_with_cot(self, query: str, analysis: QueryAnalysis) -> Dict[s
107112
step_reasoning = self.agents["reasoner"].reason(
108113
query,
109114
result["step"],
110-
result["findings"]
115+
result["findings"] if result["findings"] else [{"content": "Using general knowledge", "metadata": {"source": "General Knowledge"}}]
111116
)
112117
reasoning_steps.append(step_reasoning)
113118
logger.info(f"Reasoning for step: {result['step']}\n{step_reasoning}")

0 commit comments

Comments
 (0)