하드코딩 제로, 완전 동적 생성 - AWS Bedrock Claude를 활용한 비즈니스 컨텍스트 기반 메시지 자동 생성
// 문제가 있는 코드
const message = `안녕하세요 ${name}님,
이마트 역삼점입니다. // 하드코딩
${sender}님께서
${product}을(를) 보내주셨습니다.
주소를 확인해주세요. // 획일적인 문구
`
| 상황 | 메시지 예시 |
|---|---|
| 첫 연락 | "안녕하세요 김철수님, 이마트 역삼점입니다. 선물을 보내드립니다..." (정중하고 상세한 설명) |
| 재연락 | "김철수님, 배송 확인 건 답변 부탁드립니다." (간결하고 명확) |
| 고객 응답 후 | "답변 감사합니다. 확인했습니다..." (고객 메시지 기반 답변) |
| 방식 | 장점 | 단점 | 선택 |
|---|---|---|---|
| 템플릿 기반 | 빠름, 예측 가능 | 획일적, 유연성 없음 | ❌ |
| 규칙 기반 | 제어 가능 | 복잡도 폭증, 유지보수 어려움 | ❌ |
| LLM 기반 | 완전 동적, 자연스러움 | 비용, 레이턴시 | ✅ |
| 옵션 | 장점 | 단점 | 선택 |
|---|---|---|---|
| OpenAI API | 최고 품질 | 외부 서비스, 데이터 유출 우려 | ❌ |
| Self-hosted | 완전 제어 | 인프라 부담, 운영 복잡 | ❌ |
| AWS Bedrock | AWS 통합, 보안, 관리형 | 모델 선택 제한 | ✅ |
🔍 서울 리전 직접 사용 가능 모델 테스트
✅ Claude 3 Haiku
- 특징: 빠르고 저렴
- 용도: 간단한 작업
✅ Claude 3.5 Sonnet
- 특징: 고품질, 균형잡힌 성능
- 용도: 복잡한 작업
❌ Claude 3 Sonnet (모델 사용 불가)
❌ Claude 3.5 Sonnet v2 (모델 사용 불가)
❌ Claude 3.7 Sonnet (모델 사용 불가)
❌ Claude Sonnet 4 (모델 사용 불가)
모델 ID: anthropic.claude-3-5-sonnet-20240620-v1:0
선정 근거:
[Frontend]
↓ 버튼 클릭: "🤖 자동 생성"
↓
[Backend API]
↓ POST /api/v1/messages/smart-generate
↓
[컨텍스트 분석]
- 대화 이력 조회
- 수신자 상태 확인
- 연락 시도 횟수 확인
↓
[LLM 서비스]
- 시스템 프롬프트 구성
- 사용자 프롬프트 구성
- AWS Bedrock 호출
↓
[Claude 3.5 Sonnet]
- 비즈니스 컨텍스트 분석
- 자연스러운 메시지 생성
- 톤앤매너 자동 조절
↓
[응답]
- 생성된 메시지
- 컨텍스트 정보
- 대화 요약
↓
[Frontend]
- 메시지 표시
- 편집 가능
- 발송
직원이 메시지를 생성하는 실제 화면입니다. 왼쪽에서 발신 사유와 상품 정보를 입력하면, 오른쪽에 LLM이 생성한 메시지가 실시간으로 표시됩니다.
실제 구현된 메시지 생성 인터페이스 - 입력 폼과 생성된 메시지 미리보기
class LLMMessageService:
"""LLM 기반 메시지 생성 서비스"""
def __init__(self):
self.bedrock = boto3.client(
service_name='bedrock-runtime',
region_name='ap-northeast-2' # 서울 리전
)
self.model_id = 'anthropic.claude-3-5-sonnet-20240620-v1:0'
def generate_message(
self,
context_type: str,
recipient_data: Dict,
order_data: Dict,
conversation_history: List[Dict],
store_data: Dict
) -> str:
"""비즈니스 컨텍스트 기반 메시지 생성"""
system_prompt = self._build_system_prompt(store_data)
user_prompt = self._build_user_prompt(...)
response = self.bedrock.invoke_model(
modelId=self.model_id,
body=json.dumps({
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1000,
"temperature": 0.7,
"system": system_prompt,
"messages": [
{"role": "user", "content": user_prompt}
]
})
)
result = json.loads(response['body'].read())
return result['content'][0]['text'].strip()
안녕하세요, 김철수 고객님. 이마트 역삼점 선물세트 배송팀입니다.
모찌 팀장님께서 보내주신 2025 설날 한우세트가 도착했습니다.
이 선물은 냉장 제품이므로 고객님께서 직접 수령하셔야 합니다.
배송지와 배송 가능한 날짜를 알려주시면 신속히 처리하겠습니다.
또한 이마트 선물세트 채널 @emart_gift_partner에 친구 추가하시면
실시간 소통과 다양한 혜택을 받으실 수 있습니다.
채널 추가하고 답장 주시기 바랍니다. 감사합니다. 🙏
| 지표 | 이전 | 이후 | 개선율 |
|---|---|---|---|
| 메시지 작성 시간 | 2분 | 10초 | 92% 단축 |
| 하드코딩 | 5곳 | 0곳 | 100% 제거 |
| 컨텍스트 반영 | 없음 | 5가지 | 완전 반영 |
| 톤 조절 | 불가능 | 자동 | 완전 자동화 |
LLM 기반 동적 메시지 생성 시스템은 단순한 기술 도입이 아닌, 비즈니스 문제 해결을 위한 전략적 선택입니다.