Gerando texto com modelos de linguagem

Introdução ao Amazon Bedrock

Nikhil Rangarajan

Data Scientist

Enviando prompts para modelos de linguagem

  • Prompt: o texto que você envia para o modelo
    • "Explain how AWS Lambda works"

Um ícone representando o prompt.

Introdução ao Amazon Bedrock

Enviando prompts para modelos de linguagem

  • Prompt: o texto que você envia para o modelo
    • "Explain how AWS Lambda works"
  • Completion: o texto gerado pelo modelo
    • "AWS Lambda is a serverless compute service that..."

Ícones representando o prompt e a completion.

Introdução ao Amazon Bedrock

Enviando prompts para modelos de linguagem

  • Prompt: o texto que você envia para o modelo
    • "Explain how AWS Lambda works"
  • Completion: o texto gerado pelo modelo
    • "AWS Lambda is a serverless compute service that..."
  • Response:
    • Texto gerado (completion)
    • Metadados (tokens, info do modelo)
    • Status

Três ícones em sequência representando o prompt, a completion e a response.

Introdução ao Amazon Bedrock

Aplicando técnicas básicas de prompt engineering

  • Técnicas para melhores resultados:
    • Clareza e especificidade: instruções detalhadas e precisas
    • Definir um papel: dar uma persona para melhorar o contexto
    • Instruções de formatação: adicionar limites para guiar a resposta
"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."
Introdução ao Amazon Bedrock

Técnicas avançadas de parsing de texto

  • Tratar chaves ausentes ou inesperadas
data = json.loads(response['body'].read())
if 'completion' in data:
    output = data['completion']

else: output = "Key not found"
  • Parsing JSON em vários níveis para navegar estruturas aninhadas
try:
    nova_output = data.decode()["output"]

except (KeyError, IndexError) as e: nova_output = f"Error: {str(e)}"
Introdução ao Amazon Bedrock

Processamento de respostas e tratamento de texto

  • Problemas de Unicode/codificação: tratar caracteres especiais nas respostas
    # Ensure proper encoding
    output = data['completion'].encode('utf-8').decode('unicode_escape')
    print(output)
    
  • Processar respostas grandes: dividir ou truncar para usabilidade
    # Truncate response for display
    output = data['completion'][:500]  # Limit to 500 characters
    print(output)
    
Introdução ao Amazon Bedrock

Extração de categorias com Bedrock

  • Exemplo: classificar dados de texto
  • Use prompts estruturados com categorias claras
  • Instrua saída com única categoria
  • Processe respostas do modelo com eficiência
  • Resultado: categorização precisa

Ícones representando classificação de texto

Introdução ao Amazon Bedrock

Extração de categorias com 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"}}
Introdução ao Amazon Bedrock

Vamos praticar!

Introdução ao Amazon Bedrock

Preparing Video For Download...