本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 模型進行 InvokeModel 或 InvokeModelWithResponseStream 呼叫時,請使用符合下列的 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 }