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) - 생성된 각 응답 메시지에 대해 허용할 최대 토큰 수입니다. 일반적으로 출력 길이를 제한하는 가장 좋은 방법은 시스템 프롬프트에 길이 제한을 제공하는 것입니다(예: '답변은 3개 문장으로 제한하세요'). 기본값: 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 }