File size: 2,299 Bytes
05b5eca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import os
from dotenv import load_dotenv
load_dotenv()

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 = [{"prompt": s.get("question", ""), "question": s.get("response", "")}]
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("### Samples for Answering")
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("Answer Samples with Client Model"):
    if openai_api_key:
        client = OpenAI(api_key=openai_api_key)
        answered_samples = []
        for sample in samples:
            sample_question = sample["question"]
            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 = {
                "prompt": sample["prompt"],
                "question": sample["question"],
                "answer": answer
            }
            answered_samples.append(answered_sample)
        st.markdown("**Answered Samples:**")
        df_answered = pd.DataFrame(answered_samples)
        st.dataframe(df_answered)
        st.session_state.refined_samples = answered_samples
    else:
        st.error("Please provide your Client API Key.")