ChatGPT_Playground / tabs /playground.py
Demosthene-OR's picture
Update playground.py
1deac58
raw
history blame
3.68 kB
import streamlit as st # type: ignore
from translate_app import tr
import numpy as np
import openai
from dotenv import load_dotenv
import os
import warnings
warnings.filterwarnings('ignore')
title = "Playground ChatGPT"
sidebar_name = "Playground"
def display_proba_next_token(prompt,temperature,max_token):
# Définir un ou plusieurs motifs d'arrêt
stop_sequences = [".","\n", "FIN", "Merci"] # Ajoutez d'autres motifs selon vos besoins
response = openai.Completion.create(
engine="davinci-002",
prompt=prompt,
max_tokens=max_token, # Limite à un seul token pour voir uniquement la probabilité du prochain
logprobs=5, # Obtenir les 5 tokens les plus probables
temperature=temperature, # Contrôle la créativité, 0 pour des réponses plus prédictibles
stop=stop_sequences
)
# Mettre logprobs dans un dictionnaire
if response['choices'][0]['text'] !="":
logprobs = response['choices'][0]['logprobs']['top_logprobs'][0]
logprobs_dict = dict(logprobs)
# Convertir logprobs en probabilités
probabilities = {key: np.exp(value) for key, value in logprobs_dict.items()}
# Afficher le texte de la réponse
st.write("Token suivant : ->"+list(probabilities.keys())[0]+"<-") # Afficher le texte de la réponse
# st.write("Texte de la réponse : ->"+response['choices'][0]['text'][0]+"<-") # Afficher le texte de la réponse
st.write("")
# Afficher les probabilités pour le prochain token
for token, proba in probabilities.items():
st.write(f"Token: ->{token}<- ; proba: {proba:.2f}")
# Afficher le texte de la réponse complete
st.write("")
try:
text = response['choices'][0]['text']
st.write("Texte de la réponse complète: ->" + str(text) + "<-")
except KeyError:
st.error("La réponse ne contient pas de texte supplémentaire.")
else:
st.error("La réponse ne contient pas de texte supplémentaire.")
# st.write("Texte de la réponse complete: ->"+str(response['choices'][0]['text'])+"<-") # Afficher le texte de la réponse
# st.write("")
# st.write(response)
def run():
global temperature, max_token
st.write("")
st.write("")
st.title(tr(title))
st.markdown('''
---
''')
st.header("**"+tr("Prédiction du token suivant")+"**")
st.markdown(tr(
"""
Cet espace a pour objectif d'observer la génération de token par ChatGPT'
""")
, unsafe_allow_html=True)
if 'OPENAI_API_KEY' in st.session_state:
try:
openai.api_key = st.session_state['OPENAI_API_KEY']
col1, col2 = st.columns([3, 1])
with col2:
temperature = st.slider(
label=tr("Temperature"),
min_value=0.0,
max_value=1.0,
value=0.0 # Valeur initiale
)
max_token = st.slider(
label=tr("Max tokens"),
min_value=1,
max_value=500,
value=100 # Valeur initiale
)
with col1:
prompt = st.text_area(label=tr("Prompt:"), value="La souris est mangée par le",height=100)
display_proba_next_token(prompt,temperature,max_token)
except Exception as e:
st.error(f"An unexpected error occurred: {e}")
else:
st.write(tr("Saisissez d'abord votre clé API OpenAI !"))