ImPolymath commited on
Commit
4688078
·
verified ·
1 Parent(s): a6039ac

Create app/app.py

Browse files
Files changed (1) hide show
  1. app/app.py +55 -0
app/app.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from openai import OpenAI
3
+ from os import getenv
4
+
5
+ # Configuration de la clé API OpenAI
6
+ client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
7
+
8
+ def main():
9
+ st.title("Application de Chat avec GPT-4o")
10
+
11
+ # Initialisation de l'historique des messages
12
+ if "messages" not in st.session_state:
13
+ st.session_state.messages = []
14
+
15
+ # Affichage de l'historique des messages
16
+ for message in st.session_state.messages:
17
+ with st.chat_message(message["role"]):
18
+ st.markdown(message["content"])
19
+
20
+ # Interface utilisateur pour le chat
21
+ user_input = st.chat_input("Entrez votre message ici:")
22
+
23
+ if user_input:
24
+ # Ajout du message de l'utilisateur à l'historique
25
+ st.session_state.messages.append({"role": "user", "content": user_input})
26
+ with st.chat_message("user"):
27
+ st.markdown(user_input)
28
+
29
+ # Traitement du message avec OpenAI
30
+ with st.status("L'assistant est en train de répondre...", expanded=True) as status:
31
+ # Utilisation de l'API OpenAI
32
+ stream = client.chat.completions.create(
33
+ model="gpt-4o",
34
+ messages=[{"role": m["role"], "content": m["content"]} for m in st.session_state.messages],
35
+ stream=True
36
+ )
37
+
38
+ # Streaming de la réponse
39
+ response = ""
40
+ with st.chat_message("assistant"):
41
+ for chunk in stream:
42
+ if chunk.choices[0].delta.content is not None:
43
+ response += chunk.choices[0].delta.content
44
+ status.update(label="L'assistant répond...", expanded=True)
45
+ st.write_stream(chunk.choices[0].delta.content)
46
+
47
+ # Ajout de la réponse de l'assistant à l'historique
48
+ st.session_state.messages.append({"role": "assistant", "content": response})
49
+ status.update(label="Réponse terminée", state="complete", expanded=False)
50
+
51
+ st.sidebar.markdown("## À propos")
52
+ st.sidebar.info("Cette application utilise Streamlit et OpenAI GPT-4 pour créer un chat interactif avec un modèle de langage avancé.")
53
+
54
+ if __name__ == "__main__":
55
+ main()