

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

# 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
}
```