AI.GENERATE 함수로 텍스트 생성
이 튜토리얼에서는 AI.GENERATE 함수를 사용하여 텍스트 또는 멀티모달 데이터에서 텍스트를 생성하는 방법을 보여줍니다.
AI.GENERATE 함수를 사용하면 Cloud 리소스 연결을 사용하여 호스팅된 Gemini 모델에 연결하므로 자체 모델을 만들고 유지관리할 필요가 없습니다.
이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.
- 텍스트 콘텐츠를 요약하고 함수의 기본 형식으로 결과를 출력합니다.
- 텍스트 콘텐츠를 요약하고 구조화된 결과를 출력합니다.
- 동영상 콘텐츠를 스크립트로 작성하고 번역합니다.
- 오디오 파일 콘텐츠를 분석합니다.
비용
이 문서에서는 비용이 청구될 수 있는 Google Cloud구성요소를 사용합니다.
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Vertex AI: You incur costs for calls to the Vertex AI model.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
BigQuery 가격 책정에 대한 자세한 내용은 BigQuery 문서의 BigQuery 가격 책정을 참조하세요.
Vertex AI 생성형 AI 가격 책정에 대한 자세한 내용은 Vertex AI 가격 책정 페이지를 참고하세요.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- BigQuery는 새 프로젝트에서 자동으로 사용 설정됩니다.
기존 프로젝트에서 BigQuery를 활성화하려면 다음으로 이동하세요.
BigQuery API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기
필요한 역할
AI.GENERATE 함수를 사용하려면 다음 Identity and Access Management (IAM) 역할이 필요합니다.
- BigQuery 데이터 세트 및 테이블 만들기 및 사용: 프로젝트에 대한 BigQuery 데이터 편집자 (
roles/bigquery.dataEditor) - BigQuery 연결을 만들고, 위임하고, 사용하기: 프로젝트에 대한 BigQuery 연결 관리자(
roles/bigquery.connectionsAdmin) - 연결의 서비스 계정에 권한 부여: Vertex AI 엔드포인트가 포함된 프로젝트에 대한 프로젝트 IAM 관리자(
roles/resourcemanager.projectIamAdmin). - BigQuery 작업 만들기: 프로젝트에 대한 BigQuery 작업 사용자(
roles/bigquery.jobUser)
이러한 사전 정의된 역할에는 이 문서의 작업을 수행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
- 데이터 세트 만들기:
bigquery.datasets.create - 연결을 만들고, 위임하고, 사용하기:
bigquery.connections.* - 서비스 계정 권한 설정:
resourcemanager.projects.getIamPolicy및resourcemanager.projects.setIamPolicy - 테이블 데이터 쿼리:
bigquery.tables.getData
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
데이터 세트 만들기
ML 모델을 저장할 BigQuery 데이터 세트를 만듭니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 프로젝트 이름을 클릭합니다.
작업 보기 > 데이터 세트 만들기를 클릭합니다.
데이터 세트 만들기 페이지에서 다음을 수행합니다.
데이터 세트 ID에
bqml_tutorial를 입력합니다.위치 유형에 대해 멀티 리전을 선택한 다음 US를 선택합니다.
나머지 기본 설정은 그대로 두고 데이터 세트 만들기를 클릭합니다.
bq
새 데이터 세트를 만들려면 bq mk --dataset 명령어를 사용합니다.
데이터 위치가
US로 설정된bqml_tutorial데이터 세트를 만듭니다.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
데이터 세트가 생성되었는지 확인합니다.
bq ls
API
데이터 세트 리소스가 정의된 datasets.insert 메서드를 호출합니다.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
연결 만들기
클라우드 리소스 연결을 만들고 연결의 서비스 계정을 가져옵니다. 이전 단계에서 만든 데이터 세트와 동일한 위치에 연결을 만듭니다.
연결을 만들려면 다음 단계를 따르세요.
BigQuery 페이지로 이동합니다.
탐색기 창에서 데이터 추가를 클릭합니다.
데이터 추가 대화상자가 열립니다.
필터링 기준 창의 데이터 소스 유형 섹션에서 비즈니스 애플리케이션을 선택합니다.
또는 데이터 소스 검색 필드에
Vertex AI을 입력할 수 있습니다.추천 데이터 소스 섹션에서 Vertex AI를 클릭합니다.
Vertex AI 모델: BigQuery 제휴 솔루션 카드를 클릭합니다.
연결 유형 목록에서 Vertex AI 원격 모델, 원격 함수, BigLake, Spanner (Cloud 리소스)를 선택합니다.
연결 ID 필드에
test_connection을 입력합니다.연결 만들기를 클릭합니다.
연결로 이동을 클릭합니다.
연결 정보 창에서 다음 단계에 사용할 서비스 계정 ID를 복사합니다.
서비스 계정에 액세스 권한 부여
연결의 서비스 계정에 Vertex AI 사용자 역할을 부여합니다.
역할을 부여하려면 다음 단계를 따르세요.
IAM 및 관리자 페이지로 이동합니다.
추가를 클릭합니다.
주 구성원 추가 대화상자가 열립니다.
새 주 구성원 필드에 앞에서 복사한 서비스 계정 ID를 입력합니다.
역할 선택 필드에서 Vertex AI를 선택한 후 Vertex AI 사용자를 선택합니다.
다른 역할 추가를 클릭합니다.
역할 선택 필드에서 Cloud Storage를 선택한 후 스토리지 객체 뷰어를 선택합니다.
저장을 클릭합니다.
텍스트를 요약하고 기본 출력 형식을 사용합니다.
다음 단계에 따라 AI.GENERATE 함수를 사용하여 텍스트를 생성하고 AI.GENERATE 함수의 기본 형식으로 결과를 출력합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행합니다.
WITH bbc_news AS ( SELECT body FROM `bigquery-public-data.bbc_news.fulltext` LIMIT 5 ) SELECT AI.GENERATE(body, connection_id => 'us.test_connection') AS news FROM bbc_news;
출력은 다음과 비슷합니다.
+---------------------------------------------+------------------------------------+---------------+ | news.result | news.full_response | news.status | +---------------------------------------------+------------------------------------+---------------+ | This article presents a debate about the | {"candidates":[{"avg_logprobs": | | | "digital divide" between rich and poor | -0.31465074559841777, content": | | | nations. Here's a breakdown of the key.. | {"parts":[{"text":"This article.. | | +---------------------------------------------+------------------------------------+---------------+ | This article discusses how advanced | {"candidates":[{"avg_logprobs": | | | mapping technology is aiding humanitarian | -0.21313422900091983,"content": | | | efforts in Darfur, Sudan. Here's a... | {"parts":[{"text":"This article.. | | +---------------------------------------------+------------------------------------+---------------+ | ... | ... | ... | +---------------------------------------------+------------------------------------+---------------+
텍스트를 요약하고 구조화된 결과를 출력합니다.
다음 단계에 따라 AI.GENERATE 함수를 사용하여 텍스트를 생성하고 AI.GENERATE 함수의 output_schema 인수를 사용하여 출력을 형식화합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행합니다.
WITH bbc_news AS ( SELECT body FROM `bigquery-public-data`.bbc_news.fulltext LIMIT 5 ) SELECT news.good_sentiment, news.summary FROM bbc_news, UNNEST(ARRAY[AI.GENERATE(body, connection_id => 'us.test', output_schema => 'summary STRING, good_sentiment BOOL')]) AS news;
출력은 다음과 비슷합니다.
+----------------+--------------------------------------------+ | good_sentiment | summary | +----------------+--------------------------------------------+ | true | A World Bank report suggests the digital | | | divide is rapidly closing due to increased | | | access to technology in developing.. | +----------------+--------------------------------------------+ | true | A review of sports games, focusing on the | | | rivalry between EA Sports and ESPN, and | | | the recent deal where EA acquired the.. | +----------------+--------------------------------------------+ | ... | ... | +----------------+--------------------------------------------+
동영상 콘텐츠 스크립트 작성 및 번역
다음 단계에 따라 공개 동영상 콘텐츠에 객체 테이블을 만든 다음 동영상을 트랜스크립션하고 번역하세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행하여 객체 테이블을 만듭니다.
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.video` WITH CONNECTION `us.test_connection` OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/generative-ai/video/*']);
쿼리 편집기에서 다음 쿼리를 실행하여
pixel8.mp4파일을 트랜스크립션하고 번역합니다.SELECT AI.GENERATE( (OBJ.GET_ACCESS_URL(ref, 'r'), 'Transcribe the video in Japanese and then translate to English.'), connection_id => 'us.test_connection', endpoint => 'gemini-2.5-flash', output_schema => 'japanese_transcript STRING, english_translation STRING' ).* EXCEPT (full_response, status) FROM `bqml_tutorial.video` WHERE REGEXP_CONTAINS(uri, 'pixel8.mp4');
출력은 다음과 비슷합니다.
+--------------------------------------------+--------------------------------+ | english_translation | japanese_transcript | +--------------------------------------------+--------------------------------+ | My name is Saeka Shimada. I'm a | 島田 さえか です 。 東京 で フ | | photographer in Tokyo. Tokyo has many | ォトグラファー を し て い ま | | faces. The city at night is totally... | す 。 東京 に は いろんな 顔 が | +--------------------------------------------+--------------------------------+
오디오 파일 콘텐츠 분석
다음 단계에 따라 공개 오디오 콘텐츠에 대한 객체 테이블을 만든 다음 오디오 파일의 콘텐츠를 분석합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행하여 객체 테이블을 만듭니다.
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.audio` WITH CONNECTION `us.test_connection` OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/generative-ai/audio/*']);
쿼리 편집기에서 다음 쿼리를 실행하여 오디오 파일을 분석합니다.
SELECT AI.GENERATE( (OBJ.GET_ACCESS_URL(ref, 'r'), 'Summarize the content of this audio file.'), connection_id => 'us.test_connection', endpoint => 'gemini-2.5-flash', output_schema => 'topic ARRAY<STRING>, summary STRING' ).* EXCEPT (full_response, status), uri FROM `bqml_tutorial.audio`;
결과는 다음과 유사합니다.
+--------------------------------------------+-----------------------------------------------------------+ | summary | topic | uri | +--------------------------------------------+-----------------------------------------------------------+ | The audio contains a distinctive 'beep' | beep sound | gs://cloud-samples-data/generativ... | | sound, followed by the characteristic | | | | sound of a large vehicle or bus backing.. | | | +--------------------------------------------+--------------------+--------------------------------------+ | | vehicle backing up | | | +--------------------+ | | | bus | | | +--------------------+ | | | alarm | | +--------------------------------------------+--------------------+--------------------------------------+ | The speaker introduces themselves | Introduction | gs://cloud-samples-data/generativ... | | as Gemini and expresses their excitement | | | | and readiness to dive into something.. | | | +--------------------------------------------+--------------------+--------------------------------------+ | | Readiness | | | +--------------------+ | | | Excitement | | | +--------------------+ | | | Collaboration | | +--------------------------------------------+--------------------+--------------------------------------+ | ... | ... | ... | +--------------------------------------------+--------------------+--------------------------------------+
삭제
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.