File size: 1,851 Bytes
5dd65e3
 
 
67943cd
5dd65e3
 
 
 
 
 
67943cd
5dd65e3
 
 
67943cd
5dd65e3
 
 
 
 
 
 
67943cd
5dd65e3
 
 
 
 
 
 
 
 
67943cd
5dd65e3
 
 
 
 
 
67943cd
5dd65e3
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import openai
import streamlit as st

# Barre latérale pour l'API Key et les liens utiles
with st.sidebar:
    openai_api_key = st.text_input("Clé API OpenAI", key="chatbot_api_key", type="password")
    st.markdown("[Obtenez une clé API OpenAI](https://platform.openai.com/account/api-keys)")
    st.markdown("[Voir le code source](https://github.com/streamlit/llm-examples/blob/main/Chatbot.py)")
    st.markdown("[![Ouvrir dans GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/streamlit/llm-examples?quickstart=1)")

# Titre et description du chatbot
st.title("💬 Chatbot")
st.caption("🚀 Un chatbot Streamlit propulsé par OpenAI")

# Initialisation des messages dans la session
if "messages" not in st.session_state:
    st.session_state["messages"] = [{"role": "assistant", "content": "Comment puis-je vous aider ?"}]

# Affichage des messages dans l'historique de conversation
for msg in st.session_state.messages:
    st.chat_message(msg["role"]).write(msg["content"])

# Entrée de l'utilisateur et génération de la réponse
if prompt := st.chat_input():
    if not openai_api_key:
        st.info("Veuillez ajouter votre clé API OpenAI pour continuer.")
        st.stop()

    # Ajout du message utilisateur dans la session
    st.session_state.messages.append({"role": "user", "content": prompt})
    st.chat_message("user").write(prompt)

    # Configuration de la clé API et appel de l'API OpenAI
    openai.api_key = openai_api_key
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=st.session_state.messages
    )

    # Traitement de la réponse et mise à jour de l'historique
    msg = response.choices[0].message["content"]
    st.session_state.messages.append({"role": "assistant", "content": msg})
    st.chat_message("assistant").write(msg)