Votre 1er cours d'intelligence artificielle GRATUIT
Lancer un Ecommerce Anti Amazon en 24h

 1 jour d'essai gratuit

Formation à GPT3 et ChatGPT
Musclez le contenu + SEO
Joomla!

Générer des milliers de milliers de fiche produits avec l'API d'OpenAI

Voici un script Python qui permet de générer des milliers de fiches produits en appelant l'API d'OpenAI.

Tout le monde sait générer un descriptif produit pour un site d'ecommerce avec un prompt via ChatGPT ou GPT3

Mais lorsqu'il faut en générer des milliers en une journée, tout est différent. On ne peut passez à l'échelle en rentrant 1000 prompts pour 1000 produits.

L'API d'OpenAI fournit une solution, puisqu'elle permet de traiter des milliers de prompts en quelques minutes.

Il existe différentes approches techniques pour interroger l'API.

En voici une qui repose sur Python.

Configuration des paquets Python d'OpenAI

Nous devons installer les paquets openai et transformers pour que cela fonctionne. La bibliothèque OpenAI Python fournit un accès facile aux API que nous utiliserons pour communiquer avec GPT-3. Nous pouvons utiliser le paquet transformers pour tokeniser nos prompts de saisie et calculer le nombre de tokens que nous utilisons. Nous pouvons simplement installer ces paquets en utilisant pip :

!pip install openai
!pip install transformers

Après avoir installé ces paquets, n'oubliez pas de transmettre votre secret API pour l'authentification.

import openai, transformers openai.api_key = os.environ["OPENAI"]

Les Tokens et le coût

L'utilisation des API d'OpenAI n'est pas gratuite ; leur modèle de tarification est basé sur l'utilisation de jetons. Un jeton peut être décrit comme une séquence de caractères dans un texte. Par exemple, le mot "avion" se compose de 8 caractères et de deux jetons (air et avion). Grâce à cet outil en ligne, vous pouvez calculer le nombre de jetons d'un texte spécifique. Il est également possible de calculer les jetons en utilisant le paquetage Transformers et en passant une chaîne de caractères :

from transformers import GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained(“gpt2”)
len(tokenizer(“Your input string”)[‘input_ids’])

 Au moment de la rédaction de cet article, le prix pour traiter 1K de jetons sur le modèle le plus cher (davinci) est de 0,02 $. Les modèles moins chers comme ada et curie coûtent plus de dix fois moins. N'oubliez pas que le montant des jetons facturés est basé sur l'invite + la réponse, et pas seulement sur la réponse.

Une fois que les paquets requis sont installés et configurés. J'ai divisé l'ensemble du processus de génération de ces descriptions de produits en trois étapes principales :

1. Nettoyage des données

Pour cet exemple, nous travaillons avec un ensemble de données d'inventaire fourni par une entreprise textile, contenant les tissus qu'elle vend et leurs attributs connexes :

Exemple d'enregistrement (avant nettoyage des donnés) :

Artcode                     RS0055-043
Article_principal         RS0055
Poids                         500
Fabrication                 Tricoté
Traitement                  Pièce Teintée
Composition               80% Modacrylique 20% Polyester
Tissu_genre                Faux Fourrure
Utilisation                   Accessoires, Coussin pour animaux, Carnaval, Décoration...
Couleur                       Noir
Nom :                          1, dtype : object

Pour réussir les étapes suivantes, nous devons effectuer un nettoyage des données sur cet ensemble de données :

  • Imputer les valeurs manquantes.
  • Ajouter une colonne calculée pour indiquer si un tissu particulier est lourd ou non (weight_category).
  • Convertir tous les mots de la colonne d'usage au pluriel ; j'utilise un paquet nommé inflect pour cela.
  • Ajouter des virgules et la conjonction "et" entre une liste de valeurs de chaîne dans les colonnes composition et usage.

2. Génération de prompts

Après les étapes de nettoyage des données, nous pouvons générer nos prompts en fonction des attributs disponibles pour chaque enregistrement de produit.

Il est essentiel de se rappeler que nous devons créer un prompt en langage naturel. Comme le modèle est entraîné sur des textes écrits et non sur des ensembles de données, nous obtenons les meilleurs résultats en posant des questions comme vous le feriez avec un être humain.

Dans notre exemple, j'ai utilisé les attributs suivants pour générer une question :

  • Fabrication
  • Couleur
  • Traitement
  • Composants
  • Utilisation
  • Catégorie de poids
def generate_question(**kwargs) :
'''
Cette méthode va générer une question basée sur les arguments des mots-clés donnés.
- Les valeurs nulles ne peuvent pas être transmises.
'''
question_start = 'Générer une description de produit pour un tissu, avec les attributs suivants : '

if kwargs['Fabrication'] == '' :
return ''

if kwargs['Color'] != '' :
fabric = f "A {kwargs['Color']} {kwargs['Fabrication']} " \
f "tissu, c'est-à-dire {kwargs['Traitement']} et "
else :
fabric = f "A {kwargs['Fabrication']} fabric, " \
f "qui est {kwargs['Traitement']} et "

si kwargs['Composition'] != '' :
composition = f "fait de {kwargs['Composition']}. "
else :
composition = "fait de matériaux de la plus haute qualité. "

if kwargs['weight_category'] != '' :
weight = f "C'est un tissu {kwargs['weight_category']}."
else :
weight = ""
'''

if kwargs['Usage'] != '' :
usage = f "qui peut être utilisé pour {kwargs['Usage']}."
else :
usage = "qui peut être utilisé pour divers projets." 
'''

return question_start + tissu + composition + poids

En exécutant ce simple script sur mon ensemble de données d'inventaire, j'ai pu générer ce type prompts :

"Ecris une courte description commercial sur : Un tissu tricoté, qui est teinté et composé de 80% de modacrylique et 20% de polyester. C'est un tissu dense qui peut être utilisé pour les accessoires, les coussins pour animaux, les décorations, les décorations d'intérieur, les oreillers, les coussins et les costumes traditionnels"

ou

"Rédige une courte description commercial sur : Un tissu tricoté, qui est teint et composé de 95% de Viscose, 5% de Spandex. C'est un tissu qui peut être utilisé pour les chemisiers, les robes, les tenues de soirée, les jupes, les t-shirts et les doublures."

3. Appeler le modèle

Une fois que nous avons nos questions, nous pouvons appeler le point de terminaison des complétions pour interagir avec GPT-3 et obtenir nos réponses (complétions).

def completions(input_prompt):

 

# create a completion 
completion = openai.Completion.create(engine="text-curie-001", 
        prompt=input_prompt, 
        temperature=0.5, 
        max_tokens=600, 
        top_p=1, 
        frequency_penalty=0.6, 
        presence_penalty=1 ) 
# print the completion 
return completion.choices[0].text 

Ensuite, nous passons en revue toutes les questions et ajoutons les réponses à notre cadre de données sur les produits.

answers = [] 
for question in (products_clean['question']): 
if question != '': 
answer = completions(question) 
answers.append(answer.strip()) 
else: 
answers.append('') 
products_clean['answer'] = answers

Après avoir exécuté le script, nous obtenons des descriptions de produits comme celle-ci :

Ce tissu tricoté noir est une pièce qui met en valeur votre garde-robe. Composé de 80 % d'acrylique et de 20 % de polyester, il peut être utilisé pour les accessoires, les coussins pour animaux, les oreillers et des costumes traditionnels.

Et voilà !

 

EXCLUSIF

35 Formations
Intelligence Artificielle
Marketing Digital
Ecommerce
Forfait illimité: à partir de 166€/mois

Accès 100 collaborateurs

Découvrir

Recevez des exclus !

Contenus liés

Search