tech blog

[Tech Blog] LLM Agent 리팩토링: 단순 번역기에서 'K-뷰티 문맥 컨버터'로의 진화

Beauty Insight Editor

[Tech Blog] LLM Agent 리팩토링: 단순 번역기에서 'K-뷰티 문맥 컨버터'로의 진화

작성일: 2026-01-06
작성자: 박용락 PM ((주)뷰티인사이드랩 AI솔루션팀)


1. 들어가며: 왜 '번역'이 아니라 '변환'인가?

우리 팀은 앤드류 응(Andrew Ng) 교수님의 translation-agent를 기반으로 글로벌 커머스 번역 프로젝트를 진행하고 있습니다. 하지만 초기 테스트에서 명확한 한계에 부딪혔습니다. 한국의 화려한 미사여구(예: "물광", "순한", "미백")를 그대로 번역하면, 미국 시장(FDA 규제 및 문화적 뉘앙스)에서는 오히려 **'신뢰할 수 없는 제품'**으로 인식된다는 점입니다.

단순히 언어를 바꾸는(Translation) 것을 넘어, **시장 문맥에 맞게 재창조(Transcreation)**하는 엔진이 필요했습니다. 오늘 우리는 그 과정을 공유하려 합니다.

2. 문제 정의: 2026년 미국 뷰티 트렌드와의 충돌

2026년 미국 뷰티 마케팅의 핵심 키워드는 **'Verification(증명)'**과 **'Experience(경험)'**입니다. 기존 LLM 번역의 문제점은 다음과 같았습니다.

  • Whitening (금기어): '미백'을 직역하면 인종 차별적 뉘앙스를 줄 수 있어 Brightening, Even Tone으로 변경 필수.
  • Abstract Words (추상어): '순한(Gentle)' 같은 모호한 표현 대신 Barrier Repair, Dermatologist Tested 같은 구체적 효능이 필요.
  • Generic Translation: 모든 카테고리에 똑같은 톤앤매너 적용 (스킨케어와 색조는 전략이 달라야 함).

3. 해결책: Context-Aware Agent로의 리팩토링

우리는 기존 에이전트를 대대적으로 리팩토링하여 Category-Driven Context Injection 구조로 변경했습니다.

3.1. HSK 코드 기반의 전략 모듈화 (rules.py)

가장 먼저 한 일은 하드코딩된 규칙들을 rules.py로 분리하고, 수출입 코드(HSK) 기준으로 전략을 세분화한 것입니다.

# src/translation_agent/rules.py (일부 발췌)
 
HSK_CATEGORIES = {
    "skincare": {
        "strategy": "Focus on 'Skin Barrier', 'Clinical Results'. Avoid listing ingredients without benefit.",
        "replacements": {
            "미백": "Brightening, Radiance",
            "순한": "Barrier Repair, Microbiome Friendly"
        }
    },
    "makeup": {
        "strategy": "Focus on 'Flawless Finish', 'Long-wear'. Avoid 'Natural' (implies weak coverage).",
        "replacements": {
            "자연스러운": "Flawless, Seamless",
            "착붙": "Transfer-proof, Long-wear"
        }
    }
}

이제 에이전트는 제품이 '스킨케어'인지 '메이크업'인지에 따라 전혀 다른 단어를 선택합니다.

3.2. 동적 프롬프트 주입 (utils.py)

utils.py의 핵심 번역 및 성찰(Reflection) 함수에 category 파라미터를 추가했습니다. 사용자가 카테고리를 지정하면, 해당 카테고리에 맞는 전략이 LLM의 System Prompt로 실시간 주입됩니다.

# src/translation_agent/utils.py
 
def one_chunk_reflect_on_translation(..., category: str = "general"):
    # 카테고리에 맞는 규칙을 동적으로 가져옴
    rules = get_rules_for_category(category)
    
    reflection_prompt = f"""
    [STRICT K-BEAUTY RULESET for ({category})]
    {rules}
    
    [Instruction]
    1. Scan for Forbidden Words (e.g., Whitening).
    2. Transcreate keywords based on US Consumer Psychology.
    """
    # ...

이로써 에이전트는 단순 번역가가 아닌, **"미국 세포라의 시니어 마케터 페르소나"**를 갖게 되었습니다.

4. 검증 및 트러블슈팅

4.1. Verification Script (run_kbeauty_test.py)

리팩토링 후, 실제 마케팅 문구로 테스트를 진행했습니다.

  • 입력: "이 제품은 쑥 성분이 들어있어 순하고 미백 효과가 있습니다."
  • 기존 번역: "Contains mugwort, is gentle and has whitening effects." (미국 시장 출시 불가 ❌)
  • Agent 결과: "Formulated with Artemisia to soothe sensitivity, this Hypoallergenic ampoule delivers Radiance and Clinical-grade Brightening." (트렌드 적합 ✅)

4.2. CI/CD 이슈 (Ruff Linter)

GitHub Actions 연동 중 utils.py에서 중복 import 문제로 빌드가 실패했습니다. 이는 코드 품질 도구인 Ruff가 잡아낸 것으로, 불필요한 의존성을 제거하고 import 순서를 표준에 맞게 정렬하여 해결했습니다. 코드의 품질도 기능만큼 중요하니까요.

5. 마치며: 오픈소스로의 기여

오늘 작업한 결과물은 Beauty-Insight-Lab-Inc/K-Beauty-Localization-Agent 리포지토리에 공개되었습니다.

우리의 목표는 K-뷰티 브랜드들이 언어 장벽을 넘어 '가치'를 온전히 전달하는 것입니다. 이번 리팩토링은 그 목표를 향한 중요한 기술적 토대가 될 것입니다.


Powered by Translation Agent Fork & K-Beauty Domain Knowledge

Beauty Insight Editor

Sharing insights on K-Beauty trends and data-driven export strategies. We help brands expand globally with the power of AI.