ChatGPT est un modèle de pointe de traitement du langage naturel créé par OpenAI, un centre de recherche sur l’intelligence artificielle fondé par Elon Musk, Sam Altman et Greg Brockman. Le modèle a été annoncé en juin 2018 et a été continuellement modifié et mis à jour, la version la plus récente, GPT-3, étant sortie en 2020. ChatGPT a été fabriqué à partir de GPT-3 et a été publié en 2022. Le « GPT » dans ChatGPT signifie « Generative Pre-trained Transformer », une référence à l’architecture d’apprentissage en profondeur du modèle. ChatGPT utilise essentiellement des quantités massives de données textuelles pour « apprendre » les subtilités du langage humain, ce qui lui permet de créer des réponses souvent impossibles à différencier de celles des humains. La technologie ChatGPT est basée sur un type de réseau de neurones connu sous le nom de transformateur, qui est bien adapté aux applications de traitement du langage naturel.
La capacité de ChatGPT à créer une sortie de haute qualité pour un large éventail d’invites que vous donnez dans la boîte de discussion est l’une de ses principales caractéristiques. La réponse que vous obtenez semble avoir été générée par un humain. Vous pouvez également préciser les conditions de votre demande. Le modèle a été formé sur un vaste corpus de texte, de sorte qu’il peut s’appuyer sur un large éventail de données pour répondre aux questions, fournir des informations ou participer à une conversation informelle générée à partir de son réseau de neurones. Il est crucial de se souvenir; cependant, ce ChatGPT n’est pas sans défaut. Face à des suggestions qui dépassent le domaine de connaissance du modèle, celui-ci peut apporter des réponses illogiques ou inadaptées. L’utilisation de ChatGPT est parfois élevée et, pour cette raison, il peut parfois y avoir une limite au nombre de requêtes que vous pouvez envoyer.
Maintenant, puisque l’objectif principal de cet article est de vous donner un exemple complet et pratique de la façon dont ChatGPT peut être utilisé pour générer du code pour une API REST, commençons par comprendre ce qu’est une API REST. Une API REST est un type de service Web qui permet à deux systèmes informatiques de communiquer entre eux sur Internet en suivant un ensemble de règles standardisées. Il suit l’architecture REST, connue pour sa nature sans état et client-serveur. Une API REST fonctionne lorsque le client envoie une requête au serveur à l’aide d’une URL et d’une méthode HTTP spécifiques, telles que GET
, POST
, PUT
ou DELETE
, et le serveur répond par un message contenant les données demandées ou indiquant si l’opération demandée a réussi. Les API REST sont largement utilisées dans les applications Web et mobiles modernes car elles fournissent une méthode standardisée et efficace d’échange de données entre les systèmes. Vous pouvez généralement en savoir plus sur une API spécifique en lisant la documentation. Certaines API sont commerciales et ont généralement des plans tarifaires différents. Cela signifie également que faire une demande nécessite un jeton porteur.
Vient maintenant la partie intéressante : créer une API REST entièrement fonctionnelle en C# pour gérer les étudiants à l’aide de ChatGPT, alors continuez à lire.
Création de l’API
Dans cette section, nous laisserons ChatGPT coder une API REST entièrement fonctionnelle pour la gestion des étudiants, y compris la création, la suppression et la modification des dossiers des étudiants. Pour ce faire, nous devrions avoir un « contrôleur d’étudiants », qui aurait le point de terminaison de l’API, et une « classe d’étudiants », qui aurait les champs nécessaires tels que « Id », « name » et « age ». Le seul travail que nous avons ici est de faire des requêtes logiques et bien structurées qui deviendraient progressivement plus complexes au fur et à mesure que nous construisons l’API partie par partie. Commençons.
Écrire une API REST pour gérer les étudiants en C#
Voici un exemple d’API RESTful pour la gestion des étudiants en C#. Cette API utilisera les méthodes HTTP GET
, POST
, PUT
et DELETE
pour effectuer des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) sur une liste de ressources étudiantes.
Tout d’abord, définissons une « classe étudiant » pour représenter une ressource étudiant :
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
Ensuite, créons un StudentsController
classe pour gérer les requêtes HTTP :
[Route("api/students")]
public class StudentsController : Controller
{
private static List<Student> students = new List<Student>
{
new Student { Id = 1, Name = "John Smith", Age = 20, Email = "john.smith@example.com" },
new Student { Id = 2, Name = "Jane Doe", Age = 19, Email = "jane.doe@example.com" },
new Student { Id = 3, Name = "Bob Johnson", Age = 21, Email = "bob.johnson@example.com" }
};
[HttpGet]
public IActionResult GetAllStudents()
{
return Ok(students);
}
[HttpGet("{id}")]
public IActionResult GetStudent(int id)
{
var student = students.FirstOrDefault(s => s.Id == id);
if (student == null)
{
return NotFound();
}
return Ok(student);
}
[HttpPost]
public IActionResult CreateStudent([FromBody] Student student)
{
student.Id = students.Max(s => s.Id) + 1;
students.Add(student);
return CreatedAtAction(nameof(GetStudent), new { id = student.Id }, student);
}
[HttpPut("{id}")]
public IActionResult UpdateStudent(int id, [FromBody] Student student)
{
var existingStudent = students.FirstOrDefault(s => s.Id == id);
if (existingStudent == null)
{
return NotFound();
}
existingStudent.Name = student.Name;
existingStudent.Age = student.Age;
existingStudent.Email = student.Email;
return NoContent();
}
[HttpDelete("{id}")]
public IActionResult DeleteStudent(int id)
{
var student = students.FirstOrDefault(s => s.Id == id);
if (student == null)
{
return NotFound();
}
students.Remove(student);
return NoContent();
}
Ce StudentsController
class définit les points de terminaison suivants :
GET /api/students
: renvoie une liste de tous les étudiants.GET /api/students/{id}
: renvoie une seule ressource étudiant par ID.POST /api/students
: Crée une nouvelle ressource étudiant.PUT /api/students/{id}
: met à jour une ressource étudiante existante par ID.DELETE /api/students/{id}
: Supprime une ressource étudiante existante par ID.
Note: nous utilisons le [FromBody]
attribut pour désérialiser le corps de la requête en un « objet étudiant » pour le CreateStudent
et UpdateStudent
méthodes.
Notez également que la liste des étudiants est statique et initialisée avec des exemples de données. Dans un scénario réel, ces données seraient probablement stockées dans une base de données ou un autre stockage persistant.
Enfin, nous utilisons les codes d’état HTTP 200 OK, 201 Created, 204 No Content et 404 Not Found pour indiquer le résultat de chaque opération.
Ajouter plus de propriétés à la classe d’étudiants
Voici une version mise à jour de la « classe étudiant » avec quelques propriétés supplémentaires :
public class Student
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
Dans cette version mise à jour de la classe, nous avons ajouté les propriétés suivantes :
FirstName
: Le prénom de l’élève.LastName
: Le nom de famille de l’élève.Address
: L’adresse municipale de l’élève.City
: La ville où habite l’étudiant.State
: L’état où vit l’étudiant.ZipCode
: Le code postal de l’adresse de l’élève.
Ces propriétés supplémentaires peuvent fournir plus d’informations sur l’étudiant et peuvent être utiles pour les opérations de filtrage, de tri et de recherche dans l’API.
Ajouter une autre propriété à la classe d’étudiants
Concernant les matières que l’étudiant a prises
Voici une version mise à jour de la « classe d’étudiant » avec une propriété supplémentaire pour les matières que l’étudiant a suivies :
public class Student
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
public List<string> SubjectsTaken { get; set; }
}
Dans cette version mise à jour de la classe, nous avons ajouté une propriété appelée SubjectsTaken
, qui est une liste de chaînes représentant les noms des matières que l’étudiant a suivies. Cette propriété peut être utile pour interroger et filtrer les étudiants en fonction des matières qu’ils ont étudiées.
Vous pouvez ajouter des sujets à la liste comme ceci :
var student = new Student
{
Id = 1,
FirstName = "John",
LastName = "Doe",
Age = 20,
Email = "john.doe@example.com",
Address = "123 Main St",
City = "Anytown",
State = "CA",
ZipCode = "12345",
SubjectsTaken = new List<string> { "Math", "Science", "History" }
};
Et, vous pouvez récupérer la liste des matières pour un étudiant donné comme ceci :
var student = GetStudent(1);
var subjects = student.SubjectsTaken;
Remplacer le sujet pris par un objet nommé sujet
Contenant l’identifiant, le nom, l’enseignant et les crédits des propriétés
Voici une version mise à jour de la « classe d’étudiants » où le SubjectsTaken
propriété est remplacée par un nouveau sujet d’objet contenant le Id
, Name
, Teacher
, et Credits
propriétés:
public class Subject
{
public int Id { get; set; }
public string Name { get; set; }
public string Teacher { get; set; }
public int Credits { get; set; }
}
public class Student
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State {...