Vertex AI Gemini API를 활용한 메모 기능 개선

sarah·2025년 9월 23일
0

1. 배경

필사 프로젝트 내에서 제공하고 있는 메모 기능은 전체 사용자 중 5% 미만만이 사용하는 상황이었다. 기능 활성화 방안을 고민하던 중, 단순히 메모 공간을 제공하는 것만으로는 참여율 제고가 어렵다는 결론에 도달하였다.

이에 따라 구글잼을 통해 학습하던 Vertex AI Gemini API를 활용하여, 매일 제공되는 명언을 기반으로 사용자가 사유해볼 수 있는 질문을 생성하고 이를 메모 기능과 연동하는 접근을 시도하였다. 즉, 단순한 기록 공간에서 벗어나, AI가 제공하는 질문을 통해 자연스럽게 메모 참여를 유도하는 방식이다.


github: https://github.com/LEE-DAYOUNG-SARAH/fillsa-ai

2. 기술적 환경 설정

  1. 의존성 설치

    pip install google-genai
  1. 데이터 소스

    • 명언 데이터는 로컬 DB에서 조회하도록 구현하였다.
  2. 모델 설정
    아래와 같이 모델 파라미터를 설정하였다.

    GEMINI_MODEL=gemini-2.5-flash-lite
    GEMINI_MAX_OUTPUT_TOKENS=248
    GEMINI_TEMPERATURE=1.0
    GEMINI_TOP_P=0.92
    GEMINI_TOP_K=60
    • gemini-2.5-flash-lite를 선택한 이유: 가볍고 빠른 응답 속도를 제공하며, 짧은 질문 생성에 적합.
    • Temperature=1.0: 다양성과 창의성을 확보.
    • Top-P=0.92, Top-K=60: 문장 다양성 확보를 위한 확률 샘플링 보정.
  3. JSON 응답구조

client.config = types.GenerateContentConfig(
	response_mime_type="application/json",
	response_schema={
 		"type": "object",
 		"properties": {
			"question_en": {"type": "string"},
 			"question_ko": {"type": "string"},
		},
		"required": ["question_en", "question_ko"],
	},
    ...
)

3. 프롬프트 설계 및 실험 과정

(1) 1차 시도

  • 설정: 온도=0.5, Top-P=0.9

  • 프롬프트:
    영어 명언을 입력으로 받아, 영어 질문과 한국어 직역 질문을 동시에 생성하도록 요구.

    Generate one thought-provoking question for users based on this English quote.
    First create the question in English, then translate it to Korean.
    Both versions must be exactly the same question, just in different languages.
    
    Quote: "{eng_quote}"
    
    Requirements:
    Question that helps with self-reflection and personal development 
    Specific and practical question 
    Question that explores the core meaning of the quote 
    Korean question must be a direct translation of the English question
  • 실패 원인:

    • 출력 문장이 과도하게 길고 딱딱함.
    • 일상적 대화톤이 아닌 학술적 문체로 출력됨.

(2) 2차 시도

  • 변경 사항: 온도=0.8, Top-P=0.9
  • 프롬프트:
    • “You are a warm journaling coach”로 톤을 부드럽게 지정.
    • 10~18 단어 제한.
    • 쉬운 단어 사용(academic term 금지).
    • 실용적·구체적 질문 요구.
  You are a warm journaling coach.
  Write ONE short, conversational question inspired by the quote below.

  Quote: "{eng_quote}" 

  Constraints:
  - 10–18 words in English. Keep Korean the same meaning and similar length. 
  - Use plain, everyday words; avoid stiff/academic terms(e.g., “genuine”, “personal development”, “self-reflection”, “opportunity”). 
  - Must (a) invite self-reflection/growth, (b) be specific and practical, (c) probe the quote’s core meaning. 
  - Do NOT restate the quote, add explanations, or include code fences.

  [KO] 
  - 한국어는 자연스러운 구어체(또는 부드러운 존댓말)로, 영어 문장을 충실히 번역.
  • 실패 원인:
    • 여전히 문장이 길고 반복적 단어(small) 등장.
    • 특정 시점(예: “오늘”)이 고정적으로 포함됨.

(3) 3차 시도

  • 변경 사항: 온도=1.0, Top-P=0.9,TOP_K=60
  • 프롬프트:
    • 질문 길이: 8~14 단어.
    • 랜덤 시간 앵커 정책 도입:
      • 시간x, 24시간, 이번 주, 특정 상황(비판·의심·좌절 시) 등 랜덤 선택.
    • 한국어는 부드러운 존댓말 번역 요구.
  You are a warm journaling coach.
  Write ONE short, conversational question inspired by the quote below.
  
  Quotes: {quotes_text}
  
  Time anchor policy:
  	- Randomly choose ONE for each question:
  	A) no time anchor
    B) next 24 hours / this week
    C) next time <trigger>
    D) last time <trigger>
    E) today
    - If C or D, pick <trigger> from:
    ["you get criticism","you feel stuck","you doubt yourself","you feel upset"].
    
 - 8–14 words in English; Korean same meaning and similar length.
 - Use plain words. Do Not use "small"
 - Be specific and practical; no restating the quote; no code fences; max one comma.
  
 [KO]
 - 한국어는 부드러운 존댓말(–요) 또는 편한 구어체.
 - 영어와 의미·길이를 비슷하게 유지.
  • 실패 원인:
    • 단일 문장을 보낼 경우 랜덤 정책이 정상 작동하지 않음.
  • 해결:
    • 10개의 명언을 한 번에 보내어, 프롬프트 내 랜덤성이 효과적으로 적용됨.
    • 결과적으로 자연스럽고 짧은 질문이 생성되었으며, 만족스러운 품질 확보.

4. 결론

  1. 데이터 기반 문제 인식

    • 기능 사용률을 수치로 확인하면서, 단순 제공만으로는 기능 활성화가 어렵다는 사실을 재확인.
  2. AI 적용 효과

    • Gemini API를 활용해 사용자 경험을 보완하는 방식은 효과적이었다.
    • 특히, 짧고 실용적인 질문을 통해 사용자가 메모 기능에 자연스럽게 참여할 수 있는 계기를 제공.
  3. 학습과 성장

    • 새로운 기술을 실제 문제 해결에 적용하며 성장 경험을 얻음.
    • 프롬프트 설계와 파라미터 튜닝 과정을 통해 AI 모델의 출력 제어 기법을 체득.
    • 지표 기반 문제 해결 접근이 서비스 운영에서 얼마나 중요한지 체감.

0개의 댓글