Bibliothèque de queries
Bibliothèque de queriesAméliorer automatiquement la description d'un nouveau produit WooCommerce avec ChatGPT

Améliorer automatiquement la description d'un nouveau produit WooCommerce avec ChatGPT

Cette requête récupère le produit WooCommerce avec l'ID fourni, réécrit son contenu à l'aide de ChatGPT, et le sauvegarde à nouveau.

(Dans la section suivante, nous automatiserons l'exécution de cette requête chaque fois qu'un produit est créé.)

Le Custom Post Type product de WooCommerce doit pouvoir être interrogé via le schéma GraphQL, comme expliqué dans le guide Autoriser l'accès aux Custom Post Types.

Pour ce faire, rendez-vous sur la page des Paramètres, cliquez sur l'onglet "Schema Elements Configuration > Custom Posts" et sélectionnez product dans la liste des CPT interrogeables (s'il n'est pas déjà sélectionné).

Pour vous connecter à l'API OpenAI, vous devez fournir la variable $openAIAPIKey avec la clé API.

Vous pouvez optionnellement fournir le message système et le prompt pour réécrire le contenu de l'article. Si ceux-ci ne sont pas fournis, les valeurs suivantes sont utilisées :

  • Message système ($systemMessage) : "You are an English Content rewriter and a grammar checker"
  • Prompt ($prompt) : "Please rewrite the following English text, by changing the simple A0-level words and sentences with more beautiful and elegant upper-level English words and sentences, while maintaining the original meaning: "

(La chaîne de contenu est ajoutée à la fin du prompt.)

De plus, vous pouvez remplacer la valeur par défaut des variables $model ("gpt-4o-mini", consultez la liste des modèles OpenAI) et fournir des valeurs pour $temperature et $maxCompletionTokens (tous deux null par défaut).

query GetProductContent(
  $productId: ID!
) {
  customPost(by: { id: $productId }, customPostTypes: "product", status: any) {
    content
      @export(as: "content")
  }
}
 
query RewriteProductContentWithChatGPT(
  $openAIAPIKey: String!
  $systemMessage: String! = "You are an English Content rewriter and a grammar checker"
  $prompt: String! = "Please rewrite the following English text, by changing the simple A0-level words and sentences with more beautiful and elegant upper-level English words and sentences, while maintaining the original meaning: "
  $model: String! = "gpt-4o-mini"
  $temperature: Float
  $maxCompletionTokens: Int
)
  @depends(on: "GetProductContent")
{
  promptWithContent: _strAppend(
    after: $prompt
    append: $content  
  )
  openAIResponse: _sendJSONObjectItemHTTPRequest(input: {
    url: "https://api.openai.com/v1/chat/completions",
    method: POST,
    options: {
      auth: {
        password: $openAIAPIKey
      },
      json: {
        model: $model,
        temperature: $temperature,
        max_completion_tokens: $maxCompletionTokens,
        messages: [
          {
            role: "system",
            content: $systemMessage
          },
          {
            role: "user",
            content: $__promptWithContent
          }
        ]
      }
    }
  })
    @underJSONObjectProperty(by: { key: "choices" })
      @underArrayItem(index: 0)
        @underJSONObjectProperty(by: { path: "message.content" })
          @export(as: "rewrittenContent")
}
 
mutation UpdateProduct(
  $productId: ID!
)
  @depends(on: "RewriteProductContentWithChatGPT")
{
  updateCustomPost(input: {
    id: $productId,
    customPostType: "product"
    contentAs: {
      html: $rewrittenContent
    }
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    customPost {
      __typename
      ...on CustomPost {
        id
        content
      }
    }
  }
}

Automatiser le processus

Nous pouvons utiliser le Internal GraphQL Server pour exécuter automatiquement la requête chaque fois qu'un nouveau produit WooCommerce est créé.

Pour ce faire, commencez par créer une nouvelle requête persistée avec le titre "Improve Product Content With ChatGPT" (ce qui lui assignera le slug improve-product-content-with-chatgpt), et la requête GraphQL ci-dessus.

Ensuite, n'importe où dans votre application (par exemple dans votre fichier functions.php, un plugin, ou un extrait de code), ajoutez le code PHP suivant, qui exécute la requête sur le hook publish_product :

use GatoGraphQL\InternalGraphQLServer\GraphQLServer;
 
add_action(
  'publish_product',
  function (int $productId, WP_Post $post, string $oldStatus): void {
    // Only execute when it's a newly-published product
    if ($oldStatus === 'publish') {
      return;
    }
 
    GraphQLServer::executePersistedQuery('improve-product-content-with-chatgpt', [
      'productId' => $productId,
 
      // Provide your Open AI's API Key
      'openAIAPIKey' => '{ OPENAI_API_KEY }',
 
      // Customize any of the other variables, for instance:
      'maxCompletionTokens' => 5000,
    ]);
  }, 10, 3
);