import streamlit as st
import pandas as pd
import openai
import difflib
st.set_page_config(layout="wide")
# Titre de l'application
st.title("Agent de Correction de Code et Analyse de Données")
# Charger le DataFrame
df = pd.read_csv('brvehins1a.csv', sep=',')
st.write("### Données chargées :")
st.write(df)
# Clé API OpenAI
openai.api_key = '....'
# Entrée utilisateur pour le code à corriger
user_input = st.text_area("Collez votre code ici :", height=200)
# Fonction pour obtenir la correction du code
def get_code_correction(code):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": f"Corrige ce code et explique les changements :\n\n{code}"}
]
)
return response.choices[0].message['content']
# Fonction pour afficher les différences entre le code original et le code corrigé
def display_diff(original, corrected):
diff = difflib.ndiff(original.splitlines(), corrected.splitlines())
formatted_diff = []
for line in diff:
if line.startswith('+'):
formatted_diff.append(f"{line}")
elif line.startswith('-'):
formatted_diff.append(f"{line}")
else:
formatted_diff.append(line)
return "
".join(formatted_diff)
# Entrée utilisateur pour poser des questions sur les données
query_input = st.text_input("Posez une question sur les données :", "")
# Si l'utilisateur soumet du code
if user_input:
with st.spinner("Correction en cours..."):
corrected_code = get_code_correction(user_input)
st.write("### Code corrigé :")
st.code(corrected_code, language='python')
st.write("### Comparaison :")
diff_output = display_diff(user_input, corrected_code)
st.markdown(diff_output, unsafe_allow_html=True)
st.write("### Explication des changements :")
explanation = get_code_correction(
f"Explique les changements apportés à ce code :\n\n{user_input}\n\nCode corrigé :\n{corrected_code}")
st.write(explanation)
# Si l'utilisateur pose une question sur les données
if query_input:
with st.spinner("Analyse des données en cours..."):
data_summary = get_code_correction(
f"Voici un DataFrame : {df.head().to_json()}. {query_input}"
)
st.write("### Réponse à votre question :")
st.write(data_summary)