Создайте ответ поддержки с Bedrock

AWSBeginner
Практиковаться сейчас

Введение

Команде поддержки нужен черновик ответа на сообщение о двойном списании. Вы отправите обращение в Bedrock Runtime, уточните инструкции, изучите ответ и сравните использование токенов с ограничением вывода. AWS CLI уже настроена в новой VM LabEx; используйте только предоставленное синтетическое обращение.

Вы должны уметь запускать команды и читать текстовые файлы. Задача — создать и проверить черновик, а не отправлять сообщение клиенту или менять платёжные записи.

Связь с сертификацией

Сертификация Задача экзамена Практика
AI Practitioner (AIF-C01) Задачи 3.1, 3.2 Ограничить длину вывода, дать явные инструкции и проверить сгенерированный текст.

Концептуальная схема draw.io: обращение и инструкции поступают в Bedrock Converse; черновик и использование токенов требуют проверки.

Создайте черновик ответа поддержки

На этом шаге вы выберете доступную текстовую модель и отправите обращение в Bedrock Runtime.

Сверху AWS View показывает модель и реальные результаты запросов. Снизу в Terminal вводятся команды. До запроса ответов нет. Появится ожидающий запрос, затем ответ, использование и остаток лимита.

Bedrock предоставляет доступ к базовым моделям, способным создавать текст для разных задач. Идентификатор выбирает модель; Converse — общий формат запроса для поддерживаемых диалоговых моделей. Здесь используется текстовая модель, доступная в этом рабочем пространстве.

Начните в каталоге упражнения. cd меняет текущий каталог Terminal:

cd /home/labex/project

Выведите модели, создающие текст. --by-output-modality TEXT фильтрует каталог; --query выбирает идентификатор и читаемое имя; --output table показывает эти поля таблицей:

aws bedrock list-foundation-models \
  --by-output-modality TEXT \
  --query 'modelSummaries[].[modelId,modelName]' \
  --output table

Таблица содержит labex.text-v1:0, которую вы используете далее. Запись описывает модель, но не означает, что запрос вывода уже выполнен.

Запрос Converse содержит modelId, список messages и необязательные настройки вывода. У каждого сообщения есть role и блоки содержимого. Сообщение user содержит вопрос или задачу, текстовый блок использует поле text. maxTokens ограничивает вывод, а temperature управляет вариативностью выборки. Низкое значение может уменьшить различия, но не гарантирует точность или одинаковые ответы.

Создайте запрос JSON. cat > request.json записывает файл; <<'EOF' начинает буквальный многострочный ввод, последний EOF завершает его. Заменяется только указанный файл упражнения:

cat > request.json <<'EOF'
{
  "modelId": "labex.text-v1:0",
  "messages": [
    {
      "role": "user",
      "content": [{"text": "Customer ticket Q-42: the customer reports that invoice Q-42 was charged twice. Draft an English support reply in two sentences."}]
    }
  ],
  "inferenceConfig": {"maxTokens": 512, "temperature": 0}
}
EOF

Отправьте запрос через bedrock-runtime converse. --cli-input-json file://request.json читает поля из файла. Заключительное > reply.json сохраняет ответ JSON вместо вывода на экран:

aws bedrock-runtime converse \
  --cli-input-json file://request.json \
  > reply.json

Дождитесь возвращения приглашения Terminal. Создание текста обычно занимает несколько секунд. Не запускайте другой запрос, пока первый ожидает ответа.

Прочитайте ответ:

cat reply.json

Найдите output.message.role: "assistant" и непустой блок text. usage сообщает обработанные токены, metrics.latencyMs — время в миллисекундах. Разверните завершённый запрос в AWS View над Terminal и сравните ответ с файлом.

Внимательно прочитайте черновик. Утверждает ли он, что расследование началось, возврат выполнен или списание подтверждено? В обращении нет таких фактов. Связный ответ может выдумывать детали; далее вы уточните инструкции. Сгенерированная фраза не является выполненной платёжной операцией.

Уточните инструкции по написанию

На этом шаге вы добавите явные инструкции и создадите другой черновик по тем же сообщённым фактам.

Поле system задаёт инструкции по задаче и стилю. Оставьте обращение в пользовательском сообщении, а ограничения — в системном. Конкретные указания могут сократить лишние детали, но ответ всё равно нужно проверять.

Создайте отдельный запрос, сохранив первый черновик для сравнения:

cat > revised-request.json <<'EOF'
{
  "modelId": "labex.text-v1:0",
  "system": [
    {"text": "You draft customer-support replies. Use only the facts in the ticket. Write two concise English sentences. Acknowledge the customer's report and ask for information needed to verify it. Do not claim that a charge was confirmed, an investigation started or a refund issued."}
  ],
  "messages": [
    {
      "role": "user",
      "content": [{"text": "Customer ticket Q-42: the customer reports that invoice Q-42 was charged twice. No billing check or refund has been completed. Draft a reply."}]
    }
  ],
  "inferenceConfig": {"maxTokens": 512, "temperature": 0}
}
EOF

Создайте уточнённый черновик:

aws bedrock-runtime converse \
  --cli-input-json file://revised-request.json \
  > revised-reply.json

Проверьте сохранённый ответ стандартным форматировщиком JSON в Python: он проверяет корректность JSON и делает его читаемым:

python3 -m json.tool revised-reply.json

Разверните новый завершённый запрос в AWS View. Сравните оба черновика с обращением. Уточнённый запрос должен ясно выражать ожидания, но соответствие конкретного ответа всё ещё требует человеческой оценки. Не включайте выдуманную операцию в ответ клиенту.

Запросы независимы. Повторное использование модели не передаёт предыдущий ответ автоматически как историю. Последующий диалог должен явно включать предыдущие пользовательские сообщения и ответы ассистента в messages.

Проверьте токены и ограничения вывода

На этом шаге вы отправите ту же задачу с меньшим пределом вывода и изучите фактическое использование.

Токен — единица текста, обрабатываемая моделью, не обязательно одно слово. Входные токены включают задачу, системные инструкции и историю. Выходные — сгенерированные токены, о которых сообщает модель, включая возможные внутренние рассуждения. Возвращаемый totalTokens суммирует вход и выход.

maxTokens — верхняя граница, а не требование создать ровно столько токенов. Модель может закончить раньше. Создайте запрос с пределом 384 вместо 512:

cat > bounded-request.json <<'EOF'
{
  "modelId": "labex.text-v1:0",
  "system": [
    {"text": "You draft customer-support replies. Use only the facts in the ticket. Write two concise English sentences. Acknowledge the customer's report and ask for information needed to verify it. Do not claim that a charge was confirmed, an investigation started or a refund issued."}
  ],
  "messages": [
    {
      "role": "user",
      "content": [{"text": "Customer ticket Q-42: the customer reports that invoice Q-42 was charged twice. No billing check or refund has been completed. Draft a reply."}]
    }
  ],
  "inferenceConfig": {"maxTokens": 384, "temperature": 0}
}
EOF

Отправьте его и сохраните ответ:

aws bedrock-runtime converse \
  --cli-input-json file://bounded-request.json \
  > bounded-reply.json

Изучите результат:

python3 -m json.tool bounded-reply.json

Сравните usage.outputTokens с пределом 384. stopReason: "end_turn" означает нормальное завершение; "max_tokens" — достижение предела, поэтому текст может быть неполным. Не считайте частичный ответ завершённым документом.

AWS View показывает то же использование и остаток credits. Credits учитывают потребление входа и выхода конкретной модели; число токенов не задаёт общую цену для всех моделей. Повторный запрос может использовать кешированный результат: токены указаны, а credits не уменьшились. Ограничение сдерживает запрос, но меньший предел не гарантирует меньший расход этого короткого ответа по сравнению с каждым предыдущим.

Реальная AWS View новой VM: ограниченный ответ сообщает 96 входных и 330 выходных токенов и end_turn. Этот запуск использовал кешированный результат без уменьшения лимита; ваш текст, использование и время могут отличаться.

Если запрос завершился ошибкой или использование неопределённо, проверьте ошибку перед повтором. Неопределённый запрос может удерживать резерв, а новый запрос — расходовать ещё больше. Обработку таких случаев приложением вы изучите далее.

Удалите файлы упражнения

На этом шаге вы удалите локальные запросы и ответы после проверки черновиков.

Converse отправляет запрос вывода и не создаёт сервер или базу для удаления. Шесть файлов JSON — локальные результаты упражнения. Их удаление не отменяет токены и не возвращает потраченные credits.

rm удаляет названные файлы. Используйте точные имена ниже и сохраните остальные файлы проекта:

rm request.json reply.json revised-request.json revised-reply.json bounded-request.json bounded-reply.json

Выведите оставшиеся видимые элементы рабочего каталога:

ls

Шесть файлов должны отсутствовать. AWS View сохраняет реальные завершённые результаты этой VM с использованием. Удаление локального файла не превращает неудачный запрос в успешный и не стирает расход.

Заключение

Вы отправили реальные текстовые запросы Bedrock Converse, уточнили системные инструкции, проверили ответы и токены, ограничили вывод и удалили локальные файлы. Вы также отличили правдоподобный черновик от проверенного делового факта: перед использованием ответ нужно проверить.

Подробнее см. в документации AWS: Сообщения, инструкции и настройки вывода Converse; Содержимое ответа, причины остановки и использование Converse.