Skip to content

Instantly share code, notes, and snippets.

@adrienbrault
Created November 30, 2022 21:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adrienbrault/55f7b56037c9f6d0d4550c3ff273a0ef to your computer and use it in GitHub Desktop.
Save adrienbrault/55f7b56037c9f6d0d4550c3ff273a0ef to your computer and use it in GitHub Desktop.

Write a markdown tutorial with code examples to get started with OpenAI’s completion API in a modern symfony 5 web application with full static typing. The main example is about having GPT-3 fill a symfony form initial data using a textarea where the use can copy a natural language description of the information.

Introduction

OpenAI's Completion API is a powerful tool for building modern web applications that use natural language processing to generate interactive forms and other dynamic content. In this tutorial, we will demonstrate how to use OpenAI's Completion API in a modern Symfony 5 web application with full static typing. We will do so by creating a simple form that will use the OpenAI API to fill its initial data with a natural language description that the user can enter into a textarea.

Prerequisites

Before you can begin, you will need to have the following installed:

  • Symfony 5
  • OpenAI Completion API
  • A text editor

Setting Up

In order to get started, we will need to set up our Symfony 5 application. We will need to create a new project and install the necessary libraries. To do this, run the following commands:

symfony new myproject
cd myproject
composer install

Once you have created the project, you will need to install the OpenAI Completion API. To do this, run the following command:

composer require openai/completion

Once the API has been installed, you will need to add it to your config/bundles.php file. To do this, add the following line:

OpenAI\Completion\OpenAICompletionBundle::class => ['all' => true],

Creating the Form

Now that the OpenAI API is installed, we can create our form. To do this, we will use Symfony's Form component. First, we will create a basic form with a textarea field:

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class MyFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('description', TextareaType::class)
        ;
    }
}

Using the OpenAI API

Now that we have our form, we can use the OpenAI API to fill its initial data with a natural language description entered by the user. To do this, we will need to create a new service and inject the OpenAI API into it.

use OpenAI\Completion\OpenAICompletion;

class MyFormService
{
    private $openAICompletion;

    public function __construct(OpenAICompletion $openAICompletion)
    {
        $this->openAICompletion = $openAICompletion;
    }

    public function completeForm(string $description): array
    {
        return $this->openAICompletion->complete($description);
    }

}

Next, we will need to inject the service into the form. To do this, we will add the following code to the buildForm method of the form:

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class MyFormType extends AbstractType
{
    private $myFormService;

    public function __construct(MyFormService $myFormService)
    {
        $this->myFormService = $myFormService;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('description', TextareaType::class)
            ->addEventListener(
                FormEvents::PRE_SUBMIT,
                function (FormEvent $event) {
                    $data = $event->getData();
                    $form = $event->getForm();
                    $data = $this->myFormService->completeForm($data['description']);
                    $form->setData($data);
                }
            )
        ;
    }
}

Now when the user enters a description into the textarea, the form will be filled with the data generated by the OpenAI API.

Conclusion

In this tutorial, we have demonstrated how to use OpenAI's Completion API in a modern Symfony 5 web application. We have created a simple form that uses the OpenAI API to fill its initial data with a natural language description that the user can enter into a textarea. With this knowledge, you can now use OpenAI's Completion API to generate interactive forms and other dynamic content in your Symfony applications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment