Spaces:
Runtime error
Runtime error
import streamlit as st | |
import openai | |
import time | |
# Configuration de l'API OpenAI | |
openai.api_key = 'VOTRE_CLE_API_OPENAI' | |
# Fonction pour générer une réponse à partir du modèle OpenAI avec streaming | |
def generate_openai_response(prompt, history): | |
# Formatage de l'historique des messages pour OpenAI | |
history_openai_format = [{"role": "system", "content": "You are a helpful assistant."}] | |
for human, assistant in history: | |
history_openai_format.append({"role": "user", "content": human }) | |
history_openai_format.append({"role": "assistant", "content":assistant}) | |
history_openai_format.append({"role": "user", "content": prompt}) | |
# Requête à l'API avec streaming | |
response = openai.ChatCompletion.create( | |
model="gpt-4", # ou "gpt-3.5-turbo" | |
messages=history_openai_format, | |
temperature=0.7, | |
stream=True | |
) | |
# Collecte et affichage des morceaux de réponse | |
collected_messages = [] | |
for chunk in response: | |
if chunk['choices'][0]['delta'].get('content'): | |
collected_messages.append(chunk['choices'][0]['delta']['content']) | |
full_response = ''.join(collected_messages) | |
# Affichage de la réponse en temps réel | |
st.write(full_response) | |
time.sleep(0.1) # Ajouter un léger délai pour la simulation de la "pensée" | |
return ''.join(collected_messages) | |
# Interface utilisateur avec Streamlit | |
st.title("Chatbot avec OpenAI") | |
st.write("Ce chatbot utilise le modèle OpenAI pour répondre à vos questions.") | |
# Entrée utilisateur | |
user_input = st.text_area("Vous:", "") | |
history = [] | |
if st.button("Envoyer"): | |
if user_input: | |
with st.spinner("Génération de la réponse..."): | |
response = generate_openai_response(user_input, history) | |
history.append((user_input, response)) | |
st.write("Chatbot:", response) | |
else: | |
st.warning("Veuillez entrer une question ou un message.") | |