ImPolymath commited on
Commit
0f33e60
·
verified ·
1 Parent(s): 58206a4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -21
app.py CHANGED
@@ -1,6 +1,8 @@
1
  import streamlit as st
2
  from openai import OpenAI
3
  from os import getenv
 
 
4
 
5
  # fonction pour lire et retourner le contenu de fichiers textes
6
  def lire_fichier(nom_fichier):
@@ -13,13 +15,44 @@ def lire_fichier(nom_fichier):
13
  except Exception as e:
14
  return f"Une erreur s'est produite lors de la lecture du fichier : {str(e)}"
15
 
16
-
17
  # Configuration de la clé API OpenAI
18
  client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
19
 
20
  # Définition du prompt système initial
21
  SYSTEM_PROMPT = f"{lire_fichier('linguascribe.prompt')}"
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  def main():
25
  st.title("Application de Chat avec GPT-4")
@@ -38,28 +71,18 @@ def main():
38
  # Interface utilisateur pour le chat
39
  user_input = st.chat_input("Entrez votre message ici:")
40
 
 
 
 
 
41
  if user_input:
42
- # Ajout du message de l'utilisateur à l'historique
43
- st.session_state.messages.append({"role": "user", "content": user_input})
44
- with st.chat_message("user"):
45
- st.markdown(user_input)
46
 
47
- # Traitement du message avec OpenAI
48
- with st.chat_message("assistant"):
49
- message_placeholder = st.empty()
50
- full_response = ""
51
- for response in client.chat.completions.create(
52
- model="gpt-4o",
53
- messages=st.session_state.messages,
54
- stream=True,
55
- temperature=0.1, # Ajustement de la température à 0.1
56
- ):
57
- full_response += (response.choices[0].delta.content or "")
58
- message_placeholder.markdown(full_response + "▌")
59
- message_placeholder.markdown(full_response)
60
-
61
- # Ajout de la réponse de l'assistant à l'historique
62
- st.session_state.messages.append({"role": "assistant", "content": full_response})
63
 
64
  st.sidebar.markdown("## À propos")
65
  st.sidebar.info("Cette application utilise Streamlit et OpenAI GPT-4 pour créer un chat interactif avec un modèle de langage avancé.")
 
1
  import streamlit as st
2
  from openai import OpenAI
3
  from os import getenv
4
+ from streamlit_audiorecorder import st_audiorecorder
5
+ import tempfile
6
 
7
  # fonction pour lire et retourner le contenu de fichiers textes
8
  def lire_fichier(nom_fichier):
 
15
  except Exception as e:
16
  return f"Une erreur s'est produite lors de la lecture du fichier : {str(e)}"
17
 
 
18
  # Configuration de la clé API OpenAI
19
  client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
20
 
21
  # Définition du prompt système initial
22
  SYSTEM_PROMPT = f"{lire_fichier('linguascribe.prompt')}"
23
 
24
+ def transcribe_audio(audio_file):
25
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
26
+ temp_audio.write(audio_file)
27
+ temp_audio.flush()
28
+
29
+ with open(temp_audio.name, "rb") as audio_file:
30
+ transcript = client.audio.transcriptions.create(
31
+ model="whisper-1",
32
+ file=audio_file
33
+ )
34
+
35
+ return transcript.text
36
+
37
+ def process_message(message):
38
+ st.session_state.messages.append({"role": "user", "content": message})
39
+ with st.chat_message("user"):
40
+ st.markdown(message)
41
+
42
+ with st.chat_message("assistant"):
43
+ message_placeholder = st.empty()
44
+ full_response = ""
45
+ for response in client.chat.completions.create(
46
+ model="gpt-4o",
47
+ messages=st.session_state.messages,
48
+ stream=True,
49
+ temperature=0.1,
50
+ ):
51
+ full_response += (response.choices[0].delta.content or "")
52
+ message_placeholder.markdown(full_response + "▌")
53
+ message_placeholder.markdown(full_response)
54
+
55
+ st.session_state.messages.append({"role": "assistant", "content": full_response})
56
 
57
  def main():
58
  st.title("Application de Chat avec GPT-4")
 
71
  # Interface utilisateur pour le chat
72
  user_input = st.chat_input("Entrez votre message ici:")
73
 
74
+ # Ajout de l'enregistreur audio
75
+ st.write("Ou enregistrez votre message audio :")
76
+ audio_bytes = st_audiorecorder()
77
+
78
  if user_input:
79
+ process_message(user_input)
 
 
 
80
 
81
+ if len(audio_bytes) > 0:
82
+ st.audio(audio_bytes, format="audio/wav")
83
+ transcription = transcribe_audio(audio_bytes)
84
+ st.write(f"Transcription : {transcription}")
85
+ process_message(transcription)
 
 
 
 
 
 
 
 
 
 
 
86
 
87
  st.sidebar.markdown("## À propos")
88
  st.sidebar.info("Cette application utilise Streamlit et OpenAI GPT-4 pour créer un chat interactif avec un modèle de langage avancé.")