Spaces:
Sleeping
Sleeping
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) |