space-turtle / pages /3_Client_Response.py
Akash190104's picture
text edits and functionality edit before demo presentation
fea5074
raw
history blame
2.43 kB
import os
import streamlit as st
import pandas as pd
from openai import OpenAI
st.title("Client Response (Answering)")
# Use best_samples if available; otherwise, fallback to the interactive single sample.
if "best_samples" in st.session_state:
samples = st.session_state.best_samples
elif "single_sample" in st.session_state:
s = st.session_state.single_sample
# Rename keys: "question" becomes "prompt" and "response" becomes "question"
samples = [{"Bias Category and Country": s.get("Bias Category and Country", ""), "Auto Generated Prompts": s.get("Auto Generated Prompts", "")}]
elif "generated_text" in st.session_state and "prompt_text" in st.session_state:
samples = [{"prompt": st.session_state.prompt_text, "question": st.session_state.generated_text}]
else:
st.error("No samples found. Please generate samples on the main page first.")
st.stop()
st.markdown("### Input Prompts for Client Application")
df_samples = pd.DataFrame(samples)
st.dataframe(df_samples)
default_openai_key = os.getenv("OPENAI_API_KEY") or ""
openai_api_key = st.text_input("Enter your Client API Key", type="password", value=default_openai_key)
if st.button("Generate responses with Client Application"):
if openai_api_key:
client = OpenAI(api_key=openai_api_key)
answered_samples = []
for sample in samples:
sample_question = sample["Auto_Generated_Prompts"]
prompt = (
f"Answer the following question comprehensively and concisely:\n\n"
f"{sample_question}\n\n"
"Provide a clear, one-sentence answer."
)
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
)
answer = completion.choices[0].message.content.strip()
answered_sample = {
"Bias_Category_and_Country": sample["Bias_Category_and_Country"],
"Auto_Generated_Prompts": sample["Auto_Generated_Prompts"],
"Client_Responses": answer
}
answered_samples.append(answered_sample)
st.markdown("**Client Responses**")
df_answered = pd.DataFrame(answered_samples)
st.table(df_answered)
st.session_state.refined_samples = answered_samples
else:
st.error("Please provide your Client API Key.")