File size: 1,856 Bytes
a5ece8b
aa97025
0e84c33
887b999
1c34919
0b8ba87
0e84c33
 
1c34919
0e84c33
 
 
 
 
0b8ba87
 
1c34919
0e84c33
 
 
 
8cc354c
0e84c33
 
 
0b8ba87
0e84c33
 
 
 
0b8ba87
0e84c33
 
1c34919
 
 
 
 
 
79c9d08
0e84c33
e784f1e
0e84c33
 
1c34919
af13fe6
0e84c33
 
 
 
e784f1e
 
79c9d08
0b8ba87
0e84c33
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
import gradio as gr
import pandas as pd
from transformers import pipeline

# 1) Load your data
df = pd.read_csv("synthetic_profit.csv")
table = df.astype(str).to_dict(orient="records")

# 2) TAPEX table‐QA pipeline
qa = pipeline(
    "table-question-answering",
    model="microsoft/tapex-base-finetuned-wtq",
    tokenizer="microsoft/tapex-base-finetuned-wtq",
    device=-1
)

# 3) Few‐shot examples
EXAMPLE_PROMPT = """
Example 1:
Q: What is the total revenue for Product A in EMEA in Q1 2024?
A: Filter Product=A & Region=EMEA & FiscalYear=2024 & FiscalQuarter=Q1, then sum Revenue → 3075162.49

Example 2:
Q: What is the total cost for Product A in EMEA in Q1 2024?
A: Filter Product=A & Region=EMEA & FiscalYear=2024 & FiscalQuarter=Q1, then sum Cost → 2894321.75

Example 3:
Q: What is the total margin for Product A in EMEA in Q1 2024?
A: Filter Product=A & Region=EMEA & FiscalYear=2024 & FiscalQuarter=Q1, then sum ProfitMargin → 0.18
"""

def answer_question(question: str) -> str:
    full_query = EXAMPLE_PROMPT + f"\nQ: {question}\nA:"
    try:
        result = qa(table=table, query=full_query)
        return result.get("answer", "No answer found.")
    except Exception as e:
        # Return the actual exception message so you can debug
        return f"❌ Pipeline error:\n{e}"

# 4) Gradio UI
iface = gr.Interface(
    fn=answer_question,
    inputs=gr.Textbox(lines=2, placeholder="Ask a basic question…", label="Your question"),
    outputs=gr.Textbox(lines=6, label="Answer"),
    title="SAP Profitability Q&A",
    description=(
        "Ask simple revenue/cost/margin questions on the synthetic SAP data. "
        "Powered by microsoft/tapex-base-finetuned-wtq with three few‐shot examples."
    ),
    allow_flagging="never",
)

if __name__ == "__main__":
    iface.launch(server_name="0.0.0.0", server_port=7860)