KitchenCreators / app.py
pyresearch's picture
Update app.py
5e54628 verified
import os
import json
import requests
import streamlit as st
import pandas as pd
from sentence_transformers import CrossEncoder
import numpy as np
st.image("demo.jpeg")
np.set_printoptions(suppress=True, precision=4)
model = CrossEncoder('vectara/hallucination_evaluation_model')
pd.set_option('display.width', 100)
pd.set_option('display.max_colwidth', None) # Use None to display full content without truncation
def vectara_query(query: str, config: dict) -> None:
corpus_key = [
{
"customerId": config["customer_id"],
"corpusId": config["corpus_id"],
"lexicalInterpolationConfig": {"lambda": config["lambda_val"]},
}
]
data = {
"query": [
{
"query": query,
"start": 0,
"numResults": config["top_k"],
"contextConfig": {
"sentencesBefore": 2,
"sentencesAfter": 2,
},
"corpusKey": corpus_key,
"summary": [
{
"responseLang": "eng",
"maxSummarizedResults": 5,
}
]
}
]
}
headers = {
"x-api-key": config["api_key"],
"customer-id": config["customer_id"],
"Content-Type": "application/json",
}
response = requests.post(
headers=headers,
url="https://api.vectara.io/v1/query",
data=json.dumps(data),
)
if response.status_code != 200:
print(
"Query failed %s",
f"(code {response.status_code}, reason {response.reason}, details "
f"{response.text})",
)
return []
result = response.json()
responses = result["responseSet"][0]["response"]
documents = result["responseSet"][0]["document"]
summary = result["responseSet"][0]["summary"][0]["text"]
res = [[r['text'], r['score']] for r in responses]
return res, summary
# Set the environment variables
os.environ['VECTARA_API_KEY'] = 'zwt_MD0gpPStP7DARQICFDZ4XIolYlRvi7qYm61HcA'
os.environ['VECTARA_CORPUS_ID'] = '5'
os.environ['VECTARA_CUSTOMER_ID'] = '809312420'
# Load config from environment variables
api_key = os.environ.get("VECTARA_API_KEY", "")
customer_id = os.environ.get("VECTARA_CUSTOMER_ID", "")
corpus_id = os.environ.get("VECTARA_CORPUS_ID", "")
config = {
"api_key": str(api_key),
"customer_id": str(customer_id),
"corpus_id": str(corpus_id),
"lambda_val": 0.025,
"top_k": 10,
}
# Streamlit app
st.title("KitchenCreators App")
# Input for the query
query = st.text_input("Enter your query:", "What does Kitchen Creators do?")
# Button to trigger the query
if st.button("Run Query"):
results, summary = vectara_query(query, config)
# Display summary
st.header("Summary")
st.write(summary)
# Additional processing
st.header("Additional Processing")
# Get texts and scores
texts = [r[0] for r in results[:5]]
scores = [model.predict([text, summary]) for text in texts]
# Create DataFrame
df = pd.DataFrame({'fact': texts, 'HHEM score': scores})
# Display DataFrame
st.write(df)