File size: 2,276 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import os
from dotenv import load_dotenv
from openai import OpenAI
from configs.logging_config import setup_logger
from configs.settings import config
load_dotenv()

logger = setup_logger("llm_agent")

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

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


class LLMAgent:
    def __init__(self):
        self.prompts = {
            "v1": self.prompt_v1,
            "v2": self.prompt_v2,
            "v3": self.prompt_v3
        }

    def prompt_v1(self, query):
        return f"""
        You are a business analyst. Answer the question.

        Question: {query}
        """

    def prompt_v2(self, query):
        return f"""
        You are an operations analyst.

        Analyze the user query and provide:
        1. Observations
        2. Possible reasons
        3. Suggested next steps

        Question: {query}
        """

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

        Rules:
        - Do NOT make up data
        - If unsure, say "I don't have enough data"
        - Provide structured reasoning

        Output format:
        - Summary
        - Possible Causes
        - Confidence Level (High/Medium/Low)
        - Suggested Actions

        Question: {query}
        """

    def run(self, query, version="v1"):
        prompt = self.prompts[version](query)

        logger.info(f"Prompt Version: {version}")
        logger.info(f"User Query: {query}")

        response = client.chat.completions.create(
            model=MODEL_NAME,
            messages=[
                {"role": "system", "content": "You are a helpful AI assistant."},
                {"role": "user", "content": prompt}
            ]
        )

        output = response.choices[0].message.content

        logger.info(f"Response: {output}")
        return output


def run_cli():
    agent = LLMAgent()

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

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

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

        version = input("Choose prompt version (v1/v2/v3): ")

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


if __name__ == "__main__":
    run_cli()