openai

3 개의 포스트

DSPy를 사용하여 Dash의 관련성 판별기를 최적화한 방법 (새 탭에서 열림)

Dropbox는 검색 및 답변 서비스인 Dash의 핵심 기능인 '관련성 판단 모델(relevance judge)'을 최적화하기 위해 DSPy 프레임워크를 도입했습니다. 기존의 수동 프롬프트 엔지니어링 방식에서 벗어나, 인간의 평가 점수와 모델 점수 간의 차이를 최소화하는 체계적인 최적화 루프를 구축함으로써 더 저렴한 오픈 소스 모델에서도 고성능을 유지할 수 있게 되었습니다. 결과적으로 모델 교체 시 발생하는 성능 저하 문제를 해결하고, 대규모 데이터 처리를 위한 비용 효율성과 신뢰성을 동시에 확보했습니다. **인간 평가 기반의 성능 측정 체계** * 관련성 판단 모델은 쿼리와 문서의 연관성을 1~5점 척도로 할당하며, 이를 인간 평가자의 점수와 비교하여 성능을 측정합니다. * 주요 평가지표로 NMSE(Normalized Mean Squared Error)를 사용하며, 이는 AI 점수가 인간의 판단에서 얼마나 벗어나는지를 0~100 사이의 수치로 나타냅니다. * 단순 점수 외에도 프로덕션 환경에서의 안정성을 위해 JSON 출력 형식이 올바른지, 구조적 가이드라인을 준수하는지를 엄격히 관리합니다. **고비용 모델에서 효율적인 모델로의 이식** * 초기에는 성능이 뛰어난 OpenAI의 o3 모델을 사용했으나, 서비스 규모가 확장됨에 따라 수천 배 더 많은 데이터 처리를 위한 비용 절감이 필요해졌습니다. * 상대적으로 저렴한 gpt-oss-120b 모델로 이전을 시도했으나, 기존 고성능 모델에 최적화된 프롬프트가 그대로 작동하지 않아 성능 저하가 발생했습니다. * 이를 해결하기 위해 수동으로 프롬프트를 수정하는 대신, DSPy를 통해 특정 모델에 최적화된 프롬프트를 자동 생성하는 방식을 선택했습니다. **DSPy와 GEPA를 활용한 프롬프트 최적화** * DSPy의 GEPA(Generalized Evaluation-based Prompt Adaptation) 옵티마이저를 사용하여 모델이 인간과 다른 판단을 내린 지점을 분석하고 피드백을 생성합니다. * 모델의 예측 점수와 인간의 점수 차이, 그리고 인간의 작성 이유(Rationale)를 결합하여 구체적인 피드백 루프를 구성합니다. * 피드백 과정에서 특정 키워드에 과적합(Overfitting)되지 않도록 일반적인 규칙을 도출하며, "최신성을 과소평가함"이나 "키워드 일치에 과도하게 비중을 둠" 같은 구체적인 오류 패턴을 수정합니다. * 이 최적화 루프는 '평가-피드백-프롬프트 수정-재평가' 과정을 반복하며 목표 지표인 NMSE를 최소화하는 최적의 프롬프트를 찾아냅니다. **결론 및 권장사항** LLM 시스템을 프로덕션 수준으로 확장할 때 가장 큰 장애물은 모델 변경이나 프롬프트 수정 시 발생하는 예기치 못한 성능 저하입니다. Dropbox의 사례처럼 DSPy와 같은 프레임워크를 활용해 프롬프트 엔지니어링을 '체계적인 최적화 프로세스'로 전환하면, 모델 이식성을 높이고 운영 비용을 획기적으로 낮추면서도 품질을 일정하게 유지할 수 있습니다. 특히 대규모 관련성 평가가 필요한 시스템이라면 수동 튜닝 대신 측정 가능한 지표 중심의 자동화된 최적화 루프를 구축하는 것을 권장합니다.

1세대 에이전틱 커머스를 구축하며 배운 10가지 (새 탭에서 열림)

AI 에이전트를 통한 커머스 시대가 도래함에 따라, 판매자는 실시간 인벤토리 관리, 복잡한 결제 보안, 그리고 파편화된 에이전트 프로토콜 통합이라는 실무적 과제에 직면해 있습니다. Stripe는 Agentic Commerce Protocol(ACP)과 Suite를 통해 판매자가 단 한 번의 연동으로 다양한 AI 에이전트 환경에서 상품을 판매하고 결제를 처리할 수 있는 표준화된 인프라를 제공합니다. 이를 통해 기업은 기술적 복잡성을 Stripe에 맡기고 에이전트 중심의 새로운 소비 환경에 전략적으로 대응할 수 있습니다. ### 카탈로그 파편화와 통합 효율화 * AI 에이전트마다 요구하는 데이터 형식(SFTP, 전용 API, 맞춤형 피드 등)이 다르기 때문에 발생하는 중복 작업과 유지보수 비용이 초기 도입의 큰 장벽입니다. * Stripe의 Agentic Commerce Suite를 사용하면 상품 데이터를 한 번만 업로드해도 지원되는 모든 에이전트에 자동으로 배포(Syndication)되어 데이터 일관성을 유지할 수 있습니다. * 단순히 데이터를 나열하는 것을 넘어, 상품 탐색부터 체크아웃까지의 전체 트랜잭션 수명 주기를 통합 관리합니다. ### 실시간 데이터 동기화와 변종 관리 * 에이전트 환경에서는 데이터 지연이 치명적이며, 밀리초 단위의 실시간 재고 확인이 고객 신뢰와 브랜드 평판을 결정짓는 핵심 요소입니다. * 색상, 사이즈, 커스텀 옵션 등 복잡한 상품 변종(Variant)을 에이전트가 정확히 이해하고 사용자에게 제안할 수 있도록 실시간 체크 기능을 지원합니다. * 체크아웃 API 호출 시점에 가용성을 즉시 공유함으로써 품절된 상품이 결제 단계까지 넘어가는 오류를 방지합니다. ### 프로토콜의 불확실성 대응과 보안 결제 * ACP, Google UCP 등 기술 표준이 급변하는 상황에서 판매자가 매번 시스템을 재구축하지 않도록 프로토콜 불가지론적(Agnostic) 계층을 제공합니다. * 공유 결제 토큰(Shared Payment Tokens, SPTs)을 도입하여, 구매자의 민감한 자격 증명을 노출하지 않고도 에이전트가 승인된 범위 내에서 안전하게 결제를 수행합니다. * 결제뿐만 아니라 배송 상태 관리, 환불, 취소 등 사후 서비스까지 아우르는 비즈니스 로직을 표준화된 방식으로 처리합니다. ### AI 환경에 최적화된 부정 거래 탐지 * 마우스 움직임이나 브라우저 지문 등 인간 사용자 기반의 전통적인 사기 탐지 신호가 없는 에이전트 환경에 맞춰 보안 모델을 재설계했습니다. * Stripe 네트워크의 방대한 데이터를 활용하여, 특정 판매자에게는 첫 구매인 에이전트 거래라도 고객의 결제 이력과 위험 문맥을 대조해 즉각적으로 분석합니다. * SPTs와 Stripe Radar를 결합하여 에이전트 기반 거래에서도 기업 수준의 보안을 유지하며 사기 발생률을 거의 제로에 가깝게 관리합니다. ### 성공적인 도입을 위한 권장 전략 처음부터 전체 카탈로그를 에이전트에 개방하기보다는 전환율이 높고 배송 및 풀필먼트 과정이 단순한 특정 상품군(SKU)부터 시작하는 것이 좋습니다. 예를 들어 의류 브랜드 URBN은 인기 품목인 원피스와 데님 상품에 집중하여 초기 데이터를 확보했습니다. 이러한 단계적 접근을 통해 에이전트 채널의 동작 방식을 학습하고, 향후 여러 서비스가 결합된 복합적인 구매 시나리오로 확장해 나가는 것이 효과적입니다.

문의 대응을 효율화하기 위한 RAG 기반 봇 도입하기 (새 탭에서 열림)

LY 주식회사의 SR(Service Reliability) 팀은 반복되는 AWX 플랫폼 관련 문의를 효율적으로 처리하기 위해 RAG(검색 증강 생성) 기반의 지원 봇을 도입했습니다. 이 시스템은 사용자가 방대한 가이드 문서를 읽지 않고 중복된 질문을 던질 때 발생하는 운영 리소스 소모 문제를 해결하기 위해 고안되었습니다. 사내 위키와 과거 상담 이력을 활용해 정확도 높은 답변을 생성함으로써 관리자의 개입 없이도 사용자 문제를 신속하게 해결하는 성과를 거두었습니다. **AWX 지원 봇의 기술 스택 및 구성** - **LLM 및 프레임워크:** OpenAI의 GPT 모델을 메인 엔진으로 사용하며, LangChain 프레임워크를 통해 전체적인 워크플로를 관리합니다. Slack과의 연동은 Bolt for Python을 활용했습니다. - **임베딩 모델:** 다국어 지원 및 문장 비교 성능이 뛰어난 'paraphrase-multilingual-mpnet-base-v2' 모델(SBERT)을 선택하여 글로벌 임직원의 다양한 언어 문의에 대응합니다. - **벡터 데이터베이스:** 사내에서 PaaS 형태로 제공되어 접근성이 높은 OpenSearch를 사용하며, 텍스트 데이터를 고차원 벡터로 변환하여 저장하고 검색합니다. **RAG 및 벡터 검색을 통한 답변 정확도 향상** - **LLM의 한계 극복:** 학습되지 않은 최신 정보 부재나 허위 정보 생성(Hallucination) 문제를 해결하기 위해, 질문과 관련된 신뢰할 수 있는 컨텍스트를 LLM에 함께 전달하는 RAG 기법을 적용했습니다. - **벡터 검색 원리:** 사용자의 질문을 임베딩하여 벡터화한 뒤, 벡터 DB 내에서 의미적으로 유사한 문장들을 k-NN(최근접 이웃) 방식으로 검색하여 최적의 참고 자료를 추출합니다. - **유사도 기반 추출:** 단순 키워드 매칭이 아닌 의미적 유사성을 판단하므로, 'Buy'와 'Purchase'처럼 단어는 달라도 맥락이 같은 정보를 정확히 찾아낼 수 있습니다. **봇 워크플로 및 데이터 활용 전략** - **사용자 상호작용:** 사용자가 Slack으로 문의하면 봇이 사내 위키와 과거 Slack 스레드 데이터를 검색합니다. 추출된 데이터를 바탕으로 LLM이 1차 답변을 제공하며, 해결되지 않을 경우에만 '관리자 호출' 버튼을 통해 담당자를 연결합니다. - **데이터 소스 다각화:** 공식 가이드 문서뿐만 아니라 실제 사용자들이 겪었던 문제와 해결책이 담긴 'Slack 문의 스레드 데이터'를 함께 인덱싱하여 실무적인 답변이 가능하도록 구성했습니다. - **리소스 최적화:** 봇의 자동 응답을 통해 단순 반복 문의에 대한 관리자의 수동 대응 시간을 줄이고, 개발 조직이 서비스 운영 본연의 업무에 더 집중할 수 있는 환경을 조성했습니다. RAG 기반 시스템을 구축할 때 가장 중요한 것은 신뢰할 수 있는 데이터 소스의 확보입니다. LY의 사례처럼 공식 문서와 실제 상담 이력을 병행 활용하면 LLM이 훨씬 구체적이고 실무에 유효한 답변을 생성할 수 있습니다. 운영 중인 서비스의 문의 대응 리소스가 부담된다면, 익숙한 벡터 DB와 오픈소스 임베딩 모델을 조합한 RAG 봇 도입을 적극 추천합니다.