Regino
sdnfkd
c83e41c
import streamlit as st
import speech_recognition as sr
from openai import OpenAI
# Initialize session state for chat visibility
if "chat_started" not in st.session_state:
st.session_state.chat_started = False
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
if "feedback" not in st.session_state:
st.session_state.feedback = {}
st.set_page_config(page_title="πŸ’¬Chatbot", page_icon="πŸ’¬", layout="wide")
# 🎯 Welcome Screen (Only Show if Chat Not Started)
if not st.session_state.chat_started:
st.title("πŸ€– Welcome to Deepseek AI Chatbot!")
st.write("A smart chatbot powered by the ne model Deepseek R1, designed to assist you with text generation.")
st.subheader("✨ Features")
st.markdown("""
- πŸ“ **Generate content**: Stories, articles, code, poems, dialogues, and more!
- πŸŽ™οΈ **Voice Input**: Speak instead of typing your prompt.
- 🎭 **Customizable Tone & Format**: Choose between formal, informal, humorous, technical styles.
- βš™οΈ **Adjustable Creativity**: Control randomness with temperature settings.
- πŸ“œ **Chat History**: Review past conversations and feedback.
""")
if st.button("πŸš€ Start Chat"):
st.session_state.chat_started = True
st.rerun()
st.stop()
st.title("πŸ€– Deepseek AI Chatbot!")
# 🎀 Function to capture voice input
def get_voice_input():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
st.info("🎀 Listening... Speak now!")
try:
audio = recognizer.listen(source, timeout=5)
text = recognizer.recognize_google(audio)
return text
except sr.UnknownValueError:
st.error("πŸ˜• Could not understand the audio.")
except sr.RequestError:
st.error("πŸ”Œ Speech Recognition service unavailable.")
return ""
# 🎀 Voice Input Button
if st.button("🎀 Speak Prompt"):
voice_text = get_voice_input()
if voice_text:
st.session_state["user_prompt"] = voice_text
else:
st.warning("No voice input detected.")
# πŸ“ User Input Text Area
user_prompt = st.text_area("Enter your prompt:", st.session_state.get("user_prompt", ""))
# βš™οΈ Sidebar Settings
st.sidebar.header("βš™οΈ Settings")
output_format = st.sidebar.selectbox("Select Output Format", ["Story", "Poem", "Article", "Code", "Dialogue"])
tone = st.sidebar.selectbox("Select Tone/Style", ["Formal", "Informal", "Humorous", "Technical"])
temperature = st.sidebar.slider("Creativity Level (Temperature)", 0.0, 1.0, 0.7)
max_tokens = st.sidebar.slider("Response Length (Max Tokens)", 100, 1024, 500)
creative_mode = st.sidebar.checkbox("Enable Creative Mode", value=True)
# πŸ“œ Chat History in Sidebar
st.sidebar.header("πŸ“œ Chat History")
if st.sidebar.button("πŸ—‘οΈ Clear Chat History"):
st.session_state.chat_history = []
st.session_state.feedback = {}
with st.sidebar.expander("πŸ” View Chat History", expanded=False):
for i, chat in enumerate(reversed(st.session_state.chat_history)):
st.markdown(f"**User:** {chat['user']}")
bot_preview = chat['bot'][:200] + ("..." if len(chat['bot']) > 200 else "")
st.markdown(f"**Bot:** {bot_preview}")
if len(chat['bot']) > 200:
if st.toggle(f"πŸ“– Show Full Response ({i+1})", key=f"toggle_{i}"):
st.markdown(chat['bot'])
feedback_value = st.session_state.feedback.get(chat['user'], "No Feedback Given")
st.markdown(f"**Feedback:** {feedback_value}")
st.markdown("---")
response_container = st.empty()
feedback_container = st.empty()
# πŸš€ Generate Response
if st.button("Generate Response"):
if user_prompt.strip():
client = OpenAI(
base_url="https://integrate.api.nvidia.com/v1",
api_key="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"
)
messages = [{"role": "user", "content": f"Generate a {output_format.lower()} in {tone.lower()} style: {user_prompt}"}]
try:
completion = client.chat.completions.create(
model="tiiuae/falcon3-7b-instruct",
messages=messages,
temperature=temperature,
top_p=0.9 if creative_mode else 0.7,
max_tokens=max_tokens,
stream=True
)
response_text = ""
progress_text = st.empty()
for chunk in completion:
if chunk.choices[0].delta.content is not None:
response_text += chunk.choices[0].delta.content
progress_text.markdown(f"### Generating... ⏳\n{response_text}")
progress_text.empty()
response_container.markdown(f"### Generated Response\n{response_text}")
chat_entry = {"user": user_prompt, "bot": response_text}
st.session_state.chat_history.append(chat_entry)
feedback = feedback_container.radio(
"Was this response helpful?",
["πŸ‘ Yes", "πŸ‘Ž No"],
index=None,
key=f"feedback_{len(st.session_state.chat_history)}",
horizontal=True
)
st.session_state.feedback[user_prompt] = feedback
except Exception as e:
st.error(f"❌ Error: {e}")