Skip to content

Commit a0bfbbe

Browse files
Merge pull request #85 from smokeyScraper/codebase_restructuring
[refactor]: restructure backend for improved modularity and separation of concerns
2 parents 2616103 + d5e7f84 commit a0bfbbe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+317
-421
lines changed

backend/app/agents/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from .devrel.agent import DevRelAgent
2-
from .shared.base_agent import BaseAgent, AgentState
3-
from .shared.classification_router import ClassificationRouter
2+
from .base_agent import BaseAgent, AgentState
3+
from .classification_router import ClassificationRouter
44

55
__all__ = [
66
"DevRelAgent",
File renamed without changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

backend/app/agents/devrel/agent.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44
from langgraph.graph import StateGraph, END
55
from langchain_google_genai import ChatGoogleGenerativeAI
66
from langgraph.checkpoint.memory import InMemorySaver
7-
from ..shared.base_agent import BaseAgent, AgentState
8-
from ..shared.classification_router import MessageCategory
7+
from ..base_agent import BaseAgent, AgentState
8+
from ..classification_router import MessageCategory
99
from .tools.search_tool import TavilySearchTool
1010
from .tools.faq_tool import FAQTool
1111
from app.core.config import settings
12-
from .nodes.gather_context_node import gather_context_node
13-
from .nodes.handle_faq_node import handle_faq_node
14-
from .nodes.handle_web_search_node import handle_web_search_node
15-
from .nodes.handle_technical_support_node import handle_technical_support_node
16-
from .nodes.handle_onboarding_node import handle_onboarding_node
17-
from .nodes.generate_response_node import generate_response_node
18-
from .nodes.summarization_node import check_summarization_needed, summarize_conversation_node, store_summary_to_database
12+
from .nodes.gather_context import gather_context_node
13+
from .nodes.handlers.faq import handle_faq_node
14+
from .nodes.handlers.web_search import handle_web_search_node
15+
from .nodes.handlers.technical_support import handle_technical_support_node
16+
from .nodes.handlers.onboarding import handle_onboarding_node
17+
from .generate_response_node import generate_response_node
18+
from .nodes.summarization import check_summarization_needed, summarize_conversation_node, store_summary_to_database
1919

2020
logger = logging.getLogger(__name__)
2121

backend/app/agents/devrel/nodes/generate_response_node.py renamed to backend/app/agents/devrel/generate_response_node.py

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,12 @@
11
import logging
22
from typing import Dict, Any
3-
from app.agents.shared.state import AgentState
3+
from app.agents.state import AgentState
44
from langchain_core.messages import HumanMessage
5-
from ..prompts.base_prompt import GENERAL_LLM_RESPONSE_PROMPT
5+
from .prompts.base_prompt import GENERAL_LLM_RESPONSE_PROMPT
6+
from .nodes.handlers.web_search import create_search_response
67

78
logger = logging.getLogger(__name__)
89

9-
async def _create_search_response(task_result: Dict[str, Any]) -> str:
10-
"""Create a response string from search results."""
11-
query = task_result.get("query")
12-
results = task_result.get("results", [])
13-
if not results:
14-
return f"I couldn't find any information for '{query}'. You might want to try rephrasing your search."
15-
16-
response_parts = [f"Here's what I found for '{query}':"]
17-
for i, result in enumerate(results[:3]):
18-
title = result.get('title', 'N/A')
19-
snippet = result.get('snippet', 'N/A')
20-
url = result.get('url', '#')
21-
result_line = f"{i+1}. {title}: {snippet}"
22-
response_parts.append(result_line)
23-
response_parts.append(f" (Source: {url})")
24-
response_parts.append("You can ask me to search again with a different query if these aren't helpful.")
25-
return "\n".join(response_parts)
2610

2711
async def _create_llm_response(state: AgentState, task_result: Dict[str, Any], llm) -> str:
2812
"""Generate a response using the LLM based on the current state and task result."""
@@ -89,7 +73,7 @@ async def generate_response_node(state: AgentState, llm) -> dict:
8973
if task_result.get("type") == "faq":
9074
final_response = task_result.get("response", "I don't have a specific answer for that question.")
9175
elif task_result.get("type") == "web_search":
92-
final_response = await _create_search_response(task_result)
76+
final_response = create_search_response(task_result)
9377
else:
9478
final_response = await _create_llm_response(state, task_result, llm)
9579

backend/app/agents/devrel/nodes/gather_context_node.py renamed to backend/app/agents/devrel/nodes/gather_context.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import logging
22
from datetime import datetime
3-
from app.agents.shared.state import AgentState
4-
from app.agents.shared.classification_router import MessageCategory
3+
from app.agents.state import AgentState
54

65
logger = logging.getLogger(__name__)
76

backend/app/agents/devrel/nodes/handle_faq_node.py renamed to backend/app/agents/devrel/nodes/handlers/faq.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import logging
2-
from app.agents.shared.state import AgentState
2+
from app.agents.state import AgentState
33

44
logger = logging.getLogger(__name__)
55

backend/app/agents/devrel/nodes/handle_onboarding_node.py renamed to backend/app/agents/devrel/nodes/handlers/onboarding.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import logging
2-
from app.agents.shared.state import AgentState
2+
from app.agents.state import AgentState
33

44
logger = logging.getLogger(__name__)
55

0 commit comments

Comments
 (0)