File size: 4,306 Bytes
002b092
9f54a3b
 
 
eb4a24d
dab5cc9
9f54a3b
eb4a24d
9f54a3b
 
8ff67d3
 
9f54a3b
8ff67d3
 
2a7dbb2
9f54a3b
 
8ff67d3
 
 
98c29f4
8ff67d3
0ca86ba
9f54a3b
eb4a24d
142827c
 
 
 
9f54a3b
eb4a24d
 
 
142827c
eb4a24d
 
 
142827c
eb4a24d
 
98c29f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142827c
eb4a24d
2a7dbb2
93979c3
eabc41f
 
 
 
 
 
 
 
8ff67d3
9f54a3b
 
 
 
 
 
 
 
 
 
 
 
eb4a24d
9f54a3b
 
 
 
 
 
 
002b092
 
 
 
 
 
 
eb4a24d
002b092
 
 
 
 
 
eb4a24d
002b092
 
 
 
8ff67d3
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import numpy as np
import streamlit as st
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()

# Initialize the OpenAI client
client = OpenAI(
  base_url="https://api-inference.huggingface.co/v1",
  api_key=os.environ.get('HUGGINGFACEHUB_API_TOKEN')  # Replace with your token
)

# Create supported model
model_links = {
    "Zephyr-7B": "HuggingFaceH4/zephyr-7b-beta"
}

# Pull info about the model to display
model_info = {
    "Meta-Llama-3-8B": {
        'description': """The **Meta-Llama 3 (8B)** is a cutting-edge **Large Language Model (LLM)** developed by Meta's AI team, comprising over 8 billion parameters. This model has been specifically fine-tuned for educational purposes to excel in interactive question-and-answer sessions.\n"""
    }
}

# Reset the conversation
def reset_conversation():
    st.session_state.conversation = []
    st.session_state.messages = []
    return None

# App title and description
st.title("Sci-Mom 👩‍🏫 ")
st.subheader("AI chatbot for Solving your doubts 📚 :)")

# Custom description for SciMom in the sidebar
st.sidebar.write("Built for my mom, with love ❤️. This model is pretrained with textbooks of Science NCERT.")
st.sidebar.write("Base-Model used: Meta Llama, trained using: Docker AutoTrain.")

# Add technical details in the sidebar
st.sidebar.markdown(model_info["Meta-Llama-3-8B"]['description'])
st.sidebar.markdown("""
### Meta-Llama 3 (8B)
Yo, this **Meta-Llama 3 (8B)** is a next-level AI model built by Meta's genius squad. It packs a whopping **8 billion parameters** and is totally fine-tuned for school stuff, especially science Q&As.

### How it’s Trained:
We fed it all the juicy info from **NCERT science textbooks** (yep, the same ones you use), covering Physics, Chem, Bio, and more. With **Docker AutoTrain**, we made sure it learns fast and scales like a boss.

### What it Does:
This Llama’s mission? Make science super easy. Whether you're stuck on a tricky topic or just need a quick answer, it’s here to help you (and your teacher) break things down like a pro.

### Cool Stuff:
- **Knows Its Stuff**: It's laser-focused on science questions, so no random answers.
- **Super Smart**: Whether it's easy or advanced, it’s got you covered.
- **Trustworthy**: It's trained to get things right, so you can count on its answers.

Basically, it's like having a personal science tutor right in your pocket.
""")

st.sidebar.markdown("By Gokulnath ♔")

# If model selection was needed (now removed)
selected_model = "Zephyr-7B"  # Only one model remains

if "prev_option" not in st.session_state:
    st.session_state.prev_option = selected_model

if st.session_state.prev_option != selected_model:
    st.session_state.messages = []
    st.session_state.prev_option = selected_model
    reset_conversation()

# Pull in the model we want to use
repo_id = model_links[selected_model]

# Initialize chat history
if "messages" not in st.session_state:
    st.session_state.messages = []

# Display chat messages from history on app rerun
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

# Accept user input
if prompt := st.chat_input("Ask Scimom!"):
    # Display user message in chat message container
    with st.chat_message("user"):
        st.markdown(prompt)
    st.session_state.messages.append({"role": "user", "content": prompt})

    # Display assistant response in chat message container
    with st.chat_message("assistant"):
        try:
            stream = client.chat.completions.create(
                model=model_links[selected_model],
                messages=[
                    {"role": m["role"], "content": m["content"]}
                    for m in st.session_state.messages
                ],
                temperature=0.5,  # Default temperature setting
                stream=True,
                max_tokens=3000,
            )
            response = st.write_stream(stream)

        except Exception as e:
            response = "😵‍💫 Something went wrong. Please try again later."
            st.write(response)
            st.write("This was the error message:")
            st.write(e)

    st.session_state.messages.append({"role": "assistant", "content": response})