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)