

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# TwelveLabs 모델
<a name="model-parameters-twelvelabs"></a>

이 섹션에서는 TwelveLabs 모델에 대한 요청 파라미터 및 응답 필드에 대해 설명합니다. 이 정보를 사용하여 TwelveLabs 모델에 대한 추론 직접 호출을 수행합니다. TwelveLabs Pegasus 1.2 모델은 [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)(스트리밍) 작업을 지원합니다. TwelveLabs Marengo Embed 2.7 및 TwelveLabs Marengo Embed 3.0 모델은 [StartAsyncInvoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html) 작업을 지원합니다. 이 섹션에는 TwelveLabs 모델을 직접 호출하는 방법을 보여주는 코드 예제도 포함되어 있습니다. 추론 작업에서 모델을 사용하려면 해당 모델의 모델 ID가 필요합니다. 모델 ID를 가져오려면 [Amazon Bedrock에서 지원되는 파운데이션 모델](models-supported.md) 섹션을 참조하세요.

TwelveLabs는 비디오 이해 및 분석을 전문으로 하는 멀티모달 AI 모델의 선도적인 공급자입니다. 고급 모델은 최첨단 컴퓨터 비전과 자연어 처리 기술을 통해 정교한 비디오 검색, 분석 및 콘텐츠 생성 기능을 지원합니다.

Amazon Bedrock은 세 가지 TwelveLabs 모델을 제공합니다.
+ TwelveLabs Pegasus 1.2는 포괄적인 비디오 이해 및 분석을 제공합니다.
+ TwelveLabs Marengo Embed 2.7는 비디오, 텍스트, 오디오 및 이미지 콘텐츠에 대한 고품질 임베딩을 생성합니다.
+ TwelveLabs Marengo Embed 3.0는 향상된 성능과 기능을 갖춘 최신 임베딩 모델입니다.

이러한 모델은 비디오 데이터를 대규모로 처리, 분석 및 도출하는 애플리케이션을 구축하는 데 도움이 됩니다.

**TwelveLabs Pegasus 1.2**

콘텐츠 인식, 장면 감지, 컨텍스트 이해 등 포괄적인 비디오 이해 및 분석 기능을 제공하는 멀티모달 모델입니다. 모델은 비디오 콘텐츠를 분석하고 비디오에 대한 질문에 대한 텍스트 설명, 인사이트 및 답변을 생성할 수 있습니다.

**TwelveLabs Marengo Embed 2.7**

유사성 검색, 클러스터링 및 기타 기계 학습 태스크를 위해 비디오, 텍스트, 오디오 및 이미지 콘텐츠의 고품질 벡터 표현을 생성하는 멀티모달 임베딩 모델입니다. 모델은 여러 입력 형식을 지원하며 다양한 사용 사례에 최적화된 특수 임베딩을 제공합니다.

**TwelveLabs Marengo Embed 3.0**

텍스트 및 이미지 인터리브 입력 양식을 지원하여 Marengo 2.7의 기능을 확장하는 향상된 멀티모달 임베딩 모델입니다. 이 모델은 유사성 검색, 클러스터링 및 기타 기계 학습 작업을 위해 비디오, 텍스트, 오디오, 이미지 및 인터리브 텍스트 이미지 콘텐츠의 고품질 벡터 표현을 생성합니다.

**Topics**
+ [TwelveLabs Pegasus 1.2](model-parameters-pegasus.md)
+ [TwelveLabs Marengo Embed 2.7](model-parameters-marengo.md)
+ [TwelveLabs Marengo Embed 3.0](model-parameters-marengo-3.md)

# TwelveLabs Pegasus 1.2
<a name="model-parameters-pegasus"></a>

TwelveLabs Pegasus 1.2 모델은 포괄적인 비디오 이해 및 분석 기능을 제공합니다. 비디오 콘텐츠를 분석하고 비디오에 대한 질문에 대한 텍스트 설명, 인사이트 및 답변을 생성할 수 있습니다.

이 정보를 사용하여 InvokeModel 및 InvokeModelWithResponseStream(스트리밍) 작업으로 TwelveLabs 모델에 대한 추론 직접 호출을 수행합니다.
+ 공급자 - TwelveLabs
+ 범주 - 비디오 이해, 콘텐츠 분석
+ 모델 ID - `twelvelabs.pegasus-1-2-v1:0`
+ 입력 양식 - 비디오
+ 출력 양식 - 텍스트
+ 최대 비디오 크기 - 1시간 길이의 비디오(파일 크기 2GB 미만)

## TwelveLabs Pegasus 1.2 요청 파라미터
<a name="model-parameters-pegasus-request"></a>

다음 표는 TwelveLabs Pegasus 1.2 모델의 입력 파라미터를 설명합니다.


**TwelveLabs Pegasus 1.2 요청 파라미터**  

| Field | 유형 | 필수 | 설명 | 
| --- | --- | --- | --- | 
| inputPrompt | 문자열 | 예 | 비디오를 분석하라는 프롬프트입니다. 최대: 토큰 2,000개. | 
| temperature | double | 아니요 | 모델의 온도입니다. 출력의 무작위화를 제어합니다. 기본값: 0.2, 최소: 0, 최대: 1. | 
| responseFormat | 객체 | 아니요 | 사용자가 구조화된 출력 형식을 지정할 수 있습니다. 현재 json\$1schema만 지원합니다. | 
| mediaSource | 객체 | 예 | 미디어 소스를 설명합니다. base64String 또는 s3Location을 제공해야 합니다. | 
| mediaSource.base64String | 문자열 | No | 비디오의 Base64 인코딩 바이트 문자열입니다. 최대: 25MB. | 
| mediaSource.s3Location.uri | 문자열 | No | 비디오를 다운로드할 수 있는 S3 URI입니다. 최대: 1시간 길이의 비디오(파일 크기 2GB 미만) | 
| mediaSource.s3Location.bucketOwner | 문자열 | No | 버킷 소유자의 AWS 계정 ID입니다. | 
| maxOutputTokens | 정수 | 아니요 | 생성할 최대 토큰 수입니다. 최대: 4,096개. | 

## TwelveLabs Pegasus 1.2 응답 필드
<a name="model-parameters-pegasus-response"></a>

다음 표에서는 TwelveLabs Pegasus 1.2 모델의 출력 필드를 설명합니다.


**TwelveLabs Pegasus 1.2 응답 필드**  

| Field | Type | 설명 | 
| --- | --- | --- | 
| message | 문자열 | 모델의 비디오 분석이 포함된 출력 메시지입니다. | 
| finishReason | 문자열 | 출력이 종료된 이유를 설명하는 중지 이유입니다. 유효한 값: stop(API는 한도에 도달하지 않고 전체 완료를 반환함), length(생성이 max\$1tokens 한도를 초과함). | 

## TwelveLabs Pegasus 1.2 요청 및 응답
<a name="model-parameters-pegasus-examples"></a>

다음 예제에서는 다양한 입력 소스에서 TwelveLabs Pegasus 1.2 모델을 사용하는 방법을 보여줍니다.

------
#### [ Request ]

다음 예제에서는 TwelveLabs Pegasus 1.2 모델의 요청 형식을 보여줍니다.

**base64 인코딩 비디오 사용:**

```
{
  "inputPrompt": "tell me about the video",
  "mediaSource": {
      "base64String": "<BASE64 STRING OF VIDEO FILE>"
  },
  "temperature": 0
}
```

**S3 저장 비디오 사용:**

```
{
    "inputPrompt": "Tell me about this video",
    "mediaSource": {
        "s3Location": {
            "uri": "s3://path-to-video-object-in-s3",
            "bucketOwner": "bucket-owner-account-id"
        }
    },
    "temperature": 0
}
```

**구조화된 출력 형식 사용:**

```
{
    "inputPrompt": "Analyze this video and provide a structured summary",
    "mediaSource": {
        "s3Location": {
            "uri": "s3://path-to-video-object-in-s3",
            "bucketOwner": "bucket-owner-account-id"
        }
    },
    "temperature": 0.2,
    "maxOutputTokens": 2048,
    "responseFormat": {
        "type": "json_schema",
        "json_schema": {
            "name": "video_analysis",
            "schema": {
                "type": "object",
                "properties": {
                    "summary": {"type": "string"},
                    "key_scenes": {"type": "array", "items": {"type": "string"}},
                    "duration": {"type": "string"}
                },
                "required": ["summary", "key_scenes"]
            }
        }
    }
}
```

------
#### [ Response ]

다음 예제에서는 TwelveLabs Pegasus 1.2 모델의 응답 형식을 보여줍니다.

**표준 응답:**

```
{
  "message": "This video shows a person walking through a park during sunset. The scene includes trees, a walking path, and golden lighting from the setting sun. The person appears to be enjoying a peaceful evening stroll.",
  "finishReason": "stop"
}
```

**구조화된 출력의 응답:**

```
{
  "message": "{\"summary\": \"A peaceful evening walk through a park at sunset\", \"key_scenes\": [\"Person entering the park\", \"Walking along tree-lined path\", \"Sunset lighting through trees\", \"Person sitting on bench\"], \"duration\": \"Approximately 2 minutes\"}",
  "finishReason": "stop"
}
```

**최대 토큰에 도달했을 때 응답:**

```
{
  "message": "This video contains multiple scenes showing various activities. The first scene shows...",
  "finishReason": "length"
}
```

------

# TwelveLabs Marengo Embed 2.7
<a name="model-parameters-marengo"></a>

TwelveLabs Marengo Embed 2.7 모델은 비디오, 텍스트, 오디오 또는 이미지 입력에서 임베딩을 생성합니다. 이러한 임베딩은 유사성 검색, 클러스터링 및 기타 기계 학습 태스크에 사용할 수 있습니다.
+ 공급자 - TwelveLabs
+ 모델 ID - twelvelabs.marengo-embed-2-7-v1:0

TwelveLabs Marengo Embed 2.7 모델은 다음 표에서 Amazon Bedrock 런타임 작업을 지원합니다.
+ 다양한 API 방법 사용 사례에 대한 자세한 내용은 [다양한 모델 추론 방법의 사용 사례에 대해 알아봅니다.다양한 추론 방법](inference-methods.md) 섹션을 참조하세요.
+ 사용자 정의 모델 유형에 대한 자세한 내용은 [Amazon Bedrock에서 추론이 작동하는 방식추론 작동 방식](inference-how.md) 섹션을 참조하세요.
  + 모델 IDs 목록과에서 TwelveLabs Marengo Embed 2.7 지원되는 모델 및 AWS리전을 보려면의 표에서 모델을 검색합니다[Amazon Bedrock에서 지원되는 파운데이션 모델](models-supported.md).
  + 추론 프로파일 ID의 전체 목록의 경우 [추론 프로파일에 지원되는 리전 및 모델](inference-profiles-support.md) 섹션을 참조하세요. 추론 프로필 ID는 AWS리전을 기반으로 합니다.


****  

| API 작업 | 지원되는 모델 유형 | 입력 양식 | 출력 양식 | 
| --- | --- | --- | --- | 
|  InvokeModel  | [추론 프로파일](inference-profiles-support.md) |  텍스트 이미지  |  임베딩  | 
| StartAsyncInvoke | [기본 모델](models-supported.md) |  비디오 오디오 이미지 텍스트  |  임베딩  | 

**참고**  
`InvokeModel`을 사용하여 검색 쿼리에 대한 임베딩을 생성합니다. `StartAsyncInvoke`를 사용하여 자산에 대한 임베딩을 대규모로 생성합니다.

입력에는 다음과 같은 할당량이 적용됩니다.


****  

| 입력 양식 | 최대 | 
| --- | --- | 
| 텍스트 | 토큰 77개 | 
| 이미지 | 5MB | 
| 비디오(S3) | 2GB | 
| 오디오(S3) | 2GB | 

**참고**  
base64 인코딩을 사용하여 오디오 또는 비디오를 인라인으로 정의하는 경우 요청 본문 페이로드가 Amazon Bedrock 25MB 모델 간접 호출 할당량을 초과하지 않는지 확인합니다.

**Topics**
+ [TwelveLabs Marengo Embed 2.7 요청 파라미터](#model-parameters-marengo-async-request)
+ [TwelveLabs Marengo Embed 2.7 응답](#model-parameters-marengo-response)
+ [TwelveLabs Marengo Embed 2.7 코드 예제](#model-parameters-marengo-examples)

## TwelveLabs Marengo Embed 2.7 요청 파라미터
<a name="model-parameters-marengo-async-request"></a>

요청을 할 때 모델별 입력이 지정된 필드는 API 작업에 따라 달라집니다.
+ [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) – `body` 요청입니다.
+ [StartAsyncInvoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html) - 요청 본문의 `modelInput` 필드에 있습니다.

모델 입력 형식은 입력 형식에 따라 다릅니다.

------
#### [ Text ]

```
{
    "inputType": "text",
    "inputText": "string",
    "textTruncate": "string
}
```

------
#### [ Inline image ]

```
{
     "inputType": "image",
     "mediaSource": {
          "base64String": "base64-encoded string"
     }
}
```

------
#### [ S3 image ]

```
{
    "inputType": "image",
    "mediaSource": {
        "s3Location": {
            "uri": "string",
            "bucketOwner": "string"
        }
    }
}
```

------
#### [ Inline video ]

```
{
    "inputType": "video",
    "mediaSource": {
        "s3Location": {
            "base64String": "base64-encoded string"
        }
    },
    "startSec": double,
    "lengthSec": double,
    "useFixedLengthSec": double,
    "embeddingOption": "visual-text" | "visual-image" | "audio"
}
```

------
#### [ S3 video ]

```
{
    "inputType": "image",
    "mediaSource": {
        "s3Location": {
           "uri": "string",
           "bucketOwner": "string"
        }
    },
    "startSec": double,
    "lengthSec": double,
    "useFixedLengthSec": double,
    "minClipSec": int,
    "embeddingOption": ["string"]
}
```

------
#### [ Inline audio ]

```
{
    "inputType": "audio", 
    "mediaSource": { 
        "base64String": "base64-encoded string"
    },
    "startSec": double,
    "lengthSec": double,
    "useFixedLengthSec": double
}
```

------
#### [ S3 audio ]

```
{
    "inputType": "audio",
    "mediaSource": {
        "s3Location": {
           "uri": "string",
           "bucketOwner": "string"
        }
    },
    "startSec": double,
    "lengthSec": double,
    "useFixedLengthSec": double
}
```

------

입력 파라미터에 대한 자세한 내용은 다음 섹션을 확장하세요.

### inputType
<a name="model-parameters-marengo-inputType"></a>

임베딩 방식입니다.
+ **유형**: 문자열
+ **필수 항목 여부:** 예
+ **유효한 값**: `video` \$1 `text` \$1 `audio` \$1 `image`

### inputText
<a name="model-parameters-marengo-inputText"></a>

임베딩할 텍스트입니다.
+ **유형**: 문자열
+ **필수:** 예(호환되는 입력 유형의 경우)
+ **호환되는 입력 유형:** 텍스트

### textTruncate
<a name="model-parameters-marengo-textTruncate"></a>

플랫폼이 텍스트를 잘라내는 방법을 지정합니다.
+ **유형**: 문자열
+ **필수 항목 여부**: 아니요
+ **유효한 값:**
  + `end` - 텍스트의 끝을 자릅니다.
  + `none` - 텍스트가 제한을 초과하는 경우 오류를 반환합니다.
+ **기본값:** end
+ **호환되는 입력 유형:** 텍스트

### mediaSource
<a name="model-parameters-marengo-mediaSource"></a>

미디어 소스에 대한 정보를 포함합니다.
+ **유형:** 객체
+ **필수:** 예(호환되는 유형인 경우)
+ **호환되는 입력 유형:** 이미지, 비디오, 오디오

요청 본문의 `mediaSource` 객체 형식은 미디어가 Base64 인코딩 문자열 또는 S3 위치로 정의되는지 여부에 따라 달라집니다.
+ **Base64-encoded 문자열**

  ```
  {
      "mediaSource": {
          "base64String": "base64-encoded string"
      }
  }
  ```
  + `base64String` - 미디어용 Base64 인코딩 문자열입니다.
+ **S3 위치** - S3 URI와 버킷 소유자를 지정합니다.

  ```
  {
      "s3Location": {
          "uri": "string",
          "bucketOwner": "string"
      }
  }
  ```
  + `uri` - 미디어가 포함된 S3 URI입니다.
  + `bucketOwner` - S3 버킷 소유자의 AWS계정 ID입니다.

### embeddingOption
<a name="model-parameters-marengo-embeddingOption"></a>

검색할 임베딩 유형을 지정합니다.
+ **유형**: 목록
+ **필수 항목 여부**: 아니요
+ **목록 멤버에 유효한 값:**
  + `visual-text` - 텍스트 검색에 최적화된 시각적 임베딩입니다.
  + `visual-image` - 이미지 검색에 최적화된 시각적 임베딩입니다.
  + `audio` - 비디오에 오디오를 임베딩합니다.
+ **기본값:** ["visual-text", "visual-image", "audio"]
+ **호환되는 입력 유형:** 비디오, 오디오

### startSec
<a name="model-parameters-marengo-startSec"></a>

처리가 시작되어야 하는 클립의 초 단위 시점입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **최솟값:** 0
+ **기본값:** 0
+ **호환되는 입력 유형:** 비디오, 오디오

### lengthSec
<a name="model-parameters-marengo-lengthSec"></a>

처리가 중지되어야 하는 `startSec` 시점부터 계산되는 초 단위 시간입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **유효한 값:** 0 - 미디어 기간
+ **기본값:** 미디어 기간
+ **호환되는 입력 유형:** 비디오, 오디오

예제:
+ startSec: 5
+ lengthSec: 20
+ 결과: 클립은 0:05에서 0:25(5초 \$1 20초)까지 처리됩니다.

### useFixedLengthSec
<a name="model-parameters-marengo-useFixedLengthSec"></a>

모델이 임베딩을 생성해야 하는 각 클립의 기간입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **값 파라미터:** 2\$110. `minClipSec`보다 크거나 같아야 합니다.
+ **기본값:** 미디어 유형에 따라 다름:
  + **비디오:** 샷 경계 감지로 동적으로 나뉩니다.
  + **오디오:** 가능한 한 10초에 가까운 세그먼트로 균등하게 분할됩니다.

    예시:
    + 50초 클립은 5개의 10초 세그먼트로 나뉩니다.
    + 16초 클립은 8초 세그먼트 2개로 나뉩니다.
+ **호환되는 입력 유형:** - 비디오, 오디오
+ **참고:** `minClipSec`보다 크거나 같아야 합니다.

### minClipSec
<a name="model-parameters-marengo-minClipSec"></a>

각 클립의 최솟값을 초 단위로 설정합니다.
+ **유형:** int
+ **필수 항목 여부**: 아니요
+ **값 파라미터:** 범위: 1\$15
+ **기본값:** 4
+ **호환되는 입력 유형:** 비디오
+ **참고:** `useFixedLengthSec`보다 작거나 같아야 합니다.

## TwelveLabs Marengo Embed 2.7 응답
<a name="model-parameters-marengo-response"></a>

출력 임베딩 및 관련 메타데이터의 위치는 간접 호출 방법에 따라 달라집니다.
+ [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) - 응답 본문에 있습니다.
+ [StartAsyncInvoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html) - `s3OutputDataConfig`에 정의된 S3 버킷에서 비동기식 간접 호출 작업이 완료된 후입니다.

임베딩 벡터가 여러 개 있는 경우 출력은 각각 벡터와 관련 메타데이터를 포함하는 객체 목록입니다.

출력 임베딩 벡터의 형식은 다음과 같습니다.

```
{
    "embedding": ["string"],
    "embeddingOption": "visual-text" | "visual-image" | "audio",
    "startSec": double,
    "endsec": double
}
```

응답 파라미터에 대한 자세한 내용은 다음 섹션을 확장하세요.

### 임베딩
<a name="model-parameters-marengo-embedding"></a>

입력의 벡터 표현을 임베딩합니다.
+ **유형:** Double 목록

### embeddingOption
<a name="model-parameters-marengo-embeddingOption"></a>

임베딩의 유형입니다.
+ **유형**: 문자열
+ **가능한 값:**
  + `visual-text` - 텍스트 검색에 최적화된 시각적 임베딩입니다.
  + `visual-image` - 이미지 검색에 최적화된 시각적 임베딩입니다.
  + `audio` - 비디오에 오디오를 임베딩합니다.
+ **호환되는 입력 유형:** 비디오

### startSec
<a name="model-parameters-marengo-startSec"></a>

클립의 시작 오프셋입니다.
+ **유형**: Double
+ **호환되는 입력 유형:** 비디오, 오디오

### endSec
<a name="model-parameters-marengo-endSec"></a>

클립의 끝 오프셋으로, 초 단위입니다.
+ **유형**: Double
+ **호환되는 입력 유형:** 비디오, 오디오

## TwelveLabs Marengo Embed 2.7 코드 예제
<a name="model-parameters-marengo-examples"></a>

이 섹션에서는 Python을 사용하여 다양한 입력 유형으로 TwelveLabs Marengo Embed 2.7 모델을 사용하는 방법을 보여줍니다. 이 예제에서는 모델별 입력을 정의하고 모델 호출을 실행하는 방법을 보여줍니다.

**참고**  
InvokeModel은 텍스트 및 이미지 입력만 지원합니다. 비디오 및 오디오 입력의 경우 StartAsyncInvoke를 사용합니다.

다음 단계에 따라 코드를 통합합니다.

**1. 모델별 입력 정의**  
입력 유형에 따라 모델별 입력을 정의합니다.

------
#### [ Text ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"
                            
model_input = {
  "inputType": "text",
  "inputText": "man walking a dog"
}
```

------
#### [ Inline image ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"

model_input = {
   "inputType": "image",
   "mediaSource": {
      "base64String": "example-base64-image"
   }
}
```

------
#### [ S3 image ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"

model_input = {
     "inputType": "image",
     "mediaSource": {
          "s3Location": {
               "uri": "s3://amzn-s3-demo-bucket/my_image.png",
               "bucketOwner": "123456789012"
          }
     }
}
```

------
#### [ Inline video ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"

model_input = {
    "inputType": "video",
    "mediaSource": {
        "base64String": "base_64_encoded_string_of_video"
    },
    "startSec": 0,
    "lengthSec": 13,
    "useFixedLengthSec": 5,
    "embeddingOption": [
        "visual-text", 
        "audio"
    ]
}
```

------
#### [ S3 video ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"

model_input = {
    "inputType": "video",
    "mediaSource": {
        "s3Location": {
            "uri": "amzn-s3-demo-bucket/my-video.mp4",
            "bucketOwner": "123456789012"
        }
    },
    "startSec": 0,
    "lengthSec": 13,
    "useFixedLengthSec": 5,
    "embeddingOption": [
        "visual-text", 
        "audio"
    ]
}
```

------
#### [ Inline audio ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"

model_input = {
    "inputType": "audio", 
    "mediaSource": { 
        "base64String": "base_64_encoded_string_of_audio"
    },
    "startSec": 0,
    "lengthSec": 13,
    "useFixedLengthSec": 10
}
```

------
#### [ S3 audio ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-2-7-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-2-7-v1:0"

model_input = {
    "inputType": "audio",
    "mediaSource": {  
        "s3Location": { 
            "uri": "s3://amzn-s3-demo-bucket/my-audio.wav", 
            "bucketOwner": "123456789012" 
        }
    },
    "startSec": 0,
    "lengthSec": 13,
    "useFixedLengthSec": 10
}
```

------

**2. 모델 입력을 사용하여 모델 간접 호출 실행**  
그런 다음 선택한 모델 간접 호출 방법에 해당하는 코드 조각을 추가합니다.

------
#### [ InvokeModel ]

```
# Run model invocation with InvokeModel
import boto3
import json

# Initialize the Bedrock Runtime client
client = boto3.client('bedrock-runtime')

# Make the request
response = client.invoke_model(
    modelId=inference_profile_id,
    body=json.dumps(model_input)
)

# Print the response body
response_body = json.loads(response['body'].read().decode('utf-8'))

print(response_body)
```

------
#### [ StartAsyncInvoke ]

```
# Run model invocation asynchronously
import boto3
import json

# Initalize the Bedrock Runtime client.
client = boto3.client("bedrock-runtime")

try:
    # Start the asynchronous job
    invocation = client.start_async_invoke(
        modelId=model_id,
        modelInput=model_input,
        outputDataConfig={
            "s3OutputDataConfig": {
                "s3Uri": "s3://&example-s3-destination-bucket;"
            }
        }
    )

    # Print the response JSON
    print("Response:")
    print(json.dumps(invocation, indent=2, default=str))

except Exception as e:
    # Implement error handling here.
    message = e.response["Error"]["Message"]
    print(f"Error: {message}")
```

------

# TwelveLabs Marengo Embed 3.0
<a name="model-parameters-marengo-3"></a>

TwelveLabs Marengo Embed 3.0 모델은 비디오, 텍스트, 오디오 또는 이미지 입력에서 향상된 임베딩을 생성합니다. 이 최신 버전은 유사성 검색, 클러스터링 및 기타 기계 학습 작업에 향상된 성능과 정확도를 제공합니다.
+ 공급자 - TwelveLabs
+ 모델 ID - twelvelabs.marengo-embed-3-0-v1:0

Marengo Embed 3.0은 몇 가지 주요 개선 사항을 제공합니다.
+ **확장된 비디오 처리 용량** - 최대 4시간의 비디오 및 오디오 콘텐츠를 처리합니다. 파일은 최대 6GB일 수 있으며, 이는 이전 버전의 두 배 용량입니다. 따라서 전체 스포츠 이벤트, 확장 훈련 비디오 및 전체 영화 제작을 분석하는 데 이상적입니다.
+ **향상된 스포츠 분석** - 모델은 상당한 개선을 제공합니다. 게임 플레이 역학, 플레이어 움직임 및 이벤트 감지를 더 잘 이해할 수 있습니다.
+ **글로벌 다국어 지원** - 12개 언어에서 36개 언어로 언어 기능을 확장했습니다. 이를 통해 글로벌 조직은 다양한 리전 및 시장에서 원활하게 작동하는 통합 검색 및 검색 시스템을 구축할 수 있습니다.
+ **멀티모달 검색 정밀도** - 이미지와 설명 텍스트를 단일 임베딩 요청으로 결합합니다. 이를 통해 시각적 유사성과 의미론적 이해를 결합하여 보다 정확하고 상황에 맞는 검색 결과를 제공할 수 있습니다.
+ **임베딩 차원 감소** - 1024에서 512로 감소하여 스토리지 비용을 절감할 수 있습니다.

TwelveLabs Marengo Embed 3.0 모델은 다음 표에서 Amazon Bedrock 런타임 작업을 지원합니다.
+ 다양한 API 방법 사용 사례에 대한 자세한 내용은 [다양한 모델 추론 방법의 사용 사례에 대해 알아봅니다.다양한 추론 방법](inference-methods.md) 섹션을 참조하세요.
+ 사용자 정의 모델 유형에 대한 자세한 내용은 [Amazon Bedrock에서 추론이 작동하는 방식추론 작동 방식](inference-how.md) 섹션을 참조하세요.
  + 모델 IDs 목록과에서 TwelveLabs Marengo Embed 3.0 지원되는 모델 및 AWS리전을 보려면의 표에서 모델을 검색합니다[Amazon Bedrock에서 지원되는 파운데이션 모델](models-supported.md).
  + 추론 프로파일 ID의 전체 목록의 경우 [추론 프로파일에 지원되는 리전 및 모델](inference-profiles-support.md) 섹션을 참조하세요. 추론 프로필 ID는 AWS리전을 기반으로 합니다.


****  

| API 작업 | 지원되는 모델 유형 | 입력 양식 | 출력 양식 | 
| --- | --- | --- | --- | 
|  InvokeModel  |  미국 동부(버지니아 북부) - [기본 모델](models-supported.md) 및 [추론 프로필](inference-profiles-support.md) 유럽(아일랜드) - [추론 프로필](inference-profiles-support.md) 아시아 태평양(서울) - [기본 모델](models-supported.md)  |  텍스트 이미지 **참고:** 텍스트 및 이미지 인터리브도 지원됩니다.  |  임베딩  | 
| StartAsyncInvoke | [기본 모델](models-supported.md) |  비디오 오디오 이미지 텍스트 **참고:** 인터리브된 텍스트 및 이미지도 지원됩니다.  |  임베딩  | 

**참고**  
`InvokeModel`을 사용하여 검색 쿼리에 대한 임베딩을 생성합니다. `StartAsyncInvoke`를 사용하여 자산에 대한 임베딩을 대규모로 생성합니다.

입력에는 다음과 같은 할당량이 적용됩니다.


****  

| 입력 양식 | 최대 | 
| --- | --- | 
| 텍스트 | 토큰 500개 | 
| 이미지 | 이미지당 5MB | 
| 비디오(S3) | 6GB, 4시간 길이 | 
| 오디오(S3) | 6GB, 4시간 길이 | 

**참고**  
base64 인코딩을 사용하여 오디오 또는 비디오를 인라인으로 정의하는 경우 요청 본문 페이로드가 Amazon Bedrock 25MB 모델 간접 호출 할당량을 초과하지 않는지 확인합니다.

**Topics**
+ [TwelveLabs Marengo Embed 3.0 요청 파라미터](#model-parameters-marengo-3-async-request)
+ [TwelveLabs Marengo Embed 3.0 응답](#model-parameters-marengo-3-response)
+ [TwelveLabs Marengo Embed 3.0 코드 예제](#model-parameters-marengo-3-examples)

## TwelveLabs Marengo Embed 3.0 요청 파라미터
<a name="model-parameters-marengo-3-async-request"></a>

요청을 할 때 모델별 입력이 지정된 필드는 API 작업에 따라 달라집니다.
+ [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) – `body` 요청입니다.
+ [StartAsyncInvoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html) - 요청 본문의 `modelInput` 필드에 있습니다.

모델 입력 형식은 입력 형식에 따라 다릅니다.

------
#### [ Text ]

```
{
    "inputType": "text",
    "text": {
        "inputText": "string"
    }
}
```

------
#### [ Image ]

```
{
  "inputType": "image",
  "image": {
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/folder/dog.jpg",
        "bucketOwner": "123456789012"
      }
    }
  }
}
```

------
#### [ Text & image ]

```
{
  "inputType": "text_image",
  "text_image": {
    "inputText": "man walking a dog",
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/folder/dog.jpg",
        "bucketOwner": "123456789012"
      }
    }
  }
}
```

------
#### [ Audio ]

```
{
  "inputType": "audio",
  "audio": {
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/audio/a.wav",
        "bucketOwner": "123456789012"
      }
    },
    "startSec": 0,
    "endSec": 6,
    "segmentation": {
      "method": "fixed", 
      "fixed": {
        "durationSec": 6
      }
    },
    "embeddingOption": [
      "audio",
      "transcription"
    ], // optional, default=both
    "embeddingScope": [
      "clip",
      "asset"
    ] // optional, one or both
  }
}
```

------
#### [ Video ]

```
{
  "inputType": "video",
  "video": {
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/video/clip.mp4",
        "bucketOwner": "123456789012"
      }
    },
    "startSec": 0,
    "endSec": 6,
    "segmentation": {
      "method": "dynamic", // dynamic OR fixed, exactly one
      "dynamic": {
        "minDurationSec": 4
      }
      "method": "fixed",
      "fixed": {
        "durationSec": 6
      }
    },
    "embeddingOption": [
      "visual",
      "audio", 
      "transcription"
    ], // optional, default=all
    "embeddingScope": [
      "clip",
      "asset"
    ] // optional, one or both
  },
  "inferenceId": "some inference id"
}
```

------

입력 파라미터에 대한 자세한 내용은 다음 섹션을 확장하세요.

### inputType
<a name="model-parameters-marengo-3-inputType"></a>

임베딩 방식입니다.
+ **유형**: 문자열
+ **필수 항목 여부:** 예
+ **유효한 값:** `text` \$1 `image` \$1 `text_image` \$1 `audio` \$1 `video`

### inputText
<a name="model-parameters-marengo-3-inputText"></a>

임베딩할 텍스트입니다.
+ **유형**: 문자열
+ **필수:** 예(호환되는 입력 유형의 경우)
+ **호환되는 입력 유형:** 텍스트

### mediaSource
<a name="model-parameters-marengo-3-mediaSource"></a>

미디어 소스에 대한 정보를 포함합니다.
+ **유형:** 객체
+ **필수:** 예(호환되는 유형인 경우)
+ **호환되는 입력 유형:** 이미지, 비디오, 오디오

요청 본문의 `mediaSource` 객체 형식은 미디어가 Base64 인코딩 문자열 또는 S3 위치로 정의되는지 여부에 따라 달라집니다.
+ **Base64-encoded 문자열**

  ```
  {
      "mediaSource": {
          "base64String": "base64-encoded string"
      }
  }
  ```
  + `base64String` - 미디어용 Base64 인코딩 문자열입니다.
+ **S3 위치** - S3 URI와 버킷 소유자를 지정합니다.

  ```
  {
      "s3Location": {
          "uri": "string",
          "bucketOwner": "string"
      }
  }
  ```
  + `uri` - 미디어가 포함된 S3 URI입니다.
  + `bucketOwner` - S3 버킷 소유자의 AWS계정 ID입니다.

### embeddingOption
<a name="model-parameters-marengo-3-embeddingOption"></a>

검색할 임베딩 유형을 지정합니다.
+ **유형**: 목록
+ **필수 항목 여부**: 아니요
+ **목록 멤버에 유효한 값:**
  + `visual` - 비디오의 시각적 임베딩입니다.
  + `audio` - 비디오에 오디오를 임베딩합니다.
  + `transcription` - 트랜스크립션된 텍스트의 임베딩입니다.
+ **기본값:**
  + 동영상: ["시각", "오디오", "트랜스크립션"]
  + 오디오: ["audio", "transcription"]
+ **호환되는 입력 유형:** 비디오, 오디오

### embeddingScope
<a name="model-parameters-marengo-3-embeddingScope"></a>

검색할 임베딩의 범위를 지정합니다.
+ **유형**: 목록
+ **필수 항목 여부**: 아니요
+ **목록 멤버에 유효한 값:**
  + `clip` - 각 클립에 대한 임베딩을 반환합니다.
  + `asset` - 전체 자산에 대한 임베딩을 반환합니다.
+ **호환되는 입력 유형:** 비디오, 오디오

### startSec
<a name="model-parameters-marengo-3-startSec"></a>

처리가 시작되어야 하는 클립의 초 단위 시점입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **최솟값:** 0
+ **기본값:** 0
+ **호환되는 입력 유형:** 비디오, 오디오

### endSec
<a name="model-parameters-marengo-3-endSec"></a>

처리가 종료되어야 하는 초 단위 시점입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **최소값:** startSec \$1 세그먼트 길이
+ **최댓값:** 미디어 지속 시간
+ **기본값:** 미디어 기간
+ **호환되는 입력 유형:** 비디오, 오디오

### 세분화
<a name="model-parameters-marengo-3-segmentation"></a>

임베딩 생성을 위해 미디어를 세그먼트로 나누는 방법을 정의합니다.
+ **유형:** 객체
+ **필수 항목 여부**: 아니요
+ **호환되는 입력 유형:** 비디오, 오디오

분할 객체에는 `method` 필드와 메서드별 파라미터가 포함됩니다.
+ `method` - 사용할 분할 방법입니다. 유효한 값: `dynamic` \$1 `fixed`
+ `dynamic` - 비디오의 경우는 샷 경계 감지를 사용하여 콘텐츠를 동적으로 분할합니다. 다음으로 구성됩니다.
  + `minDurationSec` - 각 세그먼트의 최소 초 단위 기간입니다. 유형: 정수입니다. 범위: 1\$15. 기본값: 4.
+ `fixed` - 콘텐츠를 동일한 기간의 세그먼트로 나눕니다. 다음으로 구성됩니다.
  + `durationSec` - 각 세그먼트의 초 단위 지속 시간입니다. 유형: 정수입니다. 범위: 1\$110. 기본값: 6.

**기본 동작**:
+ 비디오: 샷 경계 감지와 함께 동적 분할을 사용합니다.
+ 오디오: 고정 분할을 사용합니다. 콘텐츠는 가능한 한 균등하게 분할되며 세그먼트는 10초에 가깝습니다.

### inferenceId
<a name="model-parameters-marengo-3-inferenceId"></a>

추론 요청의 고유 식별자입니다.
+ **유형**: 문자열
+ **필수 항목 여부**: 아니요

## TwelveLabs Marengo Embed 3.0 응답
<a name="model-parameters-marengo-3-response"></a>

출력 임베딩 및 관련 메타데이터의 위치는 간접 호출 방법에 따라 달라집니다.
+ InvokeModel - 응답 본문에 있습니다.
+ StartAsyncInvoke -에 정의된 S3 버킷에서 비동기 호출 작업이 완료된 `s3OutputDataConfig`후.

임베딩 벡터가 여러 개 있는 경우 출력은 각각 벡터와 관련 메타데이터를 포함하는 객체 목록입니다.

출력 임베딩 벡터의 형식은 다음과 같습니다.

```
{
  "data": {
    "embedding": [
    0.111, 0.234, ...
    ],
    "embeddingOption": ["visual", "audio", "transcription" (for video input) | "audio", "transcription" (for audio input)],
    "embeddingScope": ["asset" | "clip"],
    "startSec": 0,
    "endSec": 4.2
  }
}
```

임베딩은 부동 소수점 배열로 반환됩니다.

이 응답이 표시되는 위치는 사용한 API 메서드에 따라 달라집니다.
+ InvokeModel - 응답 본문에 표시됩니다.
+ StartAsyncInvoke - 요청에서 지정한 S3 위치에 표시됩니다. 응답은를 반환합니다`invocationArn`. 이를 사용하여 비동기 호출에 대한 메타데이터를 가져올 수 있습니다. 여기에는 상태 및 결과가 기록되는 S3 위치가 포함됩니다.

응답 파라미터에 대한 자세한 내용은 다음 섹션을 확장하세요.

### 임베딩
<a name="model-parameters-marengo-3-embedding"></a>

입력의 벡터 표현을 임베딩합니다.
+ **유형:** Double 목록

### embeddingOption
<a name="model-parameters-marengo-3-embeddingOption-response"></a>

임베딩의 유형입니다.
+ **유형**: 문자열
+ **가능한 값:**
  + 시각적 객체 - 비디오의 시각적 객체 임베딩입니다.
  + 오디오 - 비디오에 오디오를 임베딩합니다.
  + 트랜스크립션 - 트랜스크립션된 텍스트의 임베딩입니다.
+ **호환되는 입력 유형:** 비디오, 오디오

### embeddingScope
<a name="model-parameters-marengo-3-embeddingScope"></a>

검색할 임베딩의 범위를 지정합니다.
+ **유형**: 문자열

다음 값 중 하나 이상을 포함할 수 있습니다.
+ 클립: 각 클립에 대한 임베딩을 반환합니다.
+ asset: 전체 자산에 대한 임베딩을 반환합니다.

### startSec
<a name="model-parameters-marengo-3-startSec-response"></a>

클립의 시작 오프셋입니다.
+ **유형**: Double
+ **호환되는 입력 유형:** 비디오, 오디오

### endSec
<a name="model-parameters-marengo-3-endSec-response"></a>

클립의 끝 오프셋입니다. 텍스트, 이미지 및 text\$1image 임베딩에는 적용되지 않습니다.
+ **유형**: Double
+ **호환되는 입력 유형:** 비디오, 오디오

## TwelveLabs Marengo Embed 3.0 코드 예제
<a name="model-parameters-marengo-3-examples"></a>

이 섹션에서는 Python을 사용하여 다양한 입력 유형으로 TwelveLabs Marengo Embed 3.0 모델을 사용하는 방법을 보여줍니다. 이 예제에서는 모델별 입력을 정의하고 모델 호출을 실행하는 방법을 보여줍니다.

**참고**  
InvokeModel은 이미지 인터리브 입력이 있는 텍스트, 이미지 및 텍스트를 지원합니다. 비디오 및 오디오 입력의 경우 StartAsyncInvoke를 사용합니다.

다음 단계에 따라 코드를 통합합니다.

**1. 모델별 입력 정의**  
입력 유형에 따라 모델별 입력을 정의합니다.

------
#### [ Text ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"

model_input = {
    "inputType": "text",
    "text": {
        "inputText": "man walking a dog"
    }
}
```

------
#### [ Image ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"

model_input = {
    "inputType": "image",
    "image": {
        "mediaSource": {
            "s3Location": {
                "uri": "s3://amzn-s3-demo-bucket/my_image.png",
                "bucketOwner": "123456789012"
            }
        }
    }
}
```

------
#### [ Text & image ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"

model_input = {
    "inputType": "text_image",
    "text_image": {
        "inputText": "man walking a dog",
        "mediaSource": {
            "s3Location": {
                "uri": "s3://amzn-s3-demo-bucket/my_image.jpg",
                "bucketOwner": "123456789012"
            }
        }
    }
}
```

------
#### [ Audio ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"
 
model_input = {
    "inputType": "audio",
    "audio": {
        "mediaSource": {  
            "s3Location": { 
                "uri": "s3://amzn-s3-demo-bucket/my-audio.wav", 
                "bucketOwner": "123456789012" 
            }
        },
        "startSec": 0,
        "endSec": 5,
        "segmentation": {
            "method": "fixed",
            "fixed": {
                "durationSec": 5
            }
        },
        "embeddingScope": ["clip", "asset"],
        "embeddingOption": ["audio"]
    }
}
```

------
#### [ Video ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"
 
model_input = {
    "inputType": "video",
    "video": {
        "mediaSource": {
            "s3Location": {
                "uri": "s3://amzn-s3-demo-bucket/my-video.mp4",
                "bucketOwner": "123456789012"
            }
        },
        "startSec": 10,
        "endSec": 20,
        "segmentation": {
            "method": "fixed",
            "fixed": {
                "durationSec": 5
            }
        },
        "embeddingOption": [
            "visual", 
            "audio"
        ],
        "embeddingScope": [
            "clip",
            "asset"
        ]
    }
}
```

------

**2. 모델 입력을 사용하여 모델 간접 호출 실행**  
그런 다음 선택한 모델 간접 호출 방법에 해당하는 코드 조각을 추가합니다.

------
#### [ InvokeModel ]

```
# Run model invocation with InvokeModel
import boto3
import json

# Initialize the Bedrock Runtime client
client = boto3.client('bedrock-runtime')

# Make the request
response = client.invoke_model(
    modelId=inference_profile_id,
    body=json.dumps(model_input)
)

# Print the response body
response_body = json.loads(response['body'].read().decode('utf-8'))

print(response_body)
```

------
#### [ StartAsyncInvoke ]

```
# Run model invocation asynchronously
import boto3
import json

# Initalize the Bedrock Runtime client.
client = boto3.client("bedrock-runtime")

try:
    # Start the asynchronous job
    invocation = client.start_async_invoke(
        modelId=model_id,
        modelInput=model_input,
        outputDataConfig={
            "s3OutputDataConfig": {
                "s3Uri": "s3://amzn-s3-demo-bucket"
            }
        }
    )

    # Print the response JSON
    print("Response:")
    print(json.dumps(invocation, indent=2, default=str))

except Exception as e:
    # Implement error handling here.
    message = e.response["Error"]["Message"]
    print(f"Error: {message}")
```

------