get rid of research summary phase
This commit is contained in:
parent
0fc4899191
commit
5596553945
|
|
@ -24,7 +24,6 @@ from ra_aid.prompts import (
|
||||||
RESEARCH_PROMPT,
|
RESEARCH_PROMPT,
|
||||||
PLANNING_PROMPT,
|
PLANNING_PROMPT,
|
||||||
IMPLEMENTATION_PROMPT,
|
IMPLEMENTATION_PROMPT,
|
||||||
SUMMARY_PROMPT
|
|
||||||
)
|
)
|
||||||
from ra_aid.exceptions import TaskCompletedException
|
from ra_aid.exceptions import TaskCompletedException
|
||||||
import time
|
import time
|
||||||
|
|
@ -172,42 +171,6 @@ def run_implementation_stage(base_task, tasks, plan, related_files):
|
||||||
# Run agent for this task
|
# Run agent for this task
|
||||||
run_agent_with_retry(task_agent, task_prompt, {"configurable": {"thread_id": "abc123"}, "recursion_limit": 100})
|
run_agent_with_retry(task_agent, task_prompt, {"configurable": {"thread_id": "abc123"}, "recursion_limit": 100})
|
||||||
|
|
||||||
def summarize_research_findings(base_task: str, config: dict) -> None:
|
|
||||||
"""Summarize research findings for informational queries.
|
|
||||||
|
|
||||||
Generates and prints a concise summary of research findings including key facts
|
|
||||||
and research notes collected during the research stage.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
base_task: The original user query
|
|
||||||
config: Configuration dictionary for the agent
|
|
||||||
"""
|
|
||||||
print_stage_header("Research Summary")
|
|
||||||
|
|
||||||
# Create dedicated memory for research summarization
|
|
||||||
summary_memory = MemorySaver()
|
|
||||||
|
|
||||||
# Create fresh agent for summarization with its own memory
|
|
||||||
summary_agent = create_react_agent(model, implementation_tools, checkpointer=summary_memory)
|
|
||||||
|
|
||||||
summary_prompt = SUMMARY_PROMPT.format(
|
|
||||||
base_task=base_task,
|
|
||||||
research_notes=get_memory_value('research_notes'),
|
|
||||||
key_facts=get_memory_value('key_facts'),
|
|
||||||
key_snippets=get_memory_value('key_snippets')
|
|
||||||
)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
for chunk in summary_agent.stream(
|
|
||||||
{"messages": [HumanMessage(content=summary_prompt)]},
|
|
||||||
config
|
|
||||||
):
|
|
||||||
print_agent_output(chunk)
|
|
||||||
break
|
|
||||||
except ChatAnthropic.InternalServerError as e:
|
|
||||||
print(f"Encountered Anthropic Internal Server Error: {e}. Retrying...")
|
|
||||||
continue
|
|
||||||
|
|
||||||
def run_research_subtasks(base_task: str, config: dict):
|
def run_research_subtasks(base_task: str, config: dict):
|
||||||
"""Run research subtasks with separate agents."""
|
"""Run research subtasks with separate agents."""
|
||||||
|
|
@ -301,11 +264,8 @@ Be very thorough in your research and emit lots of snippets, key facts. If you t
|
||||||
# Run any research subtasks
|
# Run any research subtasks
|
||||||
run_research_subtasks(base_task, config)
|
run_research_subtasks(base_task, config)
|
||||||
|
|
||||||
# For informational queries, summarize findings
|
# Proceed with planning and implementation if not an informational query
|
||||||
if is_informational_query():
|
if not is_informational_query():
|
||||||
summarize_research_findings(base_task, config)
|
|
||||||
else:
|
|
||||||
# Only proceed with planning and implementation if not an informational query
|
|
||||||
print_stage_header("Planning Stage")
|
print_stage_header("Planning Stage")
|
||||||
planning_prompt = PLANNING_PROMPT.format(
|
planning_prompt = PLANNING_PROMPT.format(
|
||||||
research_notes=get_memory_value('research_notes'),
|
research_notes=get_memory_value('research_notes'),
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ def print_stage_header(stage: str) -> None:
|
||||||
'task completed': '✅',
|
'task completed': '✅',
|
||||||
'debug stage': '🐛',
|
'debug stage': '🐛',
|
||||||
'testing stage': '🧪',
|
'testing stage': '🧪',
|
||||||
'research summary': '📋',
|
|
||||||
'research subtasks': '📚',
|
'research subtasks': '📚',
|
||||||
'skipping implementation stage': '⏭️'
|
'skipping implementation stage': '⏭️'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ Single-Shot Task Detection
|
||||||
- Situations where immediate response meets all user requirements
|
- Situations where immediate response meets all user requirements
|
||||||
|
|
||||||
One-shot completion will be blocked if:
|
One-shot completion will be blocked if:
|
||||||
- Research subtasks have been requested (must wait for research summary)
|
- Research subtasks have been requested
|
||||||
- Complex implementation has been explicitly requested
|
- Complex implementation has been explicitly requested
|
||||||
|
|
||||||
If you determine a task can be completed in a single shot:
|
If you determine a task can be completed in a single shot:
|
||||||
|
|
@ -163,41 +163,6 @@ Guidelines:
|
||||||
Do not implement anything yet.
|
Do not implement anything yet.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Research summary prompt - guides generation of research summaries
|
|
||||||
# Remains essentially the same, but with complexity scaling if needed.
|
|
||||||
SUMMARY_PROMPT = """
|
|
||||||
Using only the information provided in the Research Notes and Key Facts below, write a concise and direct answer to the user's query.
|
|
||||||
|
|
||||||
User's Query:
|
|
||||||
{base_task}
|
|
||||||
|
|
||||||
Research Notes:
|
|
||||||
{research_notes}
|
|
||||||
|
|
||||||
Key Facts:
|
|
||||||
{key_facts}
|
|
||||||
|
|
||||||
Key Snippets:
|
|
||||||
{key_snippets}
|
|
||||||
|
|
||||||
Fact Management:
|
|
||||||
Each fact is identified with [Fact ID: X].
|
|
||||||
Facts may be deleted if they become outdated, irrelevant, or duplicates.
|
|
||||||
Use delete_key_facts([id1, id2, ...]) with a list of numeric Fact IDs to remove unnecessary facts.
|
|
||||||
|
|
||||||
Snippet Management:
|
|
||||||
Each snippet is identified with [Snippet ID: X].
|
|
||||||
Snippets include file path, line number, and source code.
|
|
||||||
Snippets may have optional descriptions explaining their significance.
|
|
||||||
Delete snippets with delete_key_snippets([id1, id2, ...]) to remove outdated or irrelevant ones.
|
|
||||||
Use emit_key_snippets to store important code sections needed for reference in batches.
|
|
||||||
|
|
||||||
Instructions:
|
|
||||||
- **Stay Within Provided Information**: Do not include any information not present in the Research Notes or Key Facts.
|
|
||||||
- **Handle Contradictions Appropriately**: If contradictions exist, consider additional research or note the contradictions.
|
|
||||||
- **Maintain Focus and Brevity**: Keep the response concise, focusing on the user's query.
|
|
||||||
- **Include Technical Details If Relevant**: For technical queries, reference discovered files and snippets.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Implementation stage prompt - guides specific task implementation
|
# Implementation stage prompt - guides specific task implementation
|
||||||
# Added instruction to adjust complexity of implementation to match request.
|
# Added instruction to adjust complexity of implementation to match request.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue