Spaces:
Sleeping
Sleeping
File size: 2,005 Bytes
a5ece8b aa97025 0e84c33 887b999 02d55fb 0b8ba87 0e84c33 02d55fb 0e84c33 13050f3 02d55fb 0b8ba87 02d55fb 0e84c33 02d55fb 1c34919 02d55fb 13050f3 1c34919 13050f3 79c9d08 0e84c33 e784f1e 0e84c33 02d55fb 13050f3 02d55fb 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 56 57 58 |
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) TAPAS pipeline
qa = pipeline(
"table-question-answering",
model="google/tapas-base-finetuned-wtq",
tokenizer="google/tapas-base-finetuned-wtq",
device=-1
)
# 3) Four few-shot examples: sum revenue, sum cost, sum margin, **mean margin**
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
Example 4:
Q: What is the average profit margin for Product A in EMEA in Q1 2024?
A: Filter Product=A & Region=EMEA & FiscalYear=2024 & FiscalQuarter=Q1, then mean ProfitMargin β 0.18
"""
def answer_question(question: str) -> str:
prompt = EXAMPLE_PROMPT + f"\nQ: {question}\nA:"
try:
out = qa(table=table, query=prompt)
return out.get("answer", "No answer found.")
except Exception as e:
return f"β Error: {e}"
# 4) Gradio UI
iface = gr.Interface(
fn=answer_question,
inputs=gr.Textbox(lines=2, placeholder="e.g. What is the average profit margin by region?", label="Your question"),
outputs=gr.Textbox(lines=4, label="Answer"),
title="SAP Profitability Q&A (TAPAS)",
description=(
"Ask simple sum/mean questions on your SAP data. \n"
"Powered by google/tapas-base-finetuned-wtq with four few-shot examples."
),
allow_flagging="never",
)
if __name__ == "__main__":
iface.launch(server_name="0.0.0.0", server_port=7860) |