Spaces:
Paused
Paused
| import streamlit as st | |
| from openai import OpenAI | |
| from os import getenv | |
| # Configuration de la clé API OpenAI | |
| client = OpenAI(api_key=getenv("OPENAI_API_KEY")) | |
| def main(): | |
| st.title("Application de Chat avec GPT-4o") | |
| # Initialisation de l'historique des messages | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| # Affichage de l'historique des messages | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| # Interface utilisateur pour le chat | |
| user_input = st.chat_input("Entrez votre message ici:") | |
| if user_input: | |
| # Ajout du message de l'utilisateur à l'historique | |
| st.session_state.messages.append({"role": "user", "content": user_input}) | |
| with st.chat_message("user"): | |
| st.markdown(user_input) | |
| # Traitement du message avec OpenAI | |
| with st.status("L'assistant est en train de répondre...", expanded=True) as status: | |
| # Utilisation de l'API OpenAI | |
| stream = client.chat.completions.create( | |
| model="gpt-4o", | |
| messages=[{"role": m["role"], "content": m["content"]} for m in st.session_state.messages], | |
| stream=True | |
| ) | |
| # Streaming de la réponse | |
| response = "" | |
| with st.chat_message("assistant"): | |
| for chunk in stream: | |
| if chunk.choices[0].delta.content is not None: | |
| response += chunk.choices[0].delta.content | |
| status.update(label="L'assistant répond...", expanded=True) | |
| st.write_stream(chunk.choices[0].delta.content) | |
| # Ajout de la réponse de l'assistant à l'historique | |
| st.session_state.messages.append({"role": "assistant", "content": response}) | |
| status.update(label="Réponse terminée", state="complete", expanded=False) | |
| st.sidebar.markdown("## À propos") | |
| st.sidebar.info("Cette application utilise Streamlit et OpenAI GPT-4 pour créer un chat interactif avec un modèle de langage avancé.") | |
| if __name__ == "__main__": | |
| main() |