Dans ce tutoriel, nous allons vous montrer comment intégrer ChatGPT à votre application Symfony 6. ChatGPT est un modèle de langage développé par OpenAI qui peut générer des réponses textuelles en fonction des questions ou des requêtes entrantes. L'intégration de ChatGPT dans votre application Symfony peut permettre d'améliorer l'interaction utilisateur et d'offrir un support automatisé ou une expérience de chat plus engageante.
Êtes-vous intéressé à apprendre comment créer rapidement des applications web robustes et sécurisées ? Nous vous proposons une formation à distance pour débutants sur le framework Symfony.
Étape 1 : Créer un compte OpenAI et obtenir une clé API
- Rendez-vous sur le site officiel d'OpenAI (https://www.openai.com/) et créez un compte si vous n'en avez pas déjà un.
- Une fois connecté, accédez à la section API Keys dans votre tableau de bord.
- Générez une nouvelle clé API en cliquant sur le bouton Create API Key. Copiez cette clé, car vous en aurez besoin pour interagir avec l'API ChatGPT.
Étape 2 : Installer le package openai-php
Pour interagir avec l'API ChatGPT, nous allons utiliser le package openai-php. Installez-le dans votre projet Symfony à l'aide de Composer en exécutant la commande suivante dans votre terminal :
composer require openai/openai
Étape 3 : Créer un service ChatGPT
Dans votre application Symfony, créez un nouveau service pour gérer les interactions avec l'API ChatGPT.
- Créez un nouveau dossier nommé
Service
dans le répertoiresrc
de votre projet, s'il n'existe pas déjà. - Dans le dossier
Service
, créez un nouveau fichier appeléChatGPTService.php
. - Ouvrez le fichier
ChatGPTService.php
et ajoutez le code suivant :
<?php
namespace App\Service;
use OpenAI\OpenAI;
class ChatGPTService
{
private $apiKey;
public function __construct(string $apiKey)
{
$this->apiKey = $apiKey;
}
public function generateResponse(string $prompt): string
{
OpenAI::setApiKey($this->apiKey);
$response = OpenAI::api("davinci-codex/completions", [
'prompt' => $prompt,
'n' => 1,
'max_tokens' => 100,
'stop' => null,
]);
return $response['choices'][0]['text'];
}
}
- Ouvrez le fichier
config/services.yaml
et ajoutez la définition du service ChatGPT avec votre clé API :
services:
# ...
App\Service\ChatGPTService:
arguments:
$apiKey: '%openai_api_key%'
- Dans le même fichier, ajoutez un paramètre pour stocker votre clé API :
parameters:
# ...
openai_api_key: 'your_openai_api_key'
N'oubliez pas de remplacer 'your_openai_api_key'
par la clé API que vous avez obtenue à l'étape 1.
Étape 4 : Créer le formulaire de questions/réponses
- Créez un nouveau formulaire dans le dossier
src/Form
de votre projet. Nommez-leChatGPTType.php
et ajoutez le code suivant :
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ChatGPTType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('userInput', TextareaType::class, [
'label' => 'Your question:',
])
->add('submit', SubmitType::class, [
'label' => 'Ask',
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([]);
}
}
- Dans le contrôleur où vous souhaitez afficher le formulaire, ajoutez les déclarations
use
pour le formulaire et le service ChatGPT :
use App\Form\ChatGPTType;
use App\Service\ChatGPTService;
- Injectez le service
ChatGPTService
dans le contrôleur en ajoutant un paramètre au constructeur :
public function __construct(ChatGPTService $chatGPTService)
{
$this->chatGPTService = $chatGPTService;
}
N'oubliez pas d'ajouter une propriété pour stocker le service dans votre contrôleur.
- Ajoutez une nouvelle action pour afficher le formulaire et traiter les soumissions :
public function chat(Request $request)
{
$form = $this->createForm(ChatGPTType::class);
$form->handleRequest($request);
$responseText = '';
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$userInput = $data['userInput'];
$responseText = $this->chatGPTService->generateResponse($userInput);
}
return $this->render('chat.html.twig', [
'form' => $form->createView(),
'responseText' => $responseText,
]);
}
Voici le contenu complet du controller
<?php
namespace App\Controller;
use App\Form\ChatGPTType;
use App\Service\ChatGPTService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ChatGPTController extends AbstractController
{
private $chatGPTService;
public function __construct(ChatGPTService $chatGPTService)
{
$this->chatGPTService = $chatGPTService;
}
/**
* @Route("/chat", name="chat_gpt")
*/
public function chat(Request $request): Response
{
$form = $this->createForm(ChatGPTType::class);
$form->handleRequest($request);
$responseText = '';
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$userInput = $data['userInput'];
$responseText = $this->chatGPTService->generateResponse($userInput);
}
return $this->render('chat.html.twig', [
'form' => $form->createView(),
'responseText' => $responseText,
]);
}
}
- Créez un fichier
chat.html.twig
dans le dossiertemplates
pour afficher le formulaire et les réponses :
{% extends 'base.html.twig' %}
{% block title %}Chat with GPT{% endblock %}
{% block body %}
<h1>Chat with GPT</h1>
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% if responseText %}
<div class="response">
<h2>Response:</h2>
<p>{{ responseText }}</p>
</div>
{% endif %}
{% endblock %}
- Mettez à jour vos routes pour inclure l'action
chat
.
Maintenant, vous devriez avoir un formulaire fonctionnel pour poser des questions à ChatGPT dans votre application Symfony 6. Les utilisateurs peuvent entrer leurs questions dans le formulaire, et les réponses générées par ChatGPT s'affichent sur la même page.
Pour conclure, ce tutoriel vous a guidé à travers les étapes nécessaires pour intégrer ChatGPT à votre application Symfony 6 en utilisant un formulaire de questions/réponses. Vous avez appris comment créer un compte OpenAI et obtenir une clé API, installer le package openai-php, créer un service ChatGPT, mettre en place un formulaire de questions/réponses, et afficher le formulaire et les réponses dans votre application. Grâce à cette intégration, vos utilisateurs peuvent désormais interagir avec ChatGPT directement depuis votre application Symfony, ce qui peut améliorer l'interaction utilisateur et offrir un support automatisé ou une expérience de chat plus engageante.