File size: 1,834 Bytes
e77665f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
from dotenv import load_dotenv
from openai import OpenAI
from backend.app.rag.retriever import DataRetriever
from configs.logging_config import setup_logger
from configs.settings import config

load_dotenv()

logger = setup_logger("rag_agent")

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

MODEL_NAME = config["llm"]["model"]

class RAGAgent:
    def __init__(self):
        self.retriever = DataRetriever("data/sales_data.csv")

    def format_context(self, docs):
        return "\n\n".join([f"- {doc}" for doc in docs])

    def generate_prompt(self, query, context):
        return f"""
You are an AI Operations Copilot.

Use ONLY the provided data to answer.
If insufficient data, say so.

Context:
{context}

Question:
{query}

Output format:
- Summary
- Key Insights
- Confidence Level
- Suggested Actions
"""

    def run(self, query):
        logger.info(f"User Query: {query}")

        retrieved_docs = self.retriever.retrieve(query)
        logger.info(f"Retrieved Docs: {retrieved_docs}")

        context = self.format_context(retrieved_docs)

        logger.info(f"Retrieved Context: {context}")

        prompt = self.generate_prompt(query, context)

        response = client.chat.completions.create(
            model=MODEL_NAME,
            messages=[
                {"role": "user", "content": prompt}
            ]
        )

        output = response.choices[0].message.content
        logger.info(f"Response: {output}")

        return output


def run_cli():
    agent = RAGAgent()

    print("=== RAG Agent ===")
    print("Type 'exit' to quit\n")

    while True:
        query = input("Enter your query: ")

        if query.lower() == "exit":
            break

        result = agent.run(query)
        print(f"\nAgent Response:\n{result}\n")


if __name__ == "__main__":
    run_cli()