Skip to Content

02. AI 기반 토픽 분류 (LLM & Gemini)

전문가2시간

1. 개요 및 시나리오

상황: “기타(Others)“로 분류된 티켓이 수천 장입니다. 상담원이 일일이 읽고 분류하기엔 너무 많습니다.

“이거 AI가 대신 읽고 분류해주면 안 되나요?”

과거에는 수만 장의 학습 데이터가 필요했지만, 이제는 **LLM(Large Language Model)**에게 “이거 읽고 분류해줘”라고 시키면 됩니다. Google Gemini를 BigQuery 안에서 바로 불러와서 사용해봅시다.


2. BigQuery ML + Gemini 연결

BigQuery에서 ML.GENERATE_TEXT 함수를 사용하면 Gemini 모델(gemini-pro)을 호출할 수 있습니다. (참고: 별도의 Google Cloud Vertex AI 연결 설정이 필요할 수 있습니다.)

❓ 문제 1: Gemini 모델 생성 (DDL)

Q. BigQuery에서 gemini-pro를 기반으로 한 원격 모델(remote_model)을 생성하는 쿼리를 작성하세요. (실습 환경에서는 이미 생성되어 있다고 가정하고 진행합니다.)

💡

Hint: CREATE MODEL 구문을 사용하며, REMOTE_SERVICE_TYPE을 지정해야 합니다.

정답 코드 보기

-- 모델 생성 예시 (관리자 권한 필요) CREATE OR REPLACE MODEL `your-project-id.retail_analytics_us.gemini_pro_model` REMOTE WITH CONNECTION `projects/your-project-id/locations/us/connections/vertex-ai` OPTIONS(endpoint = 'gemini-pro');

3. 프롬프트 엔지니어링 (Prompt Engineering)

AI에게 일을 잘 시키려면 **질문(Prompt)**을 잘 해야 합니다.

❓ 문제 2: 티켓 분류 프롬프트 작성

Q. 다음 카테고리 중 하나로 티켓을 분류하도록 프롬프트를 작성하고, ML.GENERATE_TEXT로 실행하세요.

  • Categories: Product Quality, Shipping, Payment, General Inquiry

BigQuery에서는 CONCAT으로 프롬프트를 조립합니다.

정답 코드 보기

SELECT ticket_id, issue_type as original_label, ml_generate_text_result['candidates'][0]['content']['parts'][0]['text'] AS ai_classification FROM ML.GENERATE_TEXT( MODEL `your-project-id.retail_analytics_us.gemini_pro_model`, ( SELECT ticket_id, issue_type, CONCAT( 'You are a customer service manager. Classify the following ticket into one of these categories: ', '[Product Quality, Shipping, Payment, General Inquiry]. ', 'Do not explain, just return the category name. ', 'Ticket comments: ', comment ) AS prompt FROM `your-project-id.retail_analytics_us.cs_tickets_dummy` WHERE status = 'open' LIMIT 5 ), STRUCT( 0.0 AS temperature, -- 일관된 답변을 위해 0으로 설정 10 AS max_output_tokens ) );

4. 결과 검증 및 요약 생성

단순 분류뿐만 아니라, **“3줄 요약”**이나 **“답변 초안 작성”**도 가능합니다.

❓ 문제 3: 티켓 요약 및 답변 추천

Q. “티켓 내용을 3줄로 요약하고, 상담원이 보낼 답변 초안을 작성해줘”라는 프롬프트를 실행해보세요.

정답 코드 보기

SELECT ticket_id, ml_generate_text_result['candidates'][0]['content']['parts'][0]['text'] AS ai_response FROM ML.GENERATE_TEXT( MODEL `your-project-id.retail_analytics_us.gemini_pro_model`, ( SELECT ticket_id, CONCAT( 'Summarize this ticket in 1 sentence and suggest a polite response draft. ', 'Ticket: ', comment ) AS prompt FROM `your-project-id.retail_analytics_us.cs_tickets_dummy` LIMIT 3 ), STRUCT(0.5 AS temperature, 200 AS max_output_tokens) );

💡 요약

  • BigQuery ML: SQL만으로 최신 LLM을 대용량 데이터에 적용할 수 있습니다.
  • Prompt Engineering: AI에게 역할을 부여하고(Role), 제약조건을 걸고(Constraints), 예시를 주면(Few-shot) 성능이 올라갑니다.
  • 활용: 자동 분류, 요약, 감성 분석, 번역 등 무궁무진합니다.

다음 챕터에서는 **전통적인 머신러닝(Classification)**을 사용하여 LLM보다 더 빠르고 싸게 만족도를 예측해봅니다.

Last updated on

🤖AI 모의면접실전처럼 연습하기