오디오 인식(음성만)

Gemini 요청에 오디오를 추가하여 포함된 오디오의 콘텐츠를 이해하는 것과 관련된 작업을 수행할 수 있습니다. 이 페이지에서는 Google Cloud 콘솔과 Vertex AI API를 사용하여 Vertex AI에서 Gemini에 대한 요청에 오디오를 추가하는 방법을 보여줍니다.

지원되는 모델

다음 표에는 오디오 인식을 지원하는 모델이 나와 있습니다.

모델 오디오 형식 세부정보

Gemini 1.5 Flash

Gemini 1.5 Flash 모델 카드로 이동

프롬프트당 최대 오디오 길이: 최대 8.4시간 또는 최대 100만 개의 토큰

음성 인식을 통해 오디오 요약, 스크립트 작성, 번역이 지원됩니다.

Gemini 1.5 Pro

Gemini 1.5 Pro 모델 카드로 이동

프롬프트당 최대 오디오 길이: 최대 8.4시간 또는 최대 100만 개의 토큰

음성 인식을 통해 오디오 요약, 스크립트 작성, 번역이 지원됩니다.

Gemini 모델에서 지원되는 언어 목록은 모델 정보를 참고하세요. Google 모델. 멀티모달 프롬프트를 설계하는 방법에 대한 자세한 내용은 멀티모달 프롬프트 설계를 참조하세요. 모바일 및 웹 앱에서 Gemini를 직접 사용할 수 있는 방법을 찾는 경우 Android, Swift, 웹, Flutter 앱의 Firebase용 Vertex AI SDK를 참조하세요.

요청에 오디오 추가

Gemini에 요청할 때 오디오 파일을 추가할 수 있습니다.

단일 오디오

다음은 오디오 파일을 사용하여 팟캐스트를 요약하는 방법을 보여줍니다.

Python

Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Vertex AI SDK for Python API 참고 문서를 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generate_contentstream 매개변수를 사용합니다.

  response = model.generate_content(contents=[...], stream = True)
  

비스트리밍 응답의 경우 매개변수를 삭제하거나 매개변수를 False로 설정합니다.

샘플 코드


  import vertexai
  from vertexai.generative_models import GenerativeModel, Part

  # TODO(developer): Update and un-comment below lines
  # project_id = "PROJECT_ID"

  vertexai.init(project=project_id, location="us-central1")

  model = GenerativeModel(model_name="gemini-1.5-flash-001")

  prompt = """
  Please provide a summary for the audio.
  Provide chapter titles, be concise and short, no need to provide chapter summaries.
  Do not make up any information that is not part of the audio and do not be verbose.
"""

  audio_file_uri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"
  audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg")

  contents = [audio_file, prompt]

  response = model.generate_content(contents)
  print(response.text)

Java

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Java 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Java SDK 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generateContentStream 메서드를 사용합니다.

  public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
  

비스트리밍 응답의 경우 generateContent 메서드를 사용합니다.

  public GenerateContentResponse generateContent(Content content)
  

샘플 코드

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ContentMaker;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.PartMaker;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.IOException;

public class AudioInputSummarization {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";

    summarizeAudio(projectId, location, modelName);
  }

  // Analyzes the given audio input.
  public static String summarizeAudio(String projectId, String location, String modelName)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      String audioUri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3";

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      GenerateContentResponse response = model.generateContent(
          ContentMaker.fromMultiModalData(
              "Please provide a summary for the audio.\n"
                  + "Provide chapter titles with timestamps, be concise and short, "
                  + "no need to provide chapter summaries.\n"
                  + "Do not make up any information that is not part of the audio "
                  + "and do not be verbose.",
              PartMaker.fromMimeTypeAndData("audio/mp3", audioUri)
          ));

      String output = ResponseHandler.getText(response);
      System.out.println(output);

      return output;
    }
  }
}

Node.js

이 샘플을 사용해 보기 전에 생성형 AI 빠른 시작: Node.js SDK 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Gemini용 Node.js SDK 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generateContentStream 메서드를 사용합니다.

  const streamingResp = await generativeModel.generateContentStream(request);
  

비스트리밍 응답의 경우 generateContent 메서드를 사용합니다.

  const streamingResp = await generativeModel.generateContent(request);
  

샘플 코드

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function summarize_audio(projectId = 'PROJECT_ID') {
  const vertexAI = new VertexAI({project: projectId, location: 'us-central1'});

  const generativeModel = vertexAI.getGenerativeModel({
    model: 'gemini-1.5-flash-001',
  });

  const filePart = {
    file_data: {
      file_uri: 'gs://cloud-samples-data/generative-ai/audio/pixel.mp3',
      mime_type: 'audio/mpeg',
    },
  };
  const textPart = {
    text: `
    Please provide a summary for the audio.
    Provide chapter titles with timestamps, be concise and short, no need to provide chapter summaries.
    Do not make up any information that is not part of the audio and do not be verbose.`,
  };

  const request = {
    contents: [{role: 'user', parts: [filePart, textPart]}],
  };

  const resp = await generativeModel.generateContent(request);
  const contentResponse = await resp.response;
  console.log(JSON.stringify(contentResponse));
}

Go

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Go 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Go SDK 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 GenerateContentStream 메서드를 사용합니다.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

비스트리밍 응답의 경우 GenerateContent 메서드를 사용합니다.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

샘플 코드

import (
	"context"
	"errors"
	"fmt"
	"io"
	"mime"
	"path/filepath"

	"cloud.google.com/go/vertexai/genai"
)

// audioPrompt is a sample prompt type consisting of one audio asset, and a text question.
type audioPrompt struct {
	// audio is a Google Cloud Storage path starting with "gs://"
	audio string
	// question asked to the model
	question string
}

// summarizeAudio shows how to send an audio asset and a text question to a model, writing the response to the
// provided io.Writer.
func summarizeAudio(w io.Writer, prompt audioPrompt, projectID, location, modelName string) error {
	// prompt := audioPrompt{
	// 	audio: "gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
	// 	question: `
	// 		Please provide a summary for the audio.
	// 		Provide chapter titles with timestamps, be concise and short, no need to provide chapter summaries.
	// 		Do not make up any information that is not part of the audio and do not be verbose.
	// 	`,
	// }
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	model := client.GenerativeModel(modelName)
	model.SetTemperature(0.4)

	// Given an audio file URL, prepare audio file as genai.Part
	part := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext(prompt.audio)),
		FileURI:  prompt.audio,
	}

	res, err := model.GenerateContent(ctx, part, genai.Text(prompt.question))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	if len(res.Candidates) == 0 ||
		len(res.Candidates[0].Content.Parts) == 0 {
		return errors.New("empty response from model")
	}

	fmt.Fprintf(w, "generated summary:\n%s\n", res.Candidates[0].Content.Parts[0])
	return nil
}

C#

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 C# 설정 안내를 따르세요. 자세한 내용은 Vertex AI C# 참조 문서를 확인하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 StreamGenerateContent 메서드를 사용합니다.

  public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
  

비스트리밍 응답의 경우 GenerateContentAsync 메서드를 사용합니다.

  public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
  

서버가 응답을 스트리밍하는 방법에 대한 자세한 내용은 RPC 스트리밍을 참조하세요.

샘플 코드


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class AudioInputSummarization
{
    public async Task<string> SummarizeAudio(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001")
    {
        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        string prompt = @"Please provide a summary for the audio.
Provide chapter titles with timestamps, be concise and short, no need to provide chapter summaries.
Do not make up any information that is not part of the audio and do not be verbose.";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt },
                        new Part { FileData = new() { MimeType = "audio/mp3", FileUri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3" } }
                    }
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

REST

환경을 설정한 후 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다. 다음 샘플은 게시자 모델 엔드포인트에 요청을 전송합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION: 요청을 처리하는 리전입니다. 지원되는 리전을 입력합니다. 지원되는 리전의 전체 목록은 사용 가능한 위치를 참조하세요.

    클릭하여 사용 가능한 리전의 일부 목록 펼치기

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: 프로젝트 ID
  • FILE_URI: 프롬프트에 포함할 파일의 Cloud Storage URI입니다. 버킷 객체는 공개적으로 읽을 수 있거나 요청을 보내는 동일한 Google Cloud 프로젝트에 있어야 합니다. 또한 파일의 미디어 유형(mimeType)을 지정해야 합니다.

    Cloud Storage에 오디오 파일이 없는 경우 공개적으로 사용 가능한 파일(gs://cloud-samples-data/generative-ai/audio/pixel.mp3)과 audio/mp3의 MIME 유형을 사용할 수 있습니다. 이 오디오를 들으려면 샘플 MP3 파일을 엽니다.

  • MIME_TYPE: data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다.

    클릭하여 MIME 유형 펼치기

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT
    프롬프트에 포함할 텍스트 안내입니다. 예를 들면 Please provide a summary for the audio. Provide chapter titles, be concise and short, no need to provide chapter summaries. Do not make up any information that is not part of the audio and do not be verbose.입니다.

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"

PowerShell

요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

이 샘플의 URL에서 다음 사항을 참고하세요.
  • 응답이 완전히 생성된 후 반환되도록 요청하려면 generateContent 메서드를 사용합니다. 시청자가 지연 시간에 대해 갖는 느낌을 줄이려면 streamGenerateContent 메서드를 사용하여 생성되는 응답을 스트리밍합니다.
  • 멀티모달 모델 ID는 메서드 앞의 URL 끝 부분에 있습니다(예: gemini-1.5-flash 또는 gemini-1.0-pro-vision). 이 샘플은 다른 모델도 지원할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 멀티모달 프롬프트를 보내려면 다음을 수행합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 Vertex AI 스튜디오 페이지로 이동합니다.

    Vertex AI Studio로 이동

  2. 프롬프트 설계(싱글턴)에서 열기를 클릭합니다.
  3. 선택사항: 모델 및 파라미터를 구성합니다.

    • 모델: 모델을 선택합니다.
    • 리전: 사용할 리전을 선택합니다.
    • 강도: 슬라이더 또는 텍스트 상자를 사용해서 강도 값을 입력합니다.

      강도(temperature)는 응답 생성 중 샘플링에 사용되며 topPtopK가 적용될 때 발생합니다. 강도(temperature)는 토큰 선택의 무작위성 수준을 제어합니다. 강도(temperature)가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도(temperature)가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도(temperature)가 0이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.

      모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 온도(temperature)를 높여보세요.

    • 출력 토큰 한도: 슬라이더 또는 텍스트 상자를 사용하여 최대 출력 한도의 값을 입력합니다.

      응답에서 생성될 수 있는 토큰의 최대 개수입니다. 토큰은 약 4자(영문 기준)입니다. 토큰 100개는 단어 약 60~80개에 해당합니다.

      응답이 짧을수록 낮은 값을 지정하고 잠재적으로 응답이 길면 높은 값을 지정합니다.

    • 중지 시퀀스 추가: 선택사항. 공백이 포함된 일련의 문자인 중지 시퀀스를 입력합니다. 모델에 중지 시퀀스가 발생하면 응답 생성이 중지됩니다. 중지 시퀀스는 응답에 포함되지 않으며 최대 5개의 중지 시퀀스를 추가할 수 있습니다.
  4. (선택사항) 고급 매개변수를 구성하려면 고급을 클릭하고 다음과 같이 구성합니다.
  5. 클릭하여 고급 구성 펼치기

    • Top-K: 슬라이더 또는 텍스트 상자를 사용하여 Top-K 값을 입력합니다(Gemini 1.5에서는 지원되지 않음).

      Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가 3이면 강도(temperature)를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.

      각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 강도(temperature) 샘플링을 사용하여 최종 토큰을 선택합니다.

      임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.

    • Top-P: 슬라이더 또는 텍스트 상자를 사용하여 Top-P의 값을 입력합니다. 토큰의 확률 합계가 Top-P 값과 같아질 때까지 확률이 가장 높은 순에서 낮은 순으로 토큰이 선택됩니다. 최소 변수 결과의 경우 Top-P를 0으로 설정합니다.
    • 그라운딩 사용 설정: 멀티모달 프롬프트에서는 그라운딩이 지원되지 않습니다.
  6. MP3 및 WAV 파일과 같은 미디어를 업로드하려면 다음 단계를 따르세요.
    1. 미디어 삽입을 클릭하고 소스를 선택합니다.

      Google Drive를 소스로 선택하는 경우 이 옵션을 처음 선택할 때 계정을 선택하고 Vertex AI Studio가 계정에 액세스하도록 동의해야 합니다. 총 크기가 10MB인 여러 미디어 파일을 업로드할 수 있습니다. 단일 파일은 7MB를 초과할 수 없습니다.

    2. 추가할 파일을 클릭합니다.
    3. 선택을 클릭합니다.

      파일 썸네일이 프롬프트 창에 표시됩니다. 총 토큰 수도 표시됩니다. 프롬프트 데이터가 토큰 한도를 초과하면 토큰이 잘리고 데이터 처리에 포함되지 않습니다.

    4. 선택사항: 오디오 파일에서 계산된 토큰 수와 모든 토큰의 합계를 표시하려면 토큰 보기를 클릭합니다.

      미디어 파일의 토큰 수를 계산하는 데 최대 15초가 걸릴 수 있습니다. 미디어 토큰이 지원되지 않으므로 토큰 ID 텍스트 변환토큰 ID 뷰에는 가치 있는 출력이 표시되지 않습니다.

      토크나이저 도구 창을 닫으려면 X를 클릭하거나 창 바깥쪽을 클릭합니다.

  7. 프롬프트 창에 텍스트 프롬프트를 입력합니다.
  8. 선택사항: 오디오 파일에서 계산된 토큰 수, 텍스트 토큰 수, 모든 토큰의 합계를 표시하려면 토큰 보기를 클릭합니다. 텍스트 프롬프트의 토큰이나 토큰 ID를 볼 수 있습니다.
    • 텍스트 프롬프트에서 각 토큰 ID의 경계를 표시하는 다양한 색상으로 강조표시된 토큰을 보려면 토큰 ID 텍스트로 변환을 클릭합니다. 미디어 토큰은 지원되지 않습니다.
    • 토큰 ID를 보려면 토큰 ID를 클릭합니다.

      토크나이저 도구 창을 닫으려면 X를 클릭하거나 창 바깥쪽을 클릭합니다.

  9. 제출을 클릭합니다.
  10. (선택사항) 프롬프트를 내 프롬프트에 저장하려면 저장을 클릭합니다.
  11. (선택사항) 프롬프트에 대해 Python 코드 또는 curl 명령어를 가져오려면 코드 가져오기를 클릭합니다.

오디오 스크립트 작성

다음은 오디오 파일을 사용하여 인터뷰 스크립트를 작성하는 방법을 보여줍니다.

Python

Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Vertex AI SDK for Python API 참고 문서를 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generate_contentstream 매개변수를 사용합니다.

  response = model.generate_content(contents=[...], stream = True)
  

비스트리밍 응답의 경우 매개변수를 삭제하거나 매개변수를 False로 설정합니다.

샘플 코드


  import vertexai
  from vertexai.generative_models import GenerativeModel, Part

  # TODO(developer): Update and un-comment below lines
  # project_id = "PROJECT_ID"

  vertexai.init(project=project_id, location="us-central1")

  model = GenerativeModel(model_name="gemini-1.5-flash-001")

  prompt = """
  Can you transcribe this interview, in the format of timecode, speaker, caption.
  Use speaker A, speaker B, etc. to identify speakers.
"""

  audio_file_uri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"
  audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg")

  contents = [audio_file, prompt]

  response = model.generate_content(contents)
  print(response.text)

Java

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Java 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Java SDK 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generateContentStream 메서드를 사용합니다.

  public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
  

비스트리밍 응답의 경우 generateContent 메서드를 사용합니다.

  public GenerateContentResponse generateContent(Content content)
  

샘플 코드

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ContentMaker;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.PartMaker;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.IOException;

public class AudioInputTranscription {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";

    transcribeAudio(projectId, location, modelName);
  }

  // Analyzes the given audio input.
  public static String transcribeAudio(String projectId, String location, String modelName)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      String audioUri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3";

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      GenerateContentResponse response = model.generateContent(
          ContentMaker.fromMultiModalData(
              "Can you transcribe this interview, in the format of timecode, speaker, caption.\n"
                  + "Use speaker A, speaker B, etc. to identify speakers.",
              PartMaker.fromMimeTypeAndData("audio/mp3", audioUri)
          ));

      String output = ResponseHandler.getText(response);
      System.out.println(output);

      return output;
    }
  }
}

Node.js

이 샘플을 사용해 보기 전에 생성형 AI 빠른 시작: Node.js SDK 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Gemini용 Node.js SDK 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 generateContentStream 메서드를 사용합니다.

  const streamingResp = await generativeModel.generateContentStream(request);
  

비스트리밍 응답의 경우 generateContent 메서드를 사용합니다.

  const streamingResp = await generativeModel.generateContent(request);
  

샘플 코드

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function transcript_audio(projectId = 'PROJECT_ID') {
  const vertexAI = new VertexAI({project: projectId, location: 'us-central1'});

  const generativeModel = vertexAI.getGenerativeModel({
    model: 'gemini-1.5-flash-001',
  });

  const filePart = {
    file_data: {
      file_uri: 'gs://cloud-samples-data/generative-ai/audio/pixel.mp3',
      mime_type: 'audio/mpeg',
    },
  };
  const textPart = {
    text: `
    Can you transcribe this interview, in the format of timecode, speaker, caption?
    Use speaker A, speaker B, etc. to identify speakers.`,
  };

  const request = {
    contents: [{role: 'user', parts: [filePart, textPart]}],
  };

  const resp = await generativeModel.generateContent(request);
  const contentResponse = await resp.response;
  console.log(JSON.stringify(contentResponse));
}

Go

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Go 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Go SDK 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 GenerateContentStream 메서드를 사용합니다.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

비스트리밍 응답의 경우 GenerateContent 메서드를 사용합니다.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

샘플 코드

import (
	"context"
	"errors"
	"fmt"
	"io"
	"mime"
	"path/filepath"

	"cloud.google.com/go/vertexai/genai"
)

// audioPrompt is a sample prompt type consisting of one audio asset, and a text question.
type audioPrompt struct {
	// audio is a Google Cloud Storage path starting with "gs://"
	audio string
	// question asked to the model
	question string
}

// transcribeAudio generates a response into w, based upon the prompt
// and audio provided.
// audio is a Google Cloud Storage path starting with "gs://"
func transcribeAudio(w io.Writer, prompt audioPrompt, projectID, location, modelName string) error {
	// prompt := audioPrompt{
	// 	audio: "gs://cloud-samples-data/generative-ai/audio/pixel.mp3",
	// 	question: `
	// 		Can you transcribe this interview, in the format of timecode, speaker, caption.
	// 		Use speaker A, speaker B, etc. to identify speakers.
	// 	`,
	// },
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	model := client.GenerativeModel(modelName)

	// Optional: set an explicit temperature
	model.SetTemperature(0.4)

	// Given an audio file URL, prepare audio file as genai.Part
	img := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext(prompt.audio)),
		FileURI:  prompt.audio,
	}

	res, err := model.GenerateContent(ctx, img, genai.Text(prompt.question))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	if len(res.Candidates) == 0 ||
		len(res.Candidates[0].Content.Parts) == 0 {
		return errors.New("empty response from model")
	}

	fmt.Fprintf(w, "generated transcript:\n%s\n", res.Candidates[0].Content.Parts[0])
	return nil
}

C#

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 C# 설정 안내를 따르세요. 자세한 내용은 Vertex AI C# 참조 문서를 확인하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

스트리밍 및 비스트리밍 응답

모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후의 모든 응답이 수신됩니다.

스트리밍 응답의 경우 StreamGenerateContent 메서드를 사용합니다.

  public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
  

비스트리밍 응답의 경우 GenerateContentAsync 메서드를 사용합니다.

  public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
  

서버가 응답을 스트리밍하는 방법에 대한 자세한 내용은 RPC 스트리밍을 참조하세요.

샘플 코드


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class AudioInputTranscription
{
    public async Task<string> TranscribeAudio(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001")
    {

        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        string prompt = @"Can you transcribe this interview, in the format of timecode, speaker, caption.
Use speaker A, speaker B, etc. to identify speakers.";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt },
                        new Part { FileData = new() { MimeType = "audio/mp3", FileUri = "gs://cloud-samples-data/generative-ai/audio/pixel.mp3" } }
                    }
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

REST

환경을 설정한 후 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다. 다음 샘플은 게시자 모델 엔드포인트에 요청을 전송합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION: 요청을 처리하는 리전입니다. 지원되는 리전을 입력합니다. 지원되는 리전의 전체 목록은 사용 가능한 위치를 참조하세요.

    클릭하여 사용 가능한 리전의 일부 목록 펼치기

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: 프로젝트 ID
  • FILE_URI: 프롬프트에 포함할 파일의 Cloud Storage URI입니다. 버킷 객체는 공개적으로 읽을 수 있거나 요청을 보내는 동일한 Google Cloud 프로젝트에 있어야 합니다. 또한 파일의 미디어 유형(mimeType)을 지정해야 합니다.

    Cloud Storage에 오디오 파일이 없는 경우 공개적으로 사용 가능한 파일(gs://cloud-samples-data/generative-ai/audio/pixel.mp3)과 audio/mp3의 MIME 유형을 사용할 수 있습니다. 이 오디오를 들으려면 샘플 MP3 파일을 엽니다.

  • MIME_TYPE: data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다.

    클릭하여 MIME 유형 펼치기

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT
    프롬프트에 포함할 텍스트 안내입니다. 예를 들면 Can you transcribe this interview, in the format of timecode, speaker, caption. Use speaker A, speaker B, etc. to identify speakers.입니다.

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"

PowerShell

요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

이 샘플의 URL에서 다음 사항을 참고하세요.
  • 응답이 완전히 생성된 후 반환되도록 요청하려면 generateContent 메서드를 사용합니다. 시청자가 지연 시간에 대해 갖는 느낌을 줄이려면 streamGenerateContent 메서드를 사용하여 생성되는 응답을 스트리밍합니다.
  • 멀티모달 모델 ID는 메서드 앞의 URL 끝 부분에 있습니다(예: gemini-1.5-flash 또는 gemini-1.0-pro-vision). 이 샘플은 다른 모델도 지원할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 멀티모달 프롬프트를 보내려면 다음을 수행합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 Vertex AI 스튜디오 페이지로 이동합니다.

    Vertex AI Studio로 이동

  2. 프롬프트 설계(싱글턴)에서 열기를 클릭합니다.
  3. 선택사항: 모델 및 파라미터를 구성합니다.

    • 모델: 모델을 선택합니다.
    • 리전: 사용할 리전을 선택합니다.
    • 강도: 슬라이더 또는 텍스트 상자를 사용해서 강도 값을 입력합니다.

      강도(temperature)는 응답 생성 중 샘플링에 사용되며 topPtopK가 적용될 때 발생합니다. 강도(temperature)는 토큰 선택의 무작위성 수준을 제어합니다. 강도(temperature)가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도(temperature)가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도(temperature)가 0이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.

      모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 온도(temperature)를 높여보세요.

    • 출력 토큰 한도: 슬라이더 또는 텍스트 상자를 사용하여 최대 출력 한도의 값을 입력합니다.

      응답에서 생성될 수 있는 토큰의 최대 개수입니다. 토큰은 약 4자(영문 기준)입니다. 토큰 100개는 단어 약 60~80개에 해당합니다.

      응답이 짧을수록 낮은 값을 지정하고 잠재적으로 응답이 길면 높은 값을 지정합니다.

    • 중지 시퀀스 추가: 선택사항. 공백이 포함된 일련의 문자인 중지 시퀀스를 입력합니다. 모델에 중지 시퀀스가 발생하면 응답 생성이 중지됩니다. 중지 시퀀스는 응답에 포함되지 않으며 최대 5개의 중지 시퀀스를 추가할 수 있습니다.
  4. (선택사항) 고급 매개변수를 구성하려면 고급을 클릭하고 다음과 같이 구성합니다.
  5. 클릭하여 고급 구성 펼치기

    • Top-K: 슬라이더 또는 텍스트 상자를 사용하여 Top-K 값을 입력합니다(Gemini 1.5에서는 지원되지 않음).

      Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가 3이면 강도(temperature)를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.

      각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 강도(temperature) 샘플링을 사용하여 최종 토큰을 선택합니다.

      임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.

    • Top-P: 슬라이더 또는 텍스트 상자를 사용하여 Top-P의 값을 입력합니다. 토큰의 확률 합계가 Top-P 값과 같아질 때까지 확률이 가장 높은 순에서 낮은 순으로 토큰이 선택됩니다. 최소 변수 결과의 경우 Top-P를 0으로 설정합니다.
    • 그라운딩 사용 설정: 멀티모달 프롬프트에서는 그라운딩이 지원되지 않습니다.
  6. MP3 및 WAV 파일과 같은 미디어를 업로드하려면 다음 단계를 따르세요.
    1. 미디어 삽입을 클릭하고 소스를 선택합니다.

      Google Drive를 소스로 선택하는 경우 이 옵션을 처음 선택할 때 계정을 선택하고 Vertex AI Studio가 계정에 액세스하도록 동의해야 합니다. 총 크기가 10MB인 여러 미디어 파일을 업로드할 수 있습니다. 단일 파일은 7MB를 초과할 수 없습니다.

    2. 추가할 파일을 클릭합니다.
    3. 선택을 클릭합니다.

      파일 썸네일이 프롬프트 창에 표시됩니다. 총 토큰 수도 표시됩니다. 프롬프트 데이터가 토큰 한도를 초과하면 토큰이 잘리고 데이터 처리에 포함되지 않습니다.

    4. 선택사항: 오디오 파일에서 계산된 토큰 수와 모든 토큰의 합계를 표시하려면 토큰 보기를 클릭합니다.

      미디어 파일의 토큰 수를 계산하는 데 최대 15초가 걸릴 수 있습니다. 미디어 토큰이 지원되지 않으므로 토큰 ID 텍스트 변환토큰 ID 뷰에는 가치 있는 출력이 표시되지 않습니다.

      토크나이저 도구 창을 닫으려면 X를 클릭하거나 창 바깥쪽을 클릭합니다.

  7. 프롬프트 창에 텍스트 프롬프트를 입력합니다.
  8. 선택사항: 오디오 파일에서 계산된 토큰 수, 텍스트 토큰 수, 모든 토큰의 합계를 표시하려면 토큰 보기를 클릭합니다. 텍스트 프롬프트의 토큰이나 토큰 ID를 볼 수 있습니다.
    • 텍스트 프롬프트에서 각 토큰 ID의 경계를 표시하는 다양한 색상으로 강조표시된 토큰을 보려면 토큰 ID 텍스트로 변환을 클릭합니다. 미디어 토큰은 지원되지 않습니다.
    • 토큰 ID를 보려면 토큰 ID를 클릭합니다.

      토크나이저 도구 창을 닫으려면 X를 클릭하거나 창 바깥쪽을 클릭합니다.

  9. 제출을 클릭합니다.
  10. (선택사항) 프롬프트를 내 프롬프트에 저장하려면 저장을 클릭합니다.
  11. (선택사항) 프롬프트에 대해 Python 코드 또는 curl 명령어를 가져오려면 코드 가져오기를 클릭합니다.

모델 매개변수 설정

멀티모달 모델에서 다음 모델 매개변수를 설정할 수 있습니다.

Top-P

Top-P는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 Top-P 값과 같아질 때까지 확률이 가장 높은 것부터(Top-K 참조) 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 0.3, 0.2, 0.1이고 Top-P 값이 0.5이면 모델이 강도(temperature)를 사용해서 다음 토큰으로 A 또는 B를 선택하고 C는 후보에서 제외합니다.

임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.

강도

강도(temperature)는 응답 생성 중 샘플링에 사용되며 topPtopK가 적용될 때 발생합니다. 강도(temperature)는 토큰 선택의 무작위성 수준을 제어합니다. 강도(temperature)가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도(temperature)가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도(temperature)가 0이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.

모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 강도(temperature)를 높여보세요.

유효한 매개변수 값

매개변수 Gemini 1.5 Pro Gemini 1.5 Flash
Top-P 0~1.0(기본값 0.95) 0~1.0(기본값 0.95)
온도 0~2.0(기본값 1.0) 0~2.0(기본값 1.0)

오디오 요구사항

Gemini 1.5 Flash 및 Gemini 1.5 Pro는 다음 오디오 MIME 유형을 지원합니다.

오디오 MIME 유형 Gemini 1.5 Flash Gemini 1.5 Pro
AAC - audio/aac
FLAC - audio/flac
MP3 - audio/mp3
MPA - audio/m4a
MPEG - audio/mpeg
MPGA - audio/mpga
MP4 - audio/mp4
OPUS - audio/opus
PCM - audio/pcm
WAV - audio/wav
WEBM - audio/webm

제한사항

Gemini 멀티모달 모델은 많은 멀티모달 사용자 사례에서 강력하지만 모델의 제한사항을 이해하는 것이 중요합니다.

  • 비음성 소리 인식: 오디오를 지원하는 모델에서 음성이 아닌 소리를 인식하는 오류가 발생할 수 있습니다.
  • 오디오 전용 타임스탬프: 오디오를 지원하는 모델이 오디오 파일이 포함된 요청의 타임스탬프를 정확하게 생성할 수 없습니다. 여기에는 분할 및 일시적 현지화 타임스탬프가 포함됩니다. 오디오가 있는 비디오를 포함하는 입력에 대해 타임스탬프를 정확하게 생성할 수 있습니다.
  • 텍스트 변환 구두점: Gemini 1.5 Flash에서 반환한 텍스트 변환에는 구두점이 포함되지 않을 수 있습니다.

다음 단계