kingbros919's picture
Upload folder using huggingface_hub
292b308 verified
Raw
History Blame Contribute Delete
2.41 kB
import os
import sys
# Ensure project root is in path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
from langgraph.graph import StateGraph, END
from src.agents.state import AgentState
from src.agents.retriever_node import retriever_node
from src.agents.quant_node import quant_node
from src.agents.analyst_node import analyst_node
# Define StateGraph
graph = StateGraph(AgentState)
# Add nodes
graph.add_node("retriever", retriever_node)
graph.add_node("quant", quant_node)
graph.add_node("analyst", analyst_node)
# Add linear flow edges
graph.set_entry_point("retriever")
graph.add_edge("retriever", "quant")
graph.add_edge("quant", "analyst")
graph.add_edge("analyst", END)
# Compile
agent_app = graph.compile()
def run_analysis(query: str, sector: str = "") -> dict:
"""
Initializes state and runs the compiled LangGraph flow for the query and sector.
"""
initial_state = AgentState(
query=query,
sector=sector,
retrieved_chunks=[],
ml_signal={},
news_sentiment=0.0,
answer="",
sources=[],
confidence="LOW",
error=""
)
result = agent_app.invoke(initial_state)
return {
"answer": result["answer"],
"sources": result["sources"],
"confidence": result["confidence"],
"ml_direction": result["ml_signal"].get("direction", "N/A"),
"ml_probability": result["ml_signal"].get("probability", 0.5),
"news_sentiment": result["news_sentiment"],
"error": result.get("error", "")
}
if __name__ == "__main__":
print("--- LangGraph Agent System Standalone Demo ---")
# Try to load environment variables from .env
try:
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass
query = "banking sector NPA outlook"
sector = "Banking"
print(f"Running run_analysis for Sector: '{sector}' | Query: '{query}'...")
res = run_analysis(query=query, sector=sector)
print("\n--- RESULTS ---")
print(f"Confidence: {res['confidence']}")
print(f"ML Direction: {res['ml_direction']}")
print(f"ML Probability: {res['ml_probability']:.2f}")
print(f"News Sentiment: {res['news_sentiment']:.4f}")
print(f"Sources: {res['sources']}")
print(f"Error: {res['error']}")
print("\nAnswer Summary:")
print(res["answer"])