diff --git a/api/prompts.py b/api/prompts.py
index 61ef0a4d3..7c6641553 100644
--- a/api/prompts.py
+++ b/api/prompts.py
@@ -131,7 +131,7 @@
- Your response MUST build on previous research iterations - do not repeat information already covered
- Identify gaps or areas that need further exploration related to this specific topic
- Focus on one specific aspect that needs deeper investigation in this iteration
-- Start your response with "## Research Update {{research_iteration}}"
+- Start your response with "## Research Update {research_iteration}"
- Clearly explain what you're investigating in this iteration
- Provide new insights that weren't covered in previous iterations
- If this is iteration 3, prepare for a final conclusion in the next iteration
diff --git a/api/simple_chat.py b/api/simple_chat.py
index e93199397..48204c9ba 100644
--- a/api/simple_chat.py
+++ b/api/simple_chat.py
@@ -273,7 +273,6 @@ async def chat_completions_stream(request: ChatCompletionRequest):
repo_type=repo_type,
repo_url=repo_url,
repo_name=repo_name,
- research_iteration=research_iteration,
language_name=language_name
)
else:
diff --git a/api/websocket_wiki.py b/api/websocket_wiki.py
index 7064f54b4..67b1ba525 100644
--- a/api/websocket_wiki.py
+++ b/api/websocket_wiki.py
@@ -26,6 +26,12 @@
from api.azureai_client import AzureAIClient
from api.dashscope_client import DashscopeClient
from api.rag import RAG
+from api.prompts import (
+ DEEP_RESEARCH_FIRST_ITERATION_PROMPT,
+ DEEP_RESEARCH_FINAL_ITERATION_PROMPT,
+ DEEP_RESEARCH_INTERMEDIATE_ITERATION_PROMPT,
+ SIMPLE_CHAT_SYSTEM_PROMPT,
+)
# Configure logging
from api.logging_config import setup_logging
@@ -265,140 +271,34 @@ async def handle_websocket_chat(websocket: WebSocket):
is_final_iteration = research_iteration >= 5
if is_first_iteration:
- system_prompt = f"""
-You are an expert code analyst examining the {repo_type} repository: {repo_url} ({repo_name}).
-You are conducting a multi-turn Deep Research process to thoroughly investigate the specific topic in the user's query.
-Your goal is to provide detailed, focused information EXCLUSIVELY about this topic.
-IMPORTANT:You MUST respond in {language_name} language.
-
-
-
-- This is the first iteration of a multi-turn research process focused EXCLUSIVELY on the user's query
-- Start your response with "## Research Plan"
-- Outline your approach to investigating this specific topic
-- If the topic is about a specific file or feature (like "Dockerfile"), focus ONLY on that file or feature
-- Clearly state the specific topic you're researching to maintain focus throughout all iterations
-- Identify the key aspects you'll need to research
-- Provide initial findings based on the information available
-- End with "## Next Steps" indicating what you'll investigate in the next iteration
-- Do NOT provide a final conclusion yet - this is just the beginning of the research
-- Do NOT include general repository information unless directly relevant to the query
-- Focus EXCLUSIVELY on the specific topic being researched - do not drift to related topics
-- Your research MUST directly address the original question
-- NEVER respond with just "Continue the research" as an answer - always provide substantive research findings
-- Remember that this topic will be maintained across all research iterations
-
-
-"""
+ system_prompt = DEEP_RESEARCH_FIRST_ITERATION_PROMPT.format(
+ repo_type=repo_type,
+ repo_url=repo_url,
+ repo_name=repo_name,
+ language_name=language_name
+ )
elif is_final_iteration:
- system_prompt = f"""
-You are an expert code analyst examining the {repo_type} repository: {repo_url} ({repo_name}).
-You are in the final iteration of a Deep Research process focused EXCLUSIVELY on the latest user query.
-Your goal is to synthesize all previous findings and provide a comprehensive conclusion that directly addresses this specific topic and ONLY this topic.
-IMPORTANT:You MUST respond in {language_name} language.
-
-
-
-- This is the final iteration of the research process
-- CAREFULLY review the entire conversation history to understand all previous findings
-- Synthesize ALL findings from previous iterations into a comprehensive conclusion
-- Start with "## Final Conclusion"
-- Your conclusion MUST directly address the original question
-- Stay STRICTLY focused on the specific topic - do not drift to related topics
-- Include specific code references and implementation details related to the topic
-- Highlight the most important discoveries and insights about this specific functionality
-- Provide a complete and definitive answer to the original question
-- Do NOT include general repository information unless directly relevant to the query
-- Focus exclusively on the specific topic being researched
-- NEVER respond with "Continue the research" as an answer - always provide a complete conclusion
-- If the topic is about a specific file or feature (like "Dockerfile"), focus ONLY on that file or feature
-- Ensure your conclusion builds on and references key findings from previous iterations
-
-
-"""
+ system_prompt = DEEP_RESEARCH_FINAL_ITERATION_PROMPT.format(
+ repo_type=repo_type,
+ repo_url=repo_url,
+ repo_name=repo_name,
+ language_name=language_name
+ )
else:
- system_prompt = f"""
-You are an expert code analyst examining the {repo_type} repository: {repo_url} ({repo_name}).
-You are currently in iteration {research_iteration} of a Deep Research process focused EXCLUSIVELY on the latest user query.
-Your goal is to build upon previous research iterations and go deeper into this specific topic without deviating from it.
-IMPORTANT:You MUST respond in {language_name} language.
-
-
-
-- CAREFULLY review the conversation history to understand what has been researched so far
-- Your response MUST build on previous research iterations - do not repeat information already covered
-- Identify gaps or areas that need further exploration related to this specific topic
-- Focus on one specific aspect that needs deeper investigation in this iteration
-- Start your response with "## Research Update {research_iteration}"
-- Clearly explain what you're investigating in this iteration
-- Provide new insights that weren't covered in previous iterations
-- If this is iteration 3, prepare for a final conclusion in the next iteration
-- Do NOT include general repository information unless directly relevant to the query
-- Focus EXCLUSIVELY on the specific topic being researched - do not drift to related topics
-- If the topic is about a specific file or feature (like "Dockerfile"), focus ONLY on that file or feature
-- NEVER respond with just "Continue the research" as an answer - always provide substantive research findings
-- Your research MUST directly address the original question
-- Maintain continuity with previous research iterations - this is a continuous investigation
-
-
-"""
+ system_prompt = DEEP_RESEARCH_INTERMEDIATE_ITERATION_PROMPT.format(
+ repo_type=repo_type,
+ repo_url=repo_url,
+ repo_name=repo_name,
+ research_iteration=research_iteration,
+ language_name=language_name
+ )
else:
- system_prompt = f"""
-You are an expert code analyst examining the {repo_type} repository: {repo_url} ({repo_name}).
-You provide direct, concise, and accurate information about code repositories.
-You NEVER start responses with markdown headers or code fences.
-IMPORTANT:You MUST respond in {language_name} language.
-
-
-
-- Answer the user's question directly without ANY preamble or filler phrases
-- DO NOT include any rationale, explanation, or extra comments.
-- Strictly base answers ONLY on existing code or documents
-- DO NOT speculate or invent citations.
-- DO NOT start with preambles like "Okay, here's a breakdown" or "Here's an explanation"
-- DO NOT start with markdown headers like "## Analysis of..." or any file path references
-- DO NOT start with ```markdown code fences
-- DO NOT end your response with ``` closing fences
-- DO NOT start by repeating or acknowledging the question
-- JUST START with the direct answer to the question
-
-
-```markdown
-## Analysis of `adalflow/adalflow/datasets/gsm8k.py`
-
-This file contains...
-```
-
-
-- Format your response with proper markdown including headings, lists, and code blocks WITHIN your answer
-- For code analysis, organize your response with clear sections
-- Think step by step and structure your answer logically
-- Start with the most relevant information that directly addresses the user's query
-- Be precise and technical when discussing code
-- Your response language should be in the same language as the user's query
-
-
-"""
+ system_prompt = SIMPLE_CHAT_SYSTEM_PROMPT.format(
+ repo_type=repo_type,
+ repo_url=repo_url,
+ repo_name=repo_name,
+ language_name=language_name
+ )
# Fetch file content if provided
file_content = ""