File size: 4,030 Bytes
252ec19
 
5b1e2fb
252ec19
5b1e2fb
fadb49d
7949790
fadb49d
665fd62
fadb49d
665fd62
f6ac9e2
665fd62
 
 
252ec19
 
be25975
252ec19
be25975
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252ec19
 
04002a4
a428ba8
1e4e3dc
 
817156c
 
252ec19
1e4e3dc
 
817156c
252ec19
 
94480cd
 
 
3b4ba98
de3b55f
252ec19
b222e1b
 
 
e41414b
 
817156c
94480cd
 
 
 
e41414b
 
a428ba8
b2d1132
a428ba8
 
1e4e3dc
 
 
 
 
 
 
94480cd
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import streamlit as st
import openai
import os

# Securely fetch the OpenAI API key
#try:
openai.api_key = ('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')
#except openai.APIError as e:
    # Log the error for debugging purposes
    #st.error("An error occurred while communicating with the OpenAI API.")
    # Optionally, log more detailed information for debugging
    #print("Error details:", e)
    # You might also want to implement additional logic here, like retrying the request,
    # sending a notification to an administrator, or providing a default response.


KNOWN_MODELS = [
    # General ML models
    "Neural Networks", "Decision Trees", "Support Vector Machines", 
    "Random Forests", "Linear Regression", "Reinforcement Learning",
    "Logistic Regression", "k-Nearest Neighbors", "Naive Bayes",
    "Gradient Boosting Machines", "Regularization Techniques", 
    "Ensemble Methods", "Time Series Analysis",

    # Deep Learning models
    "Deep Learning", "Convolutional Neural Networks", 
    "Recurrent Neural Networks", "Transformer Models", 
    "Generative Adversarial Networks", "Autoencoders", 
    "Bidirectional LSTM", "Residual Networks (ResNets)", 
    "Variational Autoencoders",

    # Computer Vision models and techniques
    "Object Detection (e.g., YOLO, SSD)", "Semantic Segmentation",
    "Image Classification", "Face Recognition", "Optical Character Recognition (OCR)", 
    "Pose Estimation", "Style Transfer", "Image-to-Image Translation", 
    "Image Generation", "Capsule Networks",

    # NLP models and techniques
    "BERT", "GPT", "ELMo", "T5", "Word2Vec", "Doc2Vec", 
    "Topic Modeling", "Sentiment Analysis", "Text Classification", 
    "Machine Translation", "Speech Recognition", "Sequence-to-Sequence Models", 
    "Attention Mechanisms", "Named Entity Recognition", "Text Summarization"
]

def recommend_ai_model_via_gpt(description, dataset_description):
    combined_description = f"{description} Dataset: {dataset_description}"
    messages = [{"role": "user", "content": combined_description}]
    response = openai.ChatCompletion.create(model="gpt-4", messages=messages)
    return response['choices'][0]['message']['content'].strip()

def explain_recommendation(model_name):
    messages = [{"role": "user", "content": f"Why would {model_name} be a suitable choice for the application?"}]
    response = openai.ChatCompletion.create(model="gpt-4", messages=messages)
    return response['choices'][0]['message']['content'].strip()

# Streamlit UI
if 'show_dataset_description' not in st.session_state:
    st.session_state.show_dataset_description = False

st.image("./A8title.png")
st.title('Discover the best model for your GenAI App')

# Inserting blank space
st.write("")

st.markdown("<h4 style='font-size:20px;'>Describe what will your application do:</h4>", unsafe_allow_html=True)
description = st.text_area("", key="app_description")

if st.button("Next", key="next_to_dataset"):
    st.session_state.show_dataset_description = True

if st.session_state.show_dataset_description:
    st.markdown("<h4 style='font-size:20px;'>Describe your dataset for fine-tuning your model:</h4>", unsafe_allow_html=True)
    dataset_description = st.text_area("", key="dataset_description")
    if dataset_description:
        if st.button("Recommend AI Model", key="recommend_model_button"):
            recommended_model = recommend_ai_model_via_gpt(description, dataset_description)
            st.subheader(f"Recommended: {recommended_model}")
            explanation = explain_recommendation(recommended_model)
            st.write("Reason:", explanation)
            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", key="submit_feedback_key"):
                st.session_state.feedback_submitted = True
                if st.session_state.feedback_submitted:
                    st.success("Thank you for your feedback!")