

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AI21 Labs 模型
<a name="model-parameters-ai21"></a>

本部分介绍 AI21 Labs 模型的请求参数和响应字段。使用这些信息，您可以通过 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 和 [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)（流式处理）操作对 AI21 Labs 模型进行推理调用。本部分还包括 Python 代码示例，展示了如何调用 AI21 Labs 模型。要在推理操作中使用模型，您需要相关模型的模型 ID。要获取模型 ID，请参阅 [Amazon Bedrock 中支持的根基模型](models-supported.md)。有些模型还能与 [Converse API](conversation-inference.md) 配合使用。要查看 Converse API 是否支持特定的 AI21 Labs 模型，请参阅[支持的模型和模型功能](conversation-inference-supported-models-features.md)。有关更多代码示例，请参阅 [使用 Amazon Bedrock 的代码示例 AWS SDKs](service_code_examples.md)。

Amazon Bedrock 中的基础模型支持输入和输出模态，这些模态因模型而异。要查看 AI21 Labs 模型支持的模态，请参阅 [Amazon Bedrock 中支持的根基模型](models-supported.md)。要查看 AI21 Labs 模型支持哪些 Amazon Bedrock 功能，请参阅 [Amazon Bedrock 中支持的根基模型](models-supported.md)。要查看 AI21 Labs 模型在哪些 AWS 区域中可用，请参阅 [Amazon Bedrock 中支持的根基模型](models-supported.md)。

使用 AI21 Labs 模型进行推理调用时，您可以为模型创建提示。有关为 Amazon Bedrock 支持的模型创建提示的一般信息，请参阅 [提示工程概念](prompt-engineering-guidelines.md)。有关 AI21 Labs 的特定提示信息，请参阅 [AI21 Labs 提示工程指南](https://docs.ai21.com/docs/prompt-engineering)。

**Topics**
+ [AI21 Labs Jurassic-2 模型](model-parameters-jurassic2.md)
+ [AI21 Labs Jamba 模型](model-parameters-jamba.md)

# AI21 Labs Jurassic-2 模型
<a name="model-parameters-jurassic2"></a>

本部分介绍了使用 AI21 Labs AI21 Labs Jurassic-2 模型所需的推理参数和相关代码示例。

**Topics**
+ [推理参数](#model-parameters-jurassic2-request-response)
+ [代码示例](#api-inference-examples-a2i-jurassic)

## 推理参数
<a name="model-parameters-jurassic2-request-response"></a>

AI21 Labs Jurassic-2 模型支持以下推理参数。

**Topics**
+ [随机性和多样性](#model-parameters-jurassic2-random)
+ [Length](#model-parameters-jurassic2-length)
+ [重复](#model-parameters-jurassic2-reps)
+ [模型调用请求正文字段](#model-parameters-jurassic2-request-body)
+ [模型调用响应正文字段](#model-parameters-jurassic2-response-body)

### 随机性和多样性
<a name="model-parameters-jurassic2-random"></a>

AI21 Labs Jurassic-2 模型支持使用以下参数来控制响应中的随机性和多样性。
+ **Temperature** (`temperature`) – 使用较低的值可降低响应中的随机性。
+ **Top P** (`topP`) – 使用较低的值可忽略不太可能的选项。

### Length
<a name="model-parameters-jurassic2-length"></a>

AI21 Labs Jurassic-2 模型支持使用以下参数控制生成的响应的长度。
+ **Max completion length** (`maxTokens`) – 指定生成的响应中的最大令牌数。
+ **Stop sequences** (`stopSequences`) – 配置模型可识别的停止序列，遇到停止序列后，模型停止生成更多令牌。按 Enter 键可在停止序列中插入换行符。使用 Tab 键结束对停止序列的插入。

### 重复
<a name="model-parameters-jurassic2-reps"></a>

AI21 Labs Jurassic-2 模型支持使用以下参数控制生成的响应中的重复次数。
+ **Presence penalty** (`presencePenalty`) – 使用较高的值可降低生成的新令牌已在提示或完成内容中至少出现过一次的概率。
+ **Count penalty** (`countPenalty`) – 使用较高的值可降低生成的新令牌已在提示或完成内容中至少出现过一次的概率。与出现次数成正比。
+ **Frequency penalty** (`frequencyPenalty`) – 使用较高的值可降低生成的新令牌已在提示或完成内容中至少出现过一次的概率。此值与令牌出现的频率成正比（标准化为文本长度）。
+ **Penalize special tokens** — 降低特殊字符重复出现的概率。默认值为 `true`。
  + **Whitespaces** (`applyToWhitespaces`) – `true` 值会将惩罚应用于空格和新行。
  + **Punctuations** (`applyToPunctuation`) – `true` 值会将惩罚应用于标点。
  + **Numbers** (`applyToNumbers`) – `true` 值会将惩罚应用于数字。
  + **Stop words** (`applyToStopwords`) – `true` 值会将惩罚应用于停顿词。
  + **Emojis** (`applyToEmojis`) – `true` 值且将表情符号排除在惩罚范围之外。

### 模型调用请求正文字段
<a name="model-parameters-jurassic2-request-body"></a>

当您使用 AI21 Labs 模型调用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 或 [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) 时，请使用遵循以下格式的 JSON 对象填写 `body` 字段。在 `prompt` 字段中输入提示。

```
{
    "prompt": string,
    "temperature": float,
    "topP": float,
    "maxTokens": int,
    "stopSequences": [string],
    "countPenalty": {
        "scale": float
    },
    "presencePenalty": {
        "scale": float
    },
    "frequencyPenalty": {
        "scale": float
    }
}
```

要惩罚特殊令牌，请将这些字段添加到任何惩罚对象中。例如，您可以按如下方式修改 `countPenalty` 字段。

```
"countPenalty": {
    "scale": float,
    "applyToWhitespaces": boolean,
    "applyToPunctuations": boolean,
    "applyToNumbers": boolean,
    "applyToStopwords": boolean,
    "applyToEmojis": boolean
}
```

下表显示了数字参数的最小值、最大值和默认值。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/model-parameters-jurassic2.html)

### 模型调用响应正文字段
<a name="model-parameters-jurassic2-response-body"></a>

有关响应中的 `body` 字段的格式的信息，请参阅 [https://docs.ai21.com/reference/j2-complete-api-ref](https://docs.ai21.com/reference/j2-complete-api-ref)。

**注意**  
Amazon Bedrock 会以整数值的形式返回响应标识符（`id`）。

## 代码示例
<a name="api-inference-examples-a2i-jurassic"></a>

此示例展示了如何调用 *A2I AI21 Labs Jurassic-2 Mid* 模型。

```
import boto3
import json

brt = boto3.client(service_name='bedrock-runtime')

body = json.dumps({
    "prompt": "Translate to spanish: 'Amazon Bedrock is the easiest way to build and scale generative AI applications with base models (FMs)'.", 
    "maxTokens": 200,
    "temperature": 0.5,
    "topP": 0.5
})

modelId = 'ai21.j2-mid-v1'
accept = 'application/json'
contentType = 'application/json'

response = brt.invoke_model(
    body=body, 
    modelId=modelId, 
    accept=accept, 
    contentType=contentType
)

response_body = json.loads(response.get('body').read())

# text
print(response_body.get('completions')[0].get('data').get('text'))
```

# AI21 Labs Jamba 模型
<a name="model-parameters-jamba"></a>

本部分介绍了使用 AI21 Labs Jamba 模型所需的推理参数和相关代码示例。

**Topics**
+ [必填字段](#model-parameters-jamba-required-fields)
+ [推理参数](#model-parameters-jamba-request-response)
+ [模型调用请求正文字段](#model-parameters-jamba-request-body)
+ [模型调用响应正文字段](#model-parameters-jamba-response-body)
+ [代码示例](#api-inference-examples-a2i-jamba)
+ [Jamba 1.5 Large 的代码示例](#api-inference-examples-a2i-jamba15-large)

## 必填字段
<a name="model-parameters-jamba-required-fields"></a>

AI21 Labs Jamba 模型支持以下必填字段：
+ **Messages** (`messages`) – 此聊天中之前的消息，从最旧（索引 0）到最新。列表中必须至少有一条用户或助手消息。包括用户输入和系统响应。列表的最大总大小约为 25.6 万个词元。每条消息包括以下成员：
+ **Role** (`role`) – 消息作者的角色。下列值之一：
  + **User** (`user`) – 用户提供的输入。此处给出的任何指令如果与 `system` 提示中的指令相冲突，则优先于 `system` 提示指令。
  + **Assistant** (`assistant`) – 模型生成的响应。
  + **System** (`system`) – 提供给系统的初始指令，用于为生成的信息的语气和声音提供一般指导。系统初始信息是可选的，但建议用于为聊天语气提供指导。例如：“您是一个乐于助人的聊天机器人，拥有地球科学背景和迷人的法国口音。”
+ **Content** (`content`) – 消息的内容。

## 推理参数
<a name="model-parameters-jamba-request-response"></a>

AI21 Labs Jamba 模型支持以下推理参数。

**Topics**
+ [随机性和多样性](#model-parameters-jamba-random)
+ [Length](#model-parameters-jamba-length)
+ [重复](#model-parameters-jamba-reps)

### 随机性和多样性
<a name="model-parameters-jamba-random"></a>

AI21 Labs Jamba 模型支持使用以下参数控制响应中的随机性和多样性。
+ **Temperature** (`temperature`)– 在每个答案中提供变化的程度。将此值设为 0 可保证每次对同一问题的回答都相同。设置较高的值会鼓励更多的变化。修改从中对词元进行采样的分布。默认：1.0，范围：0.0 - 2.0
+ **Top P** (`top_p`) – 将每一步的下一个词元池限制在可能的词元的前 N 百分位数，其中 1.0 表示所有可能的词元池，0.01 表示只包含最有可能的下一个词元池。

### Length
<a name="model-parameters-jamba-length"></a>

AI21 Labs Jamba 模型支持使用以下参数来控制生成的响应的长度。
+ **Max completion length** (`max_tokens`) – 每条生成的响应消息所允许的最大标记数。通常情况下，限制输出长度的最佳方法是在系统提示中提供长度限制（例如，“请将答案限制在三句话以内”）。默认：4096，范围：0 - 4096。
+ **Stop sequences** (`stop`) – 当模型生成其中一个字符串时，结束消息。停止序列不包含在生成的消息中。每个序列的长度可达 64K，并且可以包含换行符作为 \$1n 字符。

  示例：
  + 带有单词和句号的单个停止字符串："monkeys."
  + 多个停止字符串和一个换行符：["cat", "dog", " .", "\$1\$1\$1\$1", "\$1n"]
+ **Number of responses** (`n`) – 要生成的聊天响应数量。注意，n 必须为 1 才能生成流式传输响应。如果 n 设置为大于 1，则设置 `temperature=0` 将始终失败，因为所有答案都保证是重复的。默认：1，范围：1 - 16

### 重复
<a name="model-parameters-jamba-reps"></a>

AI21 Labs Jamba 模型支持使用以下参数来控制生成的响应中的重复次数。
+ **Frequency Penalty** (`frequency_penalty`) – 增加该数字可以降低单条响应消息中重复词语出现的频率。在响应生成过程中，词语出现的次数越多，该惩罚就会逐渐增加。如果设置为 2.0，生成的字符串中出现的重复词语就会很少。
+ **Presence Penalty**（`presence_penalty`）– 增加该数字可以降低单条消息中重复词语出现的频率。无论词语出现多少次，Presence Penalty 都是相同的，这一点与 Frequency Penalty 不同。

## 模型调用请求正文字段
<a name="model-parameters-jamba-request-body"></a>

当您使用 AI21 Labs 模型调用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 或 [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) 时，请使用遵循以下格式的 JSON 对象填写 `body` 字段。在 `prompt` 字段中输入提示。

```
{
  "messages": [
    {
      "role":"system", // Non-printing contextual information for the model
      "content":"You are a helpful history teacher. You are kind and you respond with helpful content in a professional manner. Limit your answers to three sentences. Your listener is a high school student."
    },
    {
      "role":"user", // The question we want answered.
      "content":"Who was the first emperor of rome?"
    }
  ],
  "n":1 // Limit response to one answer
}
```

## 模型调用响应正文字段
<a name="model-parameters-jamba-response-body"></a>

有关响应中的 `body` 字段的格式的信息，请参阅 [https://docs.ai21.com/reference/jamba-instruct-api\$1response-details](https://docs.ai21.com/reference/jamba-instruct-api#response-details)。

## 代码示例
<a name="api-inference-examples-a2i-jamba"></a>

此示例演示了如何调用 *AI21 Labs Jamba-Instruct* 模型。

**`invoke_model`**

```
import boto3 
import json

bedrock = session.client('bedrock-runtime', 'us-east-1') 
response = bedrock.invoke_model( 
        modelId='ai21.jamba-instruct-v1:0', 
        body=json.dumps({
            'messages': [ 
                { 
                    'role': 'user', 
                    'content': 'which llm are you?' 
                } 
             ], 
         }) 
       ) 

print(json.dumps(json.loads(response['body']), indent=4))
```

**converse**

```
import boto3 
import json

bedrock = session.client('bedrock-runtime', 'us-east-1')
response = bedrock.converse( 
    modelId='ai21.jamba-instruct-v1:0', 
    messages=[ 
        { 
            'role': 'user', 
            'content': [ 
                { 
                    'text': 'which llm are you?' 
                } 
             ] 
          } 
     ] 
  ) 

print(json.dumps(json.loads(response['body']), indent=4))
```

## Jamba 1.5 Large 的代码示例
<a name="api-inference-examples-a2i-jamba15-large"></a>

此示例演示了如何调用 *AI21 Labs Jamba 1.5 Large* 模型。

**`invoke_model`**

```
POST https://bedrock-runtime.us-east-1.amazonaws.com/model/ai21.jamba-1-5-mini-v1:0/invoke-model HTTP/1.1
{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful chatbot with a background in earth sciences and a charming French accent."
    },
    {
      "role": "user",
      "content": "What are the main causes of earthquakes?"
    }
  ],
  "max_tokens": 512,
  "temperature": 0.7,
  "top_p": 0.9,
  "stop": ["###"],
  "n": 1
}
```