Smart-Notes-backend / app /graph /nodes /hybrid_agent.py
pluto90's picture
Update app/graph/nodes/hybrid_agent.py
bdd8061 verified
# app/graph/nodes/hybrid_agent.py
from app.core.llm_engine import llm
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
hybrid_prompt = PromptTemplate(
input_variables=["context", "query", "history"],
template=(
"You are a document-aware assistant.\n"
"The uploaded document has LIMITED information on this topic.\n\n"
"INSTRUCTIONS:\n"
"- Start your answer using what the document says (cite it briefly)\n"
"- Then expand with your general knowledge to give a complete answer\n"
"- Clearly separate what came from the document vs general knowledge\n"
"- Be concise and helpful\n\n"
"Conversation History:\n{history}\n\n"
"Document excerpt:\n{context}\n\n"
"Question:\n{query}\n\n"
"Answer:"
)
)
chain = hybrid_prompt | llm | StrOutputParser()
def hybrid_agent_node(state):
response = chain.invoke({
"context": state.get("context", ""),
"query": state.get("query", ""),
"history": state.get("history", "")
})
return {
**state,
"general_answer": response.strip() # synthesizer picks this up for hybrid route
}