Генерация текста с помощью языковых моделей

Введение в Amazon Bedrock

Nikhil Rangarajan

Data Scientist

Отправка промптов языковым моделям

  • Промпт: входной текст, который вы отправляете модели
    • «Explain how AWS Lambda works»

Значок, представляющий промпт.

Введение в Amazon Bedrock

Отправка промптов языковым моделям

  • Промпт: входной текст, который вы отправляете модели
    • «Explain how AWS Lambda works»
  • Завершение: текст, сгенерированный моделью
    • «AWS Lambda is a serverless compute service that...»

Значки, представляющие промпт и завершение.

Введение в Amazon Bedrock

Отправка промптов языковым моделям

  • Промпт: входной текст, который вы отправляете модели
    • «Explain how AWS Lambda works»
  • Завершение: текст, сгенерированный моделью
    • «AWS Lambda is a serverless compute service that...»
  • Ответ:
    • Сгенерированный текст (завершение)
    • Метаданные (токены, информация о модели)
    • Сведения о статусе

Три значка, представляющие промпт, завершение и ответ.

Введение в Amazon Bedrock

Основные техники проектирования промптов

  • Техники для улучшения результатов:
    • Чёткость и конкретность: пишите детальные и точные инструкции
    • Назначение роли: задайте персону для улучшения контекстного понимания
    • Инструкции по форматированию: добавьте ограничения для управления ответом
"Explain the benefits of exercise 
in simple terms."
"You are a nutritionist. Explain the 
benefits of a balanced diet."
"List the top 3 benefits of cloud 
computing in bullet points."
Введение в Amazon Bedrock

Продвинутые техники разбора текста

  • Обработка отсутствующих или неожиданных ключей
data = json.loads(response['body'].read())
if 'completion' in data:
    output = data['completion']

else: output = "Key not found"
  • Многоуровневый разбор JSON для навигации по глубоко вложенным структурам
try:
    nova_output = data.decode()["output"]

except (KeyError, IndexError) as e: nova_output = f"Error: {str(e)}"
Введение в Amazon Bedrock

Обработка ответов и работа с текстом

  • Проблемы кодировки и Unicode: обработка специальных символов в текстовых ответах
    # Ensure proper encoding
    output = data['completion'].encode('utf-8').decode('unicode_escape')
    print(output)
    
  • Обработка больших ответов: разбивка или усечение объёмных выводов для удобства
    # Truncate response for display
    output = data['completion'][:500]  # Limit to 500 characters
    print(output)
    
Введение в Amazon Bedrock

Извлечение категорий с помощью Bedrock

  • Пример: классификация текстовых данных
  • Используйте структурированные промпты с чёткими вариантами категорий
  • Давайте явные инструкции для вывода единственной категории
  • Эффективно обрабатывайте ответы модели
  • Результат: точная категоризация текста

Значки, представляющие классификацию текста

Введение в Amazon Bedrock

Извлечение категорий с помощью Bedrock

def categorize_ticket(ticket, categories):
  prompt = f"Categorize into one: {', '.join(categories)}. 
  Ticket: {ticket}"
  response = bedrock.invoke_model(
    modelId='amazon.nova-micro-v1:0',
    body=json.dumps({"messages": [{"role": "user", "content": 
                                   [{"text": prompt}]}]}))

return json.loads(nova_response.get("body").read().decode())["output"]
{"output": {"message": {"role": "assistant","content": [
        {
          "text": "Customer Service"
        }]}, "stop_reason": "stop_sequence"}}
Введение в Amazon Bedrock

Давайте потренируемся!

Введение в Amazon Bedrock

Preparing Video For Download...