AI21 Labs Jamba 模型 - Amazon Bedrock

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

AI21 Labs Jamba 模型

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

必填字段

AI21 Labs Jamba 模型支持以下必填字段:

  • Messages (messages) – 此聊天中之前的消息,从最旧(索引 0)到最新。列表中必须至少有一条用户或助手消息。包括用户输入和系统响应。列表的最大总大小约为 25.6 万个词元。每条消息包括以下成员:

  • Role (role) – 消息作者的角色。下列值之一:

    • User (user) – 用户提供的输入。此处给出的任何指令如果与 system 提示中的指令相冲突,则优先于 system 提示指令。

    • Assistant (assistant) – 模型生成的响应。

    • System (system) – 提供给系统的初始指令,用于为生成的信息的语气和声音提供一般指导。系统初始信息是可选的,但建议用于为聊天语气提供指导。例如:“您是一个乐于助人的聊天机器人,拥有地球科学背景和迷人的法国口音。”

  • Content (content) – 消息的内容。

推理参数

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

随机性和多样性

AI21 Labs Jamba 模型支持使用以下参数控制响应中的随机性和多样性。

  • Temperature (temperature)– 在每个答案中提供变化的程度。将此值设为 0 可保证每次对同一问题的回答都相同。设置较高的值会鼓励更多的变化。修改从中对词元进行采样的分布。默认:1.0,范围:0.0 - 2.0

  • Top P (top_p) – 将每一步的下一个词元池限制在可能的词元的前 N 百分位数,其中 1.0 表示所有可能的词元池,0.01 表示只包含最有可能的下一个词元池。

长度

AI21 Labs Jamba 模型支持使用以下参数来控制生成的响应的长度。

  • Max completion length (max_tokens) – 每条生成的响应消息所允许的最大标记数。通常情况下,限制输出长度的最佳方法是在系统提示中提供长度限制(例如,“请将答案限制在三句话以内”)。默认:4096,范围:0 - 4096。

  • Stop sequences (stop) – 当模型生成其中一个字符串时,结束消息。停止序列不包含在生成的消息中。每个序列的长度可达 64K,并且可以包含换行符作为 \n 字符。

    示例:

    • 带有单词和句号的单个停止字符串:"monkeys."

    • 多个停止字符串和一个换行符:["cat", "dog", " .", "####", "\n"]

  • Number of responses (n) – 要生成的聊天响应数量。注意,n 必须为 1 才能生成流式传输响应。如果 n 设置为大于 1,则设置 temperature=0 将始终失败,因为所有答案都保证是重复的。默认:1,范围:1 - 16

重复

AI21 Labs Jamba 模型支持使用以下参数来控制生成的响应中的重复次数。

  • Frequency Penalty (frequency_penalty) – 增加该数字可以降低单条响应消息中重复词语出现的频率。在响应生成过程中,词语出现的次数越多,该惩罚就会逐渐增加。如果设置为 2.0,生成的字符串中出现的重复词语就会很少。

  • Presence Penaltypresence_penalty)– 增加该数字可以降低单条消息中重复词语出现的频率。无论词语出现多少次,Presence Penalty 都是相同的,这一点与 Frequency 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 }