File size: 3,231 Bytes
250bef1
 
 
 
 
 
 
 
7a4584d
 
250bef1
30e6897
c259e81
f2b1f17
 
 
 
250bef1
f2b1f17
250bef1
f2b1f17
 
 
 
 
 
 
 
250bef1
 
f2b1f17
250bef1
 
 
 
 
 
7355023
250bef1
578200d
 
 
 
 
 
 
 
 
 
16cd8d6
 
 
 
 
 
 
29fe1af
578200d
 
d16d337
993440b
578200d
250bef1
16cd8d6
f2b1f17
 
 
7a4584d
250bef1
7a4584d
250bef1
 
 
 
 
7a4584d
250bef1
 
 
 
 
7a4584d
e1a487f
7a4584d
 
 
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 os
import google.generativeai as genai
import time

os.environ["GOOGLE_API_KEY"] = os.getenv("GOOGLE_API_KEY")
genai.configure(api_key=os.environ["GOOGLE_API_KEY"])

icons = {"assistant": "robot.png", "user": "man-kddi.png"}

model = genai.GenerativeModel('gemini-1.5-flash-latest')
prompt = """You are a programming teaching assistant named GenXAI(Generative eXpert AI), created by Pachaiappan [linkdin](https://www.linkedin.com/in/pachaiappan) an AI Specialist. Answer only the programming, error-fixing and code-related question that being asked. 
Important note, If Question non-related to coding or programming means, you have to say: 'Please ask only coding-related questions.' except greeting and those kind of questions "who are you", "who created you".
previous_chat:  
{chat_history}
Human: {human_input}
Chatbot:"""

previous_response = ""
def get_response(query):
    global previous_response
    
    for i in st.session_state['history']:
        if i is not None:
            previous_response += f"Human: {i[0]}\n Chatbot: {i[1]}\n"

    response = model.generate_content(prompt.format(human_input=query, chat_history=previous_response))
    st.session_state['history'].append((query, response.text))
    return response.text


def response_streaming(text):
    for i in text:
        yield i
        time.sleep(0.001)

st.title("GenXAi")
st.caption("I am Generative EXpert Assistant for Programming Related Task!")

st.markdown("""
    <style>
    .justified-text {
        text-align: justify;
    }
    </style>
    """, unsafe_allow_html=True)

with st.sidebar:
    st.header("ABOUT:")
    
    st.caption("""
        <div class="justified-text">
            This is GenXai (Generation Expert AI), designed to assist with programming-related questions. This AI can help you answer your coding queries, fix errors, and much more. Additionally, you can chat with GenXai to build and refine your questions, facilitating a more productive conversation.
        </div>
        """, unsafe_allow_html=True)
    
    for _ in range(17):
        st.write("") 
    st.subheader("Build By:")
    st.write("[Pachaiappan❤️](https://mr-vicky-01.github.io/Portfolio)")
    st.write("contact: [Email](mailto:[email protected])")

if 'messages' not in st.session_state:
    st.session_state.messages = [{'role': 'assistant', 'content': "I'm Here to help your programming realted questions😉"}]

if 'history' not in st.session_state:
    st.session_state.history = [] 

for message in st.session_state.messages:
    with st.chat_message(message['role'], avatar=icons[message['role']]):
        st.write(message['content'])
        
user_input = st.chat_input("Ask Your Questions 👉..")
if user_input:
    st.session_state.messages.append({'role': 'user', 'content': user_input})
    with st.chat_message("user", avatar="man-kddi.png"):
        st.write(user_input)
        
    with st.spinner("Thinking..."):
        response = get_response(user_input)
        
    with st.chat_message("user", avatar="robot.png"):
        st.write_stream(response_streaming(response))
        
    message = {"role": "assistant", "content": response}
    st.session_state.messages.append(message)