

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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`) – 此聊天中先前的訊息，從最舊的 (索引 0) 到最新的。清單中必須至少有一個使用者或助理訊息。同時包含使用者輸入和系統回應。清單的總大小上限為約 256K 個字符。每個訊息都包含下列成員：
+ **角色** (`role`) – 訊息作者的角色。下列其中一值：
  + **使用者** (`user`) – 使用者提供的輸入。此處所提供的任何指示若與 `system` 提示中提供的指示衝突，皆優先於 `system` 提示指示。
  + **助理** (`assistant`) – 模型產生的回應。
  + **系統** (`system`) – 提供給系統的初始指示，以提供有關所產生訊息其語調和語氣的一般指引。初始系統訊息是選用的，但建議提供有關聊天語調的指引。例如，「您是一個樂於助人的聊天機器人，擁有地球科學背景及迷人的法國口音。」
+ **內容** (`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`) – 每個答案提供多少變化。將此值設定為 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_tokens`) – 每個所產生回應訊息允許的字符數量上限。一般而言，限制輸出長度的最佳方法是在系統提示中提供長度限制 (例如，「將您的回答限制為三個句子」)。預設值：4096，範圍：0 – 4096。
+ **停止序列** (`stop`) – 在模型產生其中一個字串時結束訊息。停止序列不包含在產生的訊息中。每個序列的長度最多可達 64K，而且可以採用 \\n 字元形式包含新行。

  範例：
  + 包含單字和句號的單一停止字串："monkeys."。
  + 多個停止字串和新行：["cat", "dog", " .", "\#\#\#\#", "\\n"]
+ **回應數量** (`n`) – 要產生的聊天回應數量。請注意，串流回應的 n 必須為 1。如果將 n 設定為大於 1，則設定 `temperature=0` 將一律失敗，因為所有回答保證都是重複的。預設值：1，範圍：1 – 16

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

AI21 Labs Jamba 模型支援以下參數，以控制產生的回應中的重複數。
+ **頻率懲罰 **(`frequency_penalty`) – 透過增加此數字，減少單一回應訊息中重複單字的頻率。此懲罰會在回應產生期間逐漸增加單字出現的次數。設定為 2.0 將產生一個幾乎沒有重複單字 (若有的話) 的字串。
+ **出現懲罰** (`presence_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` 欄位格式的相關資訊，請參閱 [AI21 Jamba API 參考](https://docs.ai21.com/reference/jamba-1-6-api-ref)。

## 程式碼範例
<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
}
```