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()