Files
wehub-resource-sync 1dacb4cc91
lint PR / linter (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:53 +08:00

79 lines
2.5 KiB
Python

import os
import pandas as pd
import requests
import streamlit as st
api_host = os.environ.get("PATHWAY_HOST", "localhost")
api_port = os.environ.get("PATHWAY_PORT", 8000)
with st.sidebar:
st.markdown(
"## How to query your data\n"
"Enter your question about financial data\n"
"Example: What is the average quarterly net income achieved by all companies in the fourth quarter?"
)
st.markdown("---")
st.markdown("# Units")
st.markdown(
"⚠️ The revenue and net income are expressed in millions of dollars,"
" the eps is in dollars per share."
)
st.markdown("---")
st.markdown("# About")
st.markdown(
"Financial LLM app to synthesize on the fly the data in your financial documents."
"It uses Pathway's [LLM App features](https://github.com/pathwaycom/llm-app) "
"to build and maintain a real-time database and synthesize your documents "
" using LLM(Large Language Model) and store the data in PostgreSQL.\n"
)
st.markdown(
"""[View the source code on GitHub](
https://github.com/pathwaycom/llm-app/templates/unstructured_to_sql_on_the_fly/app.py)"""
)
# Streamlit UI elements
st.title("📈 Financial summary with LLM App")
question = st.text_input(
"Search for something",
placeholder="What summary are looking for?",
)
def json_to_table(json_value):
result = ""
for row in json_value:
for col_value in row:
result = result + str(col_value) + "\t"
result = result + "\n"
return result
# Handle Discounts API request if data source is selected and a question is provided
if question:
url = f"http://{api_host}:{api_port}/"
try:
data = {"user": "user", "query": question}
response = requests.post(url, json=data)
if response.status_code == 200:
response_JSON = response.json()
sql_query = response_JSON[0]
answer = response_JSON[1]
dataframe = pd.DataFrame.from_records(answer)
st.write("### Answer")
st.write("Resulting SQL query:")
st.write(sql_query)
st.write("SQL Answer:")
st.dataframe(dataframe)
else:
st.error(
f"Failed to send data to Finance API. Status code: {response.status_code}"
)
except Exception as e:
st.write("### Parsing error:")
st.write("Couldn't parse the entry.")
st.write(str(e))