Placeholders not available when using advanced (token) mode

Created on 19 May 2025, 16 days ago

Problem/Motivation

The advanced automator type that allows tokens instead of a single base field does not have access to the replacements the automator type plugin may have to offer. For instance the taxonomy plugin offers these replacements which are not readily reproducible via Drupal tokens:

    $tokens['value_options_comma'] = 'A comma separated list of all value options.';
    $tokens['value_options_nl'] = 'A new line separated list of all value options.';
    $tokens['value_options_nl_description'] = 'A new line separated list of all value options, with term descriptions.';

Steps to reproduce

Proposed resolution

Allow use of these replacement patterns for base setup as well as advanced setup.

Remaining tasks

User interface changes

The replacement patterns would appear on the field configuration form for both automator types.

API changes

Data model changes

๐Ÿ› Bug report
Status

Active

Version

1.1

Component

AI Automators

Created by

๐Ÿ‡บ๐Ÿ‡ธUnited States jhedstrom Portland, OR

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @jhedstrom
  • ๐Ÿ‡บ๐Ÿ‡ธUnited States jhedstrom Portland, OR
  • ๐Ÿ‡ฎ๐Ÿ‡ณIndia prashant.c Dharamshala

    prashant.c โ†’ made their first commit to this issueโ€™s fork.

  • ๐Ÿ‡ฎ๐Ÿ‡ณIndia prashant.c Dharamshala

    Added the code to have the "Placeholders available" section for the Advanced mode. Needs to be reviewed.

  • Pipeline finished with Success
    15 days ago
    Total: 194s
    #501647
  • ๐Ÿ‡ฎ๐Ÿ‡ณIndia Kanchan Bhogade

    Hi
    Tested MR 621 on Drupal 11.x
    The Mr is applied successfully...

    Testing Steps:

    1. Install AI Module
    2. Install the AI Automators module with the Token Module
    3. Enabled the AI Autometers on the entity type's field
    4. Select AI Automatos settings > Automator Input Mode > Advanced Mode (token)
    5. Check for the Placeholder

    Result:
    The Placeholder is available when using advanced (token) mode.

    Attaching screenshots for reference

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States jhedstrom Portland, OR

    These now appear on the form to configure the automator, however they are not actually replaced in the plugin (RuleBase::generate()) as this code doesn't fire for the advanced configuration:

      public function generate(ContentEntityInterface $entity, FieldDefinitionInterface $fieldDefinition, array $automatorConfig) {
        // Generate the real prompt if needed.
        $prompts = [];
        // @phpstan-ignore-next-line
        if (!empty($automatorConfig['mode']) && $automatorConfig['mode'] == 'token' && \Drupal::service('module_handler')->moduleExists('token')) {
          $prompts[] = \Drupal::service('ai_automator.prompt_helper')->renderTokenPrompt($automatorConfig['token'], $entity); /* @phpstan-ignore-line */
        }
        elseif ($this->needsPrompt()) {
          // Run rule.
          foreach ($entity->get($automatorConfig['base_field'])->getValue() as $i => $item) {
            // Get tokens.
            $tokens = $this->generateTokens($entity, $fieldDefinition, $automatorConfig, $i);
            $prompts[] = \Drupal::service('ai_automator.prompt_helper')->renderPrompt($automatorConfig['prompt'], $tokens, $i); /* @phpstan-ignore-line */
          }
        }
        return $prompts;
      }
    
    
  • ๐Ÿ‡ฎ๐Ÿ‡ณIndia prashant.c Dharamshala

    I think it would be better if Marcus could confirm whether the placeholders not implemented for advanced mode are done on purpose or missed.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States jhedstrom Portland, OR

    If they are intentionally left out, are there examples of how to replicate the prompt available at the Base level? I'm not aware of a token that would provide, for example, all the taxonomy terms available to a given field...

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States jhedstrom Portland, OR

    I updated the PR and am adding a patch for use with composer here.

Production build 0.71.5 2024