Query-bibliotheek
Query-bibliotheekAutomatisch verbeteren van een nieuwe WooCommerce-productbeschrijving met ChatGPT

Automatisch verbeteren van een nieuwe WooCommerce-productbeschrijving met ChatGPT

Deze query haalt het WooCommerce-product op met het opgegeven ID, herschrijft de inhoud ervan met ChatGPT en slaat deze opnieuw op.

(In de volgende sectie automatiseren we de uitvoering van deze query, telkens wanneer het product wordt aangemaakt.)

Het Custom Post Type product van WooCommerce moet via het GraphQL-schema opvraagbaar worden gemaakt, zoals uitgelegd in de gids Toegang verlenen tot Custom Post Types.

Ga daarvoor naar de Instellingenpagina, klik op het tabblad "Schema Elements Configuration > Custom Posts" en selecteer product uit de lijst met opvraagbare CPT's (als dat nog niet is geselecteerd).

Om verbinding te maken met de OpenAI API moet je de variabele $openAIAPIKey opgeven met de API-sleutel.

Je kunt optioneel het systeembericht en de prompt opgeven om de inhoud van het bericht te herschrijven. Als deze niet worden opgegeven, worden de volgende waarden gebruikt:

  • Systeembericht ($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: "

(De inhoudsstring wordt aan het einde van de prompt toegevoegd.)

Daarnaast kun je de standaardwaarde voor de variabelen $model ("gpt-4o-mini", bekijk de lijst met OpenAI-modellen) overschrijven en waarden opgeven voor $temperature en $maxCompletionTokens (beide standaard null).

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
      }
    }
  }
}

Het proces automatiseren

We kunnen de Internal GraphQL Server gebruiken om de query automatisch uit te voeren telkens wanneer een nieuw WooCommerce-product wordt aangemaakt.

Maak hiervoor eerst een nieuwe persisted query aan met de titel "Improve Product Content With ChatGPT" (dit wijst de slug improve-product-content-with-chatgpt toe) en de bovenstaande GraphQL-query.

Voeg vervolgens op een willekeurige plek in je applicatie (bijv. in je functions.php-bestand, een plugin of een codefragment) de volgende PHP-code toe, die de query uitvoert op de 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
);