starwars-chat / utils.py
github-actions
Sync updates from source repository
86ad827
raw
history blame
2.35 kB
import os
import requests
import json
import re
import streamlit as st
headers = {
'Content-Type': 'application/json',
'Accept': '*/*'
}
def thumbs_feedback(feedback, **kwargs):
"""
Sends feedback to Amplitude Analytics
"""
send_amplitude_data(
user_query=kwargs.get("user_query", "No user input"),
chat_response=kwargs.get("chat_response", "No bot response"),
demo_name=kwargs.get("demo_name", "Unknown"),
language = kwargs.get("response_language", "Unknown"),
feedback=feedback["score"],
)
st.session_state.feedback_key += 1
def send_amplitude_data(user_query, chat_response, demo_name, language, feedback=None):
amplitude_api_key = os.getenv('AMPLITUDE_TOKEN')
if not amplitude_api_key:
return
data = {
"api_key": amplitude_api_key,
"events": [{
"device_id": st.session_state.device_id,
"event_type": "submitted_query",
"event_properties": {
"Space Name": demo_name,
"Demo Type": "chatbot",
"query": user_query,
"response": chat_response,
"Response Language": language
}
}]
}
if feedback:
data["events"][0]["event_properties"]["feedback"] = feedback
response = requests.post('https://api2.amplitude.com/2/httpapi', headers=headers, data=json.dumps(data))
if response.status_code != 200:
print(f"Amplitude request failed with status code {response.status_code}. Response Text: {response.text}")
def escape_dollars_outside_latex(text):
# Define a regex pattern to find LaTeX equations (either single $ or double $$)
pattern = re.compile(r'(\$\$.*?\$\$|\$.*?\$)')
latex_matches = pattern.findall(text)
# Placeholder to temporarily store LaTeX equations
placeholders = {}
for i, match in enumerate(latex_matches):
placeholder = f'__LATEX_PLACEHOLDER_{i}__'
placeholders[placeholder] = match
text = text.replace(match, placeholder)
# Escape dollar signs in the rest of the text
text = text.replace('$', '\\$')
# Replace placeholders with the original LaTeX equations
for placeholder, original in placeholders.items():
text = text.replace(placeholder, original)
return text