File size: 2,500 Bytes
1d483ff 2e52da8 6e18a3d 6783657 1f8e54b 6e18a3d 1f8e54b 6e18a3d 386d9d1 6e18a3d 386d9d1 1f8e54b 6e18a3d 682c7b1 1f8e54b 6e18a3d 1f8e54b 6e18a3d 1f8e54b 6e18a3d | 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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 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"<span style='color: green;'>{line}</span>")
elif line.startswith('-'):
formatted_diff.append(f"<span style='color: yellow;'>{line}</span>")
else:
formatted_diff.append(line)
return "<br>".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)
|