File size: 2,359 Bytes
252ec19
 
 
 
d8ba00f
252ec19
 
 
 
 
 
 
d8ba00f
 
 
25cc5a2
d8ba00f
 
 
 
 
 
 
 
 
252ec19
 
d8ba00f
 
 
25cc5a2
 
d8ba00f
 
 
 
 
 
 
 
252ec19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
59
60
61
62
63
64
65
66
import streamlit as st
import openai

# Initialize the OpenAI API
openai.api_key = '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'  # Remember never to expose API keys in code

KNOWN_MODELS = [
    "Neural Networks", "Decision Trees", "Support Vector Machines", 
    "Random Forests", "Linear Regression", "Reinforcement Learning"
]

def recommend_ai_model_via_gpt(description):
    messages = [
        {"role": "user", "content": f"Given the application described as: '{description}', which AI model would be most suitable?"}
    ]

    try:
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=messages
        )
        recommendation = response['choices'][0]['message']['content'].strip()
        return recommendation
    except openai.error.OpenAIError as e:
        return f"Error: {e}"

def explain_recommendation(model_name):
    messages = [
        {"role": "user", "content": f"Why would {model_name} be a suitable choice for the application?"}
    ]
    
    try:
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=messages
        )
        explanation = response['choices'][0]['message']['content'].strip()
        return explanation
    except openai.error.OpenAIError as e:
        return f"Error: {e}"

# Streamlit UI
st.title('AI Model Recommender')

description = st.text_area("Describe your application:", "")
if st.button("Recommend AI Model"):
    if description:
        recommended_model = recommend_ai_model_via_gpt(description)
        
        # Validate recommended model
        if recommended_model not in KNOWN_MODELS:
            st.warning("The recommendation is ambiguous. Please refine your description or consult an expert.")
        else:
            st.subheader(f"Recommended AI Model: {recommended_model}")
            explanation = explain_recommendation(recommended_model)
            st.write("Reason:", explanation)

            # Collecting rating and feedback through Streamlit
            rating = st.slider("Rate the explanation from 1 (worst) to 5 (best):", 1, 5)
            feedback = st.text_input("Any additional feedback?")

            if st.button("Submit Feedback"):
                st.success("Thank you for your feedback!")
    else:
        st.warning("Please provide a description.")