Создание текстовых предложений

Text Suggestions API использует генеративные инструменты ИИ API Product Studio для генерации и оптимизации названий и описаний продуктов. Вы можете использовать его для улучшения вовлеченности и конверсии клиентов, а также для оптимизации процесса управления и обновления информации о продуктах. Функции API Product Studio могут помочь вам оптимизировать эффективность вашей розничной торговли.

Что можно сгенерировать с помощью API?

API текстовых предложений поможет вам сделать следующее:

  • Предлагаемые названия и описания продуктов на основе изображения и/или атрибутов вашего продукта.
  • SEO-оптимизированные названия для ваших продуктов
  • Индивидуально отформатированные названия для ваших продуктов
  • Описания продуктов из вашего фида продуктов

Вы также можете задать тон описаний и поддерживать единообразие во всех ваших списках продуктов.

Быстрый старт

Метод GenerateProductTextSuggestions может генерировать или оптимизировать названия и описания продуктов, используя информацию о вашем продукте.

API принимает:

  • Атрибуты продукта (словарь JSON): объект JSON, содержащий атрибуты продукта (например, {"title": "White Tee", "brand": "MyBrand", "size": "XL"} )
  • Изображение продукта: URI, указывающий на изображение продукта (например, {"uri": "https://my-store.com/img/1.png"} )
  • Параметры форматирования заголовка : параметры для настройки генерации заголовка, в том числе:
    • attribute_separator : Указывает разделитель между атрибутами.
    • target_language : Устанавливает язык вывода.
    • attribute_order : определяет порядок атрибутов в сгенерированном заголовке.
  • Примеры маркировки данных : см. пример того, как создать заголовок из описания .
  • Идентификатор рабочего процесса ( output_spec.workflow_id ) : Поле workflow_id в объекте output_spec определяет тип генерации текста:
    • title : Создает или оптимизирует название продукта.
    • description : Создает или оптимизирует описание продукта.
    • tide : Создает или оптимизирует как название продукта, так и его описание.

Примеры

Ниже приведены примеры использования API для генерации или оптимизации заголовка или описания или обоих из разных входных данных о продукте. Мы также представляем общие ошибки и проблемы и их решения.

Оптимизированная генерация заголовков

В примере показано, как сформировать оптимальный заголовок.

Запрос

Тело запроса содержит информацию о продукте, которую следует использовать для оптимизации заголовка. Вот пример структуры запроса:

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "title": "Nike Mens shoes",
         "description": "Give strength to your step with the Nike Air Zoom Pegasus 38 shoe for Men with shoe size 12. Ensuring the fit is loved by the runners. This shoes comes in Blue color.",
         "brand": "Nike"
      }
   },
   "output_spec": {
      "workflow_id": "title"
   }
}

Ответ

Вы можете ожидать ответ вроде

{
  "title": {
    "text": "Nike Mens shoes Air Zoom Pegasus 38 Running Shoes, Blue, Size 12"
  },
  "metadata": {
    "metadata": {
      "attributes": {
        "color": "Blue",
        "size": "12",
        "product": "Running shoes",
        "model": "Air Zoom Pegasus 38"
      },
    }
  }
}

Сгенерировать заголовок только из изображения

В примере показано, как предоставить изображение товара и сформировать оптимальное название.

Запрос

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_image":{
         "uri": "https://cdn.shopify.com/s/files/1/0653/5879/0892/products/1672082339438_550x825.jpg?v=1672082415"
      }
   },
   "output_spec": {
      "workflow_id": "title",
      "attribute_separator": "-"
   }
}

Ответ

{
  "title": {
    "text": "Rustic Ceramic & Leather Leaves Necklace"
  },
  "metadata": {
    "metadata": {
      "attributes": {
        "material": "Rustic Ceramic & Leather",
        "pattern": "Leaves",
        "product": "Necklace"
      },
    }
  }
}

Сгенерировать заголовок из описания

В примере показано, как предоставить описание продукта и сформировать оптимальное название.

Запрос

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "description": "selling size 12 nike dunks. oh they are red by the way!"
      }
   },
   "output_spec": {
      "workflow_id": "title",
   }
}

Ответ

{
  "title": {
    "text": "Nike Dunks Red Size 12"
  },
  "metadata": {
    "metadata": {
      "attributes": {
        "brand": "Nike",
        "color": "Red",
        "size": "12",
        "product": "Dunks"
      },
    }
  }
}

Оптимизируйте заголовки на основе заголовка и описания (вместе с пользовательским примером)

В этом примере мы явно маркируем атрибуты продукта, которые должен идентифицировать ИИ, а также порядок атрибутов в выходных данных.

Запрос

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "title": "Volumizing & Lengthening Mascara - Dark Brown",
         "description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
         "brand": "Luxe Beauty"
      }
   },
   "output_spec": {
      "workflow_id": "title"
   }
   "title_examples": [
    {
      "product_info": {
        "title": "Lash Paradise Volumizing & Lengthening Mascara - Waterproof - Blackest Black",
        "colour": "Black"
      },
      "title_format": "product",
      "category": "mascara",
      "final_product_info": {
        "product": "Mascara",
        "brand": "Lash Paradise",
        "mascara_type": "Volumizing & Lengthening",
        "colour": "Blackest Black",
        "waterproof": "Waterproof",
      }
    },
    {
      "product_info": {
        "title": "Hypnose Drama Instant Full Body Volume Mascara - Black",
        "colour": "Black"
      },
      "title_format": "product",
      "category": "mascara",
      "final_product_info": {
        "product": "Mascara",
        "brand": "Hypnose",
        "sub_brand": "Drama",
        "mascara_type": "Full Body Volume",
        "colour": "Black",
        "eye_lash_type": "All lash types"
      }
    }
  ]
}

Ответ

{
  "title": {
    "text": "Luxe Beauty Dark Brown Volumizing & Lengthening Mascara"
  },
  "metadata": {
    "metadata": {
      "attributes": {
        "brand": "Luxe Beauty",
        "colour": "Dark Brown",
        "mascara_type": "Volumizing & Lengthening",
        "product": "Mascara"
      },
    }
  }
}

Создать описание из заголовка

В примере показано, как указать название продукта и попросить API сгенерировать соответствующее описание продукта.

Запрос

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "title": "Rustic Ceramic & Leather Leaves Necklace",
      }
   },
   "output_spec": {
      "workflow_id": "description"
   }
}

Ответ

{
  "description": {
    "text": "Rustic Ceramic & Leather Leaves Necklace is a beautiful necklace made from high-quality ceramic and leather. It features a unique design that is sure to turn heads.
"
  },
}

Создайте заголовок и описание на основе атрибутов продукта (например, бренда и цвета)

В этом примере демонстрируется предоставление атрибутов продукта для формирования оптимального названия и описания продукта.

Запрос

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "brand": "Mr. Beast",
         "color": "purple",
      },
      "product_image":{
         "uri": "https://mrbeast.store/cdn/shop/files/0015dlv_0000_327.jpg?v=1702754475&width=500"
       }
   },
   "output_spec": {
      "workflow_id": "description"
   }
}

Ответ

{
  "title": {
    "text": "Pajamas - Mr. Beast | Purple"
  },
  "description": {
    "text": "Slip into the ultimate comfort and style with these Mr. Beast pajamas in a vibrant shade of purple. Crafted from the softest materials, these pajamas will envelop you in a cozy embrace, ensuring a restful night's sleep. The shorts feature a relaxed fit, allowing for easy movement, while the top boasts a classic design with a comfortable neckline. Whether you're lounging at home or drifting off to dreamland, these Mr. Beast pajamas are the perfect choice for a peaceful and stylish slumber."
  },
}

Поддержка целевого языка

Это поле указывает язык текста описания, сгенерированного в ответе API. Вы можете добавить target_language как часть параметров output_spec :

{
    "output_spec": {
        "target_language": "language"
    }
}

Примеры значений:

"korean" (Korean)
"english" (English)
"spanish" (Spanish)
"french" (French)

Пример запроса

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "title": "Granos de café negro",
         "description": "Los granos de café negro en California",
         "brand": "Parfums de Paris",
         "scent": "Floral",
      },
      "product_image":{
         "uri": "https://mrbeast.store/cdn/shop/files/0015dlv_0000_327.jpg?v=1702754475&width=500"
       }
   },
   "output_spec": {
      "workflow_id": "description",
      "target_language": "japanese",
      "attribute_order": ["scent", "product"],
      "tone": "playful",
   }
}

Ответ

{
  "description": {
    "text": "カリフォルニアの黒いコーヒー豆は、あなたの鼻をくすぐる、甘く、フローラルな香りです。この香りは、コーヒー豆の豊かな香りと、ジャスミンとバラの繊細な花の香りをブレンドしたものです。カリフォルニアの黒いコーヒー豆は、あなたの家を居心地の良いカフェに変え、あなたをリラックスした気分にさせてくれるでしょう。この香りは、コーヒー好きにも、フローラルな香り好きにも最適です。カリフォルニアの黒いコーヒー豆で、あなたの家を幸せな香りで満たしましょう!."
  },
}

Персонализация тона голоса для создания описания

Чтобы помочь создать свой бренд и отличить свой интернет-магазин от других, вы можете персонализировать тон голоса ваших сгенерированных описаний. Текстовый API предлагает два варианта:

  • Выбор предопределенного тона: Вы можете выбрать из списка тонов для создания новых описаний. Список включает в себя следующие стили тонов:
    • По умолчанию: просто, понятно и элегантно.
    • Игривый: беззаботный, использующий позитивный язык, юмор (шутки, каламбуры) и преувеличения (без иронии, сарказма или эмодзи).
    • Формальный: стандартный английский, правильная грамматика, полные предложения, без сленга и сокращений.
    • Убедительный: логичный, лаконичный и аргументированный, способный убедить читателя.
    • Разговорный: Дружелюбный, понятный, повседневный язык.
  • Тон, специфичный для бренда: вы можете предоставить существующие описания или другие текстовые активы в тоне голоса вашего бренда. Модель Generative AI проанализирует тон текста и сгенерирует «дескриптор стиля письма» в соответствии со следующими аспектами:
    • Формальность (например, официальный, неформальный)
    • Многословность (например, лаконичный, очень многословный)
    • Тон (например, профессиональный, информативный, позитивный, убедительный)
    • Структура предложения (например, «простое предложение с несколькими союзами»)
    • Наиболее часто используемые слова и фразы

Клиентские библиотеки

Мы рекомендуем вам использовать клиентские библиотеки для отправки ваших запросов. Мы поделимся с вами клиентскими библиотеками, которые вы можете установить в своем проекте Maven.

Примеры кода

Выберите свой метод аутентификации и настройте эти примеры кода, используя эти инструкции . Вот пример, который вы можете использовать для генерации текстовых предложений.

Ява

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateProductTextSuggestionsRequest;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateProductTextSuggestionsResponse;
import com.google.shopping.merchant.productstudio.v1alpha.OutputSpec;
import com.google.shopping.merchant.productstudio.v1alpha.ProductInfo;
import com.google.shopping.merchant.productstudio.v1alpha.TextSuggestionsServiceClient;
import com.google.shopping.merchant.productstudio.v1alpha.TextSuggestionsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to generate product text suggestions. */
public class GenerateProductTextSuggestionsSample {

  private static String getName(String accountId) {
    return String.format("accounts/%s", accountId);
  }

  public static void generateProductTextSuggestions(Config config) throws Exception {
    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    TextSuggestionsServiceSettings textSuggestionsServiceSettings =
        TextSuggestionsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String name = getName(config.getAccountId().toString());

    // Calls the API and catches and prints any network failures/errors.
    try (TextSuggestionsServiceClient textSuggestionsServiceClient =
        TextSuggestionsServiceClient.create(textSuggestionsServiceSettings)) {

      ProductInfo productInfo =
          ProductInfo.newBuilder()
              .putProductAttributes("title", "Mens shirt")
              .putProductAttributes("description", "A blue shirt for men in size S")
              .build();

      OutputSpec outputSpec = OutputSpec.newBuilder().setWorkflowId("title").build();

      GenerateProductTextSuggestionsRequest request =
          GenerateProductTextSuggestionsRequest.newBuilder()
              .setName(name)
              .setProductInfo(productInfo)
              .setOutputSpec(outputSpec)
              .build();

      System.out.println("Sending GenerateProductTextSuggestions request: " + name);
      GenerateProductTextSuggestionsResponse response =
          textSuggestionsServiceClient.generateProductTextSuggestions(request);
      System.out.println("Generated product text suggestions response below:");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println("An error has occured: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    generateProductTextSuggestions(config);
  }
}

Распространенные ошибки и проблемы

Вот несколько распространенных ошибок и их решения.

Для создания текстовых предложений требуется информация о продукте

Если вы получили следующее сообщение об ошибке

Error message:
"error": {
    "code": 400,
    "message": "[product_info] Product info is required to generate text suggestions.",
    "status": "INVALID_ARGUMENT",
 ...
}

добавьте product_info в тело запроса и правильно заполните хотя бы один из product_attributes или product_image .

Например, публикация этого сообщения приведет к ошибке.

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "output_spec": {
      "workflow_id": "title"
   }
}

Для генерации текстовых предложений требуется как минимум одно поле product_info

Эта ошибка

{
  "error": {
    "code": 400,
    "message": "[product_info.product_attributes] At least one field of product_info is required to generate text suggestions.",
    "status": "INVALID_ARGUMENT",
 ...
}

является указанием на необходимость включения в тело запроса хотя бы одного поля product_info .

Например, публикация этого сообщения приведет к ошибке.

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
   },
   "output_spec": {
      "workflow_id": "title"
   }
}

Вместо этого используйте что-то вроде

   "product_info": {
        "product_attributes": {
         "description": "Selling size 12 Nike dunks. Oh they are red by the way!"
      }
   }

или

"product_info": {
    "product_image":{
        "uri": "https://cdn.shopify.com/s/files/1/0653/5879/0892/products/1672082339438_550x825.jpg?v=1672082415"
    }
}

(Что-то) требуется в каждом title_example

Ошибки, подобные следующим четырем примерам

{
  "error": {
    "code": 400,
    "message": "[title_examples.product_info] At least one field of product_info is required in each title_example.",
    "status": "INVALID_ARGUMENT",
 ...
}

или

{
  ...
    "message": "[title_examples.category] Category is required in each title_example.",
  ...
}

или

{
  ...
    "message": "[title_examples.title_format] Title format is required in each title_example.",
  ...
}

или

{
  ...
    "message": "[title_examples.final_product_info] At least one field of final_product_info is required in each title_example.",
  ...
}

указывают, что вы не заполнили обязательное подполе.

Например, следующий запрос вызовет ошибку.

POST
https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
    "product_info": {
        "product_attributes": {
            "description": "selling size 12 nike dunks. oh they are red by the way!"
        }
    },
    "output_spec": {
        "workflow_id": "title"
    },
    "title_examples": []
}

Чтобы решить эту проблему, для каждого title_example, указанного в запросе, заполните все следующие подполя:

  • product_info
  • category
  • title_format
  • final_product_info

Вот пример, который работает:

{
   "product_info": {
      "product_attributes": {
         "title": "Volumizing & Lengthening Mascara - Dark Brown",
         "description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
      }
   },
   "output_spec": {
      "workflow_id": "title"
   },
   "title_examples": [
    {
      "product_info": {
        "title": "Lash Paradise Volumizing & Lengthening Mascara - Waterproof - Blackest Black",
        "colour": "Black"
      },
      "title_format": "product",
      "category": "mascara",
      "final_product_info": {
        "product": "Mascara",
        "brand": "Lash Paradise",
        "mascara_type": "Volumizing & Lengthening",
        "colour": "Blackest Black",
        "waterproof": "Waterproof",
      }
    }
  ]
}

Неподдерживаемый workflow_id

Этот тип ошибки

{
  "error": {
    "code": 400,
    "message": "[\u003ceye3 title='/ProductStudioTextGenerationService.GenerateProductText, INVALID_ARGUMENT'/\u003e APPLICATION_ERROR; ... ;Unsupported workflow_id: attributes. Supported workflows are: [\"title\", \"description\", \"tide\"];AppErrorCode=3;StartTimeMs=1740696804045;unknown;ResFormat=uncompressed;ServerTimeSec=0.005976589;LogBytes=256;Non-FailFast;EffSecLevel=none;ReqFormat=uncompressed;ReqID=4d1786f59faa3ea7;GlobalID=0;Server=[2002:a05:6e16:618:b0:2c2:7cfc:bebd]:14001] Invalid value",
    "status": "INVALID_ARGUMENT",
 ...
}

возникнет в результате запроса вроде

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "title": "Volumizing & Lengthening Mascara - Dark Brown",
         "description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
   },
   "output_spec": {
      "workflow_id": "attributes"
   }
}

Запрос устанавливает workflow_id в значение «attributes», но это поле поддерживает только одно из следующих значений:

  • title : Создает или оптимизирует название продукта.
  • описание : Создает или оптимизирует описание продукта.
  • tide : Создает или оптимизирует как название продукта, так и его описание.

Неподдерживаемый тон

Ошибка «Неподдерживаемый тон», например

{
  "error": {
    "code": 400,
    "message": "[\u003ceye3 title='/ProductStudioTextGenerationService.GenerateProductText, INVALID_ARGUMENT'/\u003e APPLICATION_ERROR; ... ; Unsupported tone: 'asdf'. Supported tones are: [\"default\", \"playful\", \"formal\", \"persuasive\", \"conversational\"];AppErrorCode=3;StartTimeMs=1740697325058;unknown;ResFormat=uncompressed;ServerTimeSec=7.45346E-4;LogBytes=256;Non-FailFast;EffSecLevel=none;ReqFormat=uncompressed;ReqID=f7d9bbbc73a1d342;GlobalID=0;Server=[2002:a05:6918:3486:b0:2bc:ccd4:79e6]:14001] Invalid value",
    "status": "INVALID_ARGUMENT",
 ...
}

возникнет в результате запроса, например

POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}:generateProductTextSuggestions

{
   "product_info": {
      "product_attributes": {
         "title": "Volumizing & Lengthening Mascara - Dark Brown",
         "description": "This high-impact mascara delivers both voluptuous volume and dramatic length without clumping or smudging.",
   },
   "output_spec": {
      "workflow_id": "description"
      "tone": "cheerful"
   }
}

Обратите внимание, что tone задается как «веселая», но это поле поддерживает только одно из следующих значений:

  • по умолчанию : Просто, понятно и элегантно.
  • игривый : беззаботный, использующий позитивный язык, юмор (шутки, каламбуры) и преувеличения (без иронии, сарказма или эмодзи).
  • формальный : стандартный английский, правильная грамматика, полные предложения, без сленга и сокращений.
  • убедительный : логичный, лаконичный и аргументированный, чтобы убедить читателя.
  • разговорный : дружелюбный, понятный, повседневный язык.