AI21 Labs Jamba 模型 - Amazon Bedrock

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

AI21 Labs Jamba 模型

本節提供推論參數和使用 AI21 Labs Jamba 模型的程式碼範例。

必要欄位

AI21 Labs Jamba 模型支援下列必要欄位:

  • 訊息 (messages) – 此聊天中先前的訊息,從最舊的 (索引 0) 到最新的。清單中必須至少有一個使用者或助理訊息。同時包含使用者輸入和系統回應。清單的總大小上限為約 256K 個字符。每個訊息都包含下列成員:

  • 角色 (role) – 訊息作者的角色。下列其中一值:

    • 使用者 (user) – 使用者提供的輸入。此處所提供的任何指示若與 system 提示中提供的指示衝突,皆優先於 system 提示指示。

    • 助理 (assistant) – 模型產生的回應。

    • 系統 (system) – 提供給系統的初始指示,以提供有關所產生訊息其語調和語氣的一般指引。初始系統訊息是選用的,但建議提供有關聊天語調的指引。例如,「您是一個樂於助人的聊天機器人,擁有地球科學背景及迷人的法國口音。」

  • 內容 (content) – 訊息的內容。

推論參數

AI21 Labs Jamba 模型支援以下推論參數。

隨機性和多樣性

AI21 Labs Jamba 模型支援下列參數,以控制回應中的隨機性和多樣性。

  • 溫度 (temperature) – 每個答案提供多少變化。將此值設定為 0 可確保每次對相同問題的回應都相同。設定的值越高,表示鼓勵更多變化。修改要從中取樣字符的分佈。預設值:1.0,範圍:0.0 – 2.0

  • Top P (top_p) – 將每個步驟中下一個字符的集區限制為可能字符的前 N 個百分位數,其中 1.0 表示所有可能字符的集區,0.01 表示僅最可能下一個字符的集區。

長度

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

重複

AI21 Labs Jamba 模型支援以下參數,以控制產生的回應中的重複數。

  • 頻率懲罰 (frequency_penalty) – 透過增加此數字,減少單一回應訊息中重複單字的頻率。此懲罰會在回應產生期間逐漸增加單字出現的次數。設定為 2.0 將產生一個幾乎沒有重複單字 (若有的話) 的字串。

  • 出現懲罰 (presence_penalty) – 增加此數字,以減少單一訊息中出現重複單字的頻率。與頻率懲罰不同,無論單字出現多少次,出現懲罰都是相同的。

模型調用請求內文欄位

當您使用 AI21 Labs 模型進行 InvokeModelInvokeModelWithResponseStream 呼叫時,請使用符合下列的 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 }

模型調用回應內文欄位

如需有關回應中 body 欄位格式的資訊,請參閱 https://docs.ai21.com/reference/jamba-instruct-api#response-details

程式碼範例

此範例示範如何呼叫 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 的程式碼範例

此範例說明如何呼叫 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 }