Login / Sign up
Discover Bonzai
Terms of Use
Legal notice
Privacy
Region
Language
matyo91
matyo91
10
Subscribers
Facebook
X
Whatsapp
Telegram
👉 You must follow matyo91 to access chat.
Feed Shop About

CrĂ©ation d’un Projet Symfony avec IA : Utilisation de DTO, Flow et RapidAPI

Facebook
Twitter
Whatsapp
Telegram
5 months ago

Le dĂ©veloppement d’applications modernes s’appuie de plus en plus sur l’intelligence artificielle pour optimiser les processus de crĂ©ation. Cet article explique comment crĂ©er une application Symfony pour scraper des pages web, obtenir un rĂ©sumĂ© et des tags pertinents, en s’appuyant sur des technologies telles que Flow, OpenAI, et RapidAPI. Ce projet a Ă©tĂ© conçu Ă  l’aide de prompts personnalisĂ©s sur Cursor, tels que : "Mets en place une API avec Flow et OpenAI".

L'idée principale derriÚre ce projet est de démontrer comment mettre en place rapidement un SaaS (Software as a Service) performant. Dans cet exemple, nous avons créé un service qui permet de scraper n'importe quelle URL et d'en extraire automatiquement les informations pertinentes grùce à l'intelligence artificielle.

Cette approche présente plusieurs avantages :

  • RapiditĂ© de mise en place : En utilisant des outils modernes comme Symfony, ApiPlatform, Flow et l'API OpenAI, nous pouvons dĂ©velopper rapidement un service fonctionnel

  • ScalabilitĂ© : L'architecture choisie permet de gĂ©rer facilement une montĂ©e en charge

  • Valeur ajoutĂ©e : L'utilisation de l'IA pour l'analyse du contenu apporte une rĂ©elle plus-value au service

Le service peut ĂȘtre utilisĂ© dans de nombreux contextes : veille concurrentielle, agrĂ©gation de contenu, analyse de tendances, etc.

Initialisation du Projet Symfony

Commencez par créer un projet Symfony :

composer create-project symfony/skeleton my_project cd my_project composer require webapp

Ajoutez les dépendances de base :

composer require doctrine annotations composer require api composer require maker http-client symfony/serializer composer require openai-php/client

Vérifiez que le serveur fonctionne :

symfony serve

Votre projet de base est prĂȘt !

ImplĂ©mentation du ContrĂŽleur pour le Scraping et l’Analyse

Voici un contrĂŽleur basĂ© sur le code source de l’application :

<?php

use App\Dto\UrlDto;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

use Symfony\Component\HttpFoundation\JsonResponse;

use Symfony\Component\HttpFoundation\Request;

use Symfony\Component\Serializer\SerializerInterface;

use Symfony\Contracts\HttpClient\HttpClientInterface;

use OpenAI;

use Flow\Flow\Flow;

use Flow\FlowFactory;

use Flow\Ip;

class UrlController extends AbstractController

{

public function __construct(

private HttpClientInterface $httpClient,

private string $openaiApiKey

) {}

public function invoke(Request $request, SerializerInterface $serializer): JsonResponse

{

try {

// Decode JSON request body

$data = json_decode($request->getContent(), true);

// Deserialize into UrlDto

$urlDto = $serializer->denormalize($data, UrlDto::class);

// Integrate Flow

$flow = (new FlowFactory())->create(function() use (&$data) {

yield function ($url) use (&$data) {

// Fetch URL content

$response = $this->httpClient->request('GET', $url);

$content = $response->getContent();

// Initialize OpenAI client

$client = OpenAI::client($this->openaiApiKey);

// Get summary and tags from ChatGPT

$result = $client->chat()->create([

'model' => 'gpt-4o-mini',

'messages' => [

[

'role' => 'system',

'content' => 'First provide a concise summary of the webpage content. Then on a new line after "TAGS:", list up to 10 relevant single-word or short-phrase tags, separated by commas.'

],

[

'role' => 'user',

'content' => $content

],

],

'max_tokens' => 400

]);

// Split the response into summary and tags

$data = $result->choices[0]->message->content;

};

});

$ip = new Ip($urlDto->url);

$flow($ip);

$flow->await();

$parts = explode('TAGS:', $data);

$summary = trim($parts[0]);

$tags = isset($parts[1]) ? array_map('trim', explode(',', trim($parts[1]))) : [];

return new JsonResponse([

'url' => $urlDto->url,

'summary' => $summary,

'tags' => $tags,

]);

} catch (\Exception $e) {

return new JsonResponse([

'error' => $e->getMessage()

], 500);

}

}

}

Intégration de Flow pour Orchestrer les Données

Flow est utilisĂ© pour orchestrer les Ă©tapes du pipeline de scraping et d’analyse. Dans le code ci-dessus :

  • RĂ©cupĂ©ration du contenu : Le contenu de l’URL est rĂ©cupĂ©rĂ© via HttpClientInterface.

  • Analyse via OpenAI : Le contenu est envoyĂ© Ă  OpenAI pour gĂ©nĂ©rer un rĂ©sumĂ© et des tags.

  • Traitement des rĂ©sultats : Les rĂ©ponses sont traitĂ©es et renvoyĂ©es sous forme de JSON.

Mise en Place du SaaS avec RapidAPI

Pour transformer ce projet en SaaS accessible via RapidAPI :

  • CrĂ©ez un Compte RapidAPI : Inscrivez-vous sur RapidAPI.

  • Publiez vos Endpoints :

    • CrĂ©ez des endpoints RESTful comme prĂ©sentĂ© ci-dessus.

    • Configurez les routes et les paramĂštres requis sur RapidAPI.

  • Testez et Partagez : Testez votre API directement sur la plateforme et partagez-la avec vos utilisateurs.

Conlusion

Ce projet montre comment utiliser Symfony, ApiPlatform, Flow et OpenAI pour crĂ©er une API performante capable de scraper des pages web et d’analyser leur contenu. En publiant cette API sur RapidAPI, vous pouvez transformer cette solution en un SaaS accessible Ă  tous.

Essayez d’intĂ©grer ces concepts dans vos propres projets et adaptez-les en fonction des besoins de vos utilisateurs. Pour des dĂ©tails supplĂ©mentaires, rĂ©fĂ©rez-vous Ă  la source sur UrlScrapingApi.

matyo91
matyo91
€49.00

Automation avec Flow en PHP

Open
Follow matyo91 to comment
matyo91

matyo91

Je t'aide Ă  automatiser tes process
10
Visit this Bonzai
Follow matyo91 to get the latest updates.

Le nouvel opérateur de PHP 8.5 va changer ta façon de coder

1 week ago
11

Comment j'ai connecté Cursor à Slack pour automatiser mes flux de travail d'IA

2 weeks ago
13

Télécharger de la musique Légalement

3 weeks ago
15

🎼 CrĂ©er un mini-jeu Discord avec VITE : un retour d'expĂ©rience

1 month ago
29

đŸŽ¶ Open Mic du Groover Club - Mai 🧡

1 month ago
26

▶ 2025-05-26 DjMatyo Soundcloud set with MC

1 month ago
29

🚀 Du dĂ©veloppement Ă  la production : dĂ©ployer une API Symfony avec Upsun

1 month ago
33

🚀 De zĂ©ro Ă  hĂ©ros avec Sylius : Au cƓur de l'atelier sur les essentiels pratiques

1 month ago
31

🚀 Sylius Days 2025 : l'innovation en matiĂšre de commerce Ă©lectronique

1 month ago
41

đŸ‡ȘđŸ‡ș DJ Matyo Live special Eurovision 2025 🌟

1 month ago
33

Générez automatiquement des miniatures YouTube personnalisées de style Ghibli avec PHP et l'IA

1 month ago
34

Recherche, Achat et Organisation de Tracks pour DJ Sets

2 months ago
53

Automating Gmail and Google Calendar with PHP Agents ?🧠⚡

2 months ago
42

Supercharge Your Job Search: Automate with MCP, Astra, Langflow and Arize

2 months ago
42

DJ Matyo Live

2 months ago
42

Build a Game for the largest game dev competition in the world

2 months ago
41

Demande Ă  Codex

2 months ago
52

DJ Matyo Live repost track

2 months ago
44

Darkwood v1.0.1 release

2 months ago
53

Transforme ta voix en article de blog avec GPT et Meteor

3 months ago
57
© 2025 Bonzai Privacy Legal notice Terms of Use