Skip to content
Snippets Groups Projects
Commit eabb46bd authored by PIERRON Laurent's avatar PIERRON Laurent :man_in_tuxedo_tone1:
Browse files

adding GPT PROJET

parent a868c420
No related branches found
No related tags found
No related merge requests found
<!DOCTYPE html>
<html lang="fr">
<head>
<title>GPT Fonctionnel Programmeur</title>
</head>
<body>
<h1>Description de la fonction à créer</h1>
<form action="">
Quelle fonction voulez-vous que je crée ?
<br>
<textarea rows = "5" cols = "60" name = "description">
A function to solve a quadratic equation
</textarea><br>
Avec combien de tests ?
<input type="number" id="test_quantity" name="test_quantity" value="5" min="1" max="5">
<input type="submit" value="Vas-y !" />
</form>
<div>
<h2>Programme en langage Python</h2>
<form action="">
<textarea name="program" id="program" cols="70" rows="20">
def quadratic_equation(a, b, c):
"""
Solves a quadratic equation of the form ax^2 + bx + c = 0
Parameters
----------
a : float
Coefficient of x^2
b : float
Coefficient of x
c : float
Constant term
Returns
-------
x1 : float
First solution
x2 : float
Second solution
"""
# Compute the discriminant
discriminant = (b**2) - (4*a*c)
# Compute the two solutions
x1 = (-b + discriminant**0.5) / (2*a)
x2 = (-b - discriminant**0.5) / (2*a)
return x1, x2
</textarea><br>
<input type="submit" value="Compile et teste !" />
</form>
</div>
</div>
<div>
<h2>Voici cinq tests unitaires</h2>
<form action="">
<textarea name="tests" id="tests" cols="70" rows="20">
import unittest
class TestQuadraticEquation(unittest.TestCase):
def test_quadratic_equation_1(self):
self.assertEqual(quadratic_equation(1, 0, -4), (2+0j, -2+0j))
def test_quadratic_equation_2(self):
self.assertEqual(quadratic_equation(2, -3, 1), (1+0j, 0.5+0j))
def test_quadratic_equation_3(self):
self.assertEqual(quadratic_equation(1, -2, -3), (3+0j, -1+0j))
def test_quadratic_equation_4(self):
self.assertEqual(quadratic_equation(1, -4, 4), (2+0j, 2+0j))
def test_quadratic_equation_5(self):
self.assertEqual(quadratic_equation(2, -7, 3), (3+0j, 0.5+0j))
if __name__ == '__main__':
unittest.main()
</textarea><br>
<input type="submit" value="Teste à nouveau !" />
</form>
</div>
</body>
</html>
# PROJET : GPT Programmeur
## But du projet
Réaliser une application Web, qui permet de demander à *ChatGPT* de créer une fonction avec des tests unitaires dans un langage de programmation donné.
## Dates limites
- point d'étape : **mardi 14 février** matin
- dépôt final : **dimanche 19 février** minuit
## Moyens
Langage de développement : au choix
Framework Web : au choix
Dépôt GIT : https://gitlab.univ-lorraine.fr
## Langages cibles
**Groupe 1** : Python / Prolog
**Groupe 2** : Java / Eiffel
**Groupe 3** : PHP / Haskell
## Description de la page WEB
Un exemple de formulaire Web est fourni dans le ficheir `codeur_gpt.html`
Le formulaire doit contenir les élements suivants :
- une zone de description de la fonction, par exemple :
- « Résoudre une équation du second degré. »
- « Trier une liste de mots »
- « Tester si un mot est un palindrome. »
- « Calculer le nombre d'occurences de chaque mot dans un texte. »
- une zone de saisie du nombre de tests unitaires
- un bouton pour lancer la création du programme
- un popup menu pour choisir le langage de programmation entre les deux définis pour le groupe
- une zone éditable d’affichage du programme
- une zone éditable avec la liste des tests
- un bouton pour relancer le passage des tests après modification du programme ou des tests
Votre logiciel de création de fonction devra pouvoir être testé sans accès à ChatGPT, ni Internet. Vous utiliserez donc un *mock* (https://en.wikipedia.org/wiki/Mock_object) avec des réponses prédéfinies pour simuler le comportement de l'accès à *ChatGPT*.
On mettra en place des scénarios de tests fonctionnels avec le framework *Selenium*.
La fonction créée devra passer et valider les tests générés par *ChatGPT*. Comme dans le programme *Mira* (voir ci-dessous), il peut être nécessaire de demander à *ChatGPT* de refaire le programme pour qu'il passe les tests. On limitera le nombre d'itérations à 10, et on mettra un message d'erreur si la fonction ne peut pas être validée.
## Itérations de développement
1. Un seul langage de programmation cible, pas de validations des tests, pas de modification du programme et des tests, pas d'itérations de *refactoring* auprès de ChatGPT.
2. Ajout de la validation des tests sans *refactoring*, vous mettrez un message pour indiquer si certains tests ne passent pas.
3. Ajout de la modification du programme et des tests par l'utilisateur.
4. Ajout des itérations de *refactoring* auprès de *ChatGPT*.
5. Ajout du second langage de programmation.
## Références
Ces sources devraient être utiles :
- *Mira*, un programme en Rust qui crée des programems Rust via GPT-3 : https://gitlab.com/corpsmoderne/mira
- API de ChatGPT :
- https://platform.openai.com/docs/guides/code
- https://beta.openai.com/docs/api-reference
- https://openai.com/api/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment