SAPFICOCHATBOT / app.py
Amrith2k6's picture
Update app.py
7c05927 verified
import streamlit as st
import requests
import os
# Configuration
API_URL = "https://openrouter.ai/api/v1/chat/completions"
API_KEY = os.environ.get("SAPFICOKEY")
MODEL_NAME = "qwen/qwen-2.5-72b-instruct"
# Simple system prompt
SYSTEM_PROMPT = """You are an expert SAP S/4HANA FICO consultant.
Answer questions for students and professionals in Commerce, CS, MBA Finance, and SAP domains.
Keep answers clear, structured, and professional."""
# Quick suggestions
SUGGESTIONS = [
"What is SAP S/4HANA FICO?",
"Explain Universal Journal (ACDOCA)",
"Difference between FI and CO?",
"S/4HANA migration paths?",
"Career in SAP FICO?"
]
# Page config
st.set_page_config(page_title="SAP FICO Chatbot", page_icon="⚖️", layout="centered")
# Title
st.title("⚖️ SAP S/4HANA FICO Chatbot")
st.markdown("**Powered by Qwen via OpenRouter**")
# Sidebar
with st.sidebar:
st.header("Controls")
if st.button("🔄 Reset", use_container_width=True):
st.session_state.clear()
st.rerun()
st.info("Model: qwen-2.5-72b-instruct")
# Quick suggestions
st.markdown("### 💡 Quick Questions:")
cols = st.columns(5)
for i, prompt in enumerate(SUGGESTIONS):
with cols[i]:
if st.button(prompt, key=f"q{i}", use_container_width=True):
st.session_state.quick_query = prompt
# Input area
st.markdown("### 📝 Your Question:")
user_input = st.text_area(
"Enter your SAP FICO query",
value=st.session_state.get("quick_query", ""),
height=100,
placeholder="e.g., What is the Universal Journal?"
)
# Submit button
if st.button("🚀 Submit Query", type="primary", use_container_width=True):
if not user_input:
st.warning("Please enter a question")
elif not API_KEY:
st.error("API Key not configured!")
else:
with st.spinner("Getting answer..."):
try:
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": MODEL_NAME,
"messages": [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_input}
],
"max_tokens": 800
}
response = requests.post(API_URL, headers=headers, json=payload, timeout=30)
response.raise_for_status()
answer = response.json()['choices'][0]['message']['content']
# Display result
st.markdown("### ✅ Answer:")
st.info(answer)
except Exception as e:
st.error(f"Error: {str(e)}")
# Footer
st.markdown("---")
st.caption("SAP FICO Chatbot | MIT License")