使用语言模型生成文本

Amazon Bedrock 入门

Nikhil Rangarajan

Data Scientist

向语言模型发送提示

  • Prompt:发送给模型的输入文本
    • "Explain how AWS Lambda works"

代表提示的图标。

Amazon Bedrock 入门

向语言模型发送提示

  • Prompt:发送给模型的输入文本
    • "Explain how AWS Lambda works"
  • Completion:模型生成的文本
    • "AWS Lambda is a serverless compute service that..."

表示提示与补全的图标。

Amazon Bedrock 入门

向语言模型发送提示

  • Prompt:发送给模型的输入文本
    • "Explain how AWS Lambda works"
  • Completion:模型生成的文本
    • "AWS Lambda is a serverless compute service that..."
  • Response:
    • 生成文本(completion)
    • 元数据(tokens、模型信息)
    • 状态信息

三个连续图标,表示提示、补全与响应。

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...