Snyk가 내부 지원 에이전트를 고객 기능으로 전환한 방법
요약
Snyk는 내부 지원 시스템으로 개발된 'Snyk Assist'를 핵심 고객 기능으로 전환한 과정을 공유합니다. 이 에이전트는 LangChain과 LangGraph 기반이며, 사용자의 권한 내에서 작동하도록 설계되어 보안성과 신뢰성을 확보했습니다. 이를 통해 고객은 분산된 정보(문서, 지원 기사 등)를 검색할 필요 없이 일반 언어로 빠르고 정확하게 답변을 얻고 필요한 조치를 취할 수 있게 되었습니다.
핵심 포인트
- LangChain/LangGraph 기반 에이전트를 구축하여 내부 지원 시스템을 자동화했습니다.
- 보안 플랫폼 특성상, 권한(permissions)과 신뢰성을 핵심 요구사항으로 다루었습니다.
- LangSmith의 평가 기능을 활용해 회귀를 포착하고 높은 출시 기준을 유지했습니다.
- 내부 도구로 시작하여 모든 유료 고객에게 제공하는 제품 경험으로 확장했습니다.
핵심 요약
우리는 실제 고객의 문제점에서 시작했습니다. Snyk Assist는 고객들이 문서, 지원 콘텐츠 및 계정 시스템을 검색할 필요 없이 빠르고 정확한 답변을 얻기 쉽게 만들기 위해 구축되었습니다.
우리는 신뢰와 접근 제어를 핵심 제품 요구 사항으로 다루었습니다. Snyk가 보안 플랫폼이기 때문에, 이 에이전트는 사용자의 권한 내에 머무르도록 설계되었으며, 광범위하게 출시되기 전에 안전하고, 신뢰할 수 있으며, 정확함을 입증해야 했습니다.
우리는 유용하고, 측정 가능하며, 확장 가능하도록 구축했습니다. 단일 LangGraph 런타임이 여러 인터페이스를 구동하며, LangSmith 평가 기능은 팀이 회귀(regressions)를 포착하고, 응답을 개선하며, 자신감을 가지고 출시할 수 있도록 돕습니다.
Snyk는 AI 보안 플랫폼입니다. 이 플랫폼은 코드, 오픈 소스 종속성, 컨테이너 및 클라우드 구성을 찾아내고 취약점을 수정합니다. 그리고 개발자들이 이미 작업하는 환경인 IDE, 풀 리퀘스트(pull request), 파이프라인 내에 자리 잡고 있습니다.
저희는 개발자를 위한 보안 제품을 구축하기 때문에, 고객들은 어렵고 구체적인 질문들을 합니다. 그들은 취약점, 계정 컨텍스트, 지원 문제 및 제품 동작 등에 대한 답변을 원하며, 종종 실제 작업 도중에 요청합니다. Snyk Assist가 있기 전에는 이러한 정보들이 제품 문서, 지원 기사, 릴리스 노트, 학습 콘텐츠 및 계정 데이터에 분산되어 있었습니다. 적절한 정보를 찾는 것은 보통 여러 페이지를 읽거나 티켓을 접수하고 기다리는 것을 의미했습니다.
Snyk Assist는 LangChain과 LangGraph를 기반으로 구축된 대화형 에이전트이며, LangSmith에서 관측 가능성(observability)을 관리합니다. 이는 고객들이 일반 언어로 답변을 찾도록 돕고, 그들을 대신하여 조치를 취할 수 있습니다. 열려 있는 이슈를 조회하거나, 알려진 취약점에 대해 패키지를 확인하거나, 대화에서 지원 케이스를 열거나, 아직 필요한 워크플로우를 지원하지 않을 때 기능 요청을 기록하는 등의 작업을 수행할 수 있습니다.
이것은 원래 저희 자체 지원팀을 위한 내부 도구로 시작되었습니다. 2026년 9월에, 우리는 이를 핵심 Snyk 제품으로 옮겼고, 모든 유료 고객이 접근할 수 있게 되었습니다.
본 게시물에서는 Snyk Assist를 어떻게 구축했는지, 즉 원래 내부 지원 사용 사례에서 고객 대상 제품 경험으로 전환한 과정을 공유합니다. 또한 권한(permissions), 상태(state), 가드레일(guardrails), 평가(evaluation) 등을 확장하면서 처리했던 아키텍처도 다룹니다.
과제: 확장되지 않던 지원 시스템과 높은 AI 출시 기준
저희 지원팀은 몇 주에 걸쳐 수천 건의 케이스를 처리합니다. 각 케이스는 제품별, 심각도별, 담당자별로 읽고 분류한 다음 올바른 곳으로 라우팅되어야 했습니다. 고객 문의가 증가함에 따라 이는 확장성 과제를 제시했습니다. 에이전트(agent)가 명백한 해결책이었지만, 저희가 보안 소프트웨어를 구축하는 회사이다 보니 고객에게 제공되는 모든 것은 나머지 제품에서 기대하는 것과 동일한 기준을 충족해야 했습니다. 우리는 세 가지를 증명해야 했습니다. 즉, 에이전트가 올바르게 답변한다는 것, 거부해야 할 것을 거부한다는 것, 그리고 사용자가 이미 볼 수 있는 것이 아닌 것을 절대 반환하지 않는다는 것이었습니다.
“에이전트를 구축하는 어려운 부분은 모델이 무엇을 할 수 있느냐가 아니라, 에이전트가 실제로 작동한다는 것을 증명하는 것입니다. 저희는 모든 변경 사항을 LangSmith의 평가(evals)를 통해 실행하며, 기준을 통과하지 못하면 출시되지 않습니다.”
—Bailey Millns, AI 엔지니어, Snyk
제품 내부에 직접 출시하기보다는, 먼저 자체 팀을 대상으로 내부 테스트부터 시작했습니다. 이 접근 방식은 초기 오류가 유료 고객에게 영향을 미치기보다 Snyk 내부에 머물도록 보장했습니다. 또한 더 광범위한 배포 전에 위험도가 높은 기능을 안전하게 테스트하고 에이전트의 동작을 관찰할 수 있게 해주었습니다.
이 내부 단계는 고객 대상 기능 도입에 앞서 LangSmith를 사용하여 운영 모델을 확립하는 데 도움이 되었습니다. 이 초기 세션의 모든 추적(trace)은 평가 세트에 직접 반영되어, 지원 포털에서 출시될 때 에이전트가 어떻게 작동할지에 대한 강력한 이해를 제공했습니다.
1단계: 내부 도구(internal tooling)
약 1년 동안 Snyk Assist는 고객 지원팀의 내부 도구로 케이스 분류(case triage) 및 가상 에이전트 역할을 수행했으며, Snyk 직원들만이 사용자였습니다. 이 에이전트를 내부적으로 테스트하면서 오프라인 테스트에서는 발견되지 않았던 엣지 케이스(edge cases)들을 표면화할 수 있었고, 피드백 루프는 출시 주기 단위가 아닌 시간 단위로 측정되었습니다.
2단계: 지원 포털 (the support portal)
2026년 4월에 저희는 Snyk Assist를 지원 포털을 통해 고객들에게 공개했습니다. 이 단계에서 Snyk Assist는 사용자 이름을 환영하고, 계정 컨텍스트(account context)를 이해하며, 로그인 상태에 대한 건강 검진(health check)을 실행하고, 사람이 개입하기를 기다릴 필요 없이 언제든지 티켓을 생성할 수 있었습니다.
3단계: 핵심 제품 (the core product)
2026년 9월 1일, Snyk Assist는 새로운 탐색 기능(navigation)과 함께 핵심 Snyk 제품으로 이동하여 모든 유료 고객의 페이지 상단 바에 패널 형태로 자리 잡았습니다.
저희는 각 단계에서 동일한 에이전트 런타임(agent runtime)을 유지했습니다. 변경된 것은 그 앞에 노출되는 표면(surface)뿐이었습니다.
하나의 런타임, 여러 프론트 엔드 (One runtime, many front doors)
Snyk Assist는 Slack 앱, 웹 앱, 그리고 직접 API 액세스라는 여러 표면 뒤에 있는 단일 LangGraph 에이전트입니다. 이 모든 것은 동일한 보안 프레임워크를 통해 라우팅됩니다.
저희는 광범위한 커뮤니티, 강력한 생태계(ecosystem), 그리고 에이전트 구축을 위한 업계 표준으로서의 지위를 가진 LangChain을 선택했습니다.
“LangChain은 단연코 가장 큰 커뮤니티와 생태계를 가지고 있었고, 에이전트를 구축하는 사실상의 표준이 되어가고 있었습니다.”
—Jada Ross, AI 엔지니어, Snyk
소규모 팀으로 운영되면서 저희는 버그를 수정하고, 기능을 출시하며, 인시던트 대응을 한 곳에서 처리할 수 있는 단일 런타임을 원했습니다. 이러한 단순성은 아키텍처가 파편화되는 것 없이 빠르게 확장하는 것을 가능하게 했습니다.
또한, 사용자 지정 솔루션을 구축하는 대신 LangChain의 미들웨어(middleware)를 사용함으로써 컨텍스트, 가드레일(guardrails), 모델 폴백(model fallbacks)을 위한 정의된 통합 지점(integration points)을 제공받았습니다. 이 설정 덕분에 광범위한 코드 재작성 없이 간단한 한 줄 편집만으로 기능 업데이트나 순서 변경이 가능합니다.
다음은 시스템을 프로덕션 환경에서 운영 가능하게 만든 네 가지 설계 결정 사항입니다:
사용자별로 등록되는 타입 지정 함수로서의 도구(Tools as typed functions, registered per user). 우리는 로그인한 사용자가 실제로 가진 권한에 기반하여 요청 시점에 도구를 연결합니다. 이는 에이전트가 사용자가 이미 볼 수 있는 데이터에만 접근할 수 있음을 의미합니다. 대부분의 도구는 별도의 마이크로서비스(microservices)이며, 이를 통해 독립적으로 확장하고 에이전트 루프를 변경하지 않고도 기능을 추가할 수 있습니다.배관(Plumbing) 대신 미들웨어(Middleware). 컨텍스트 관리(Context management), 가드레일(guardrails), 모델 폴백(model fallbacks)은 에이전트 생명주기(agent lifecycle)의 정의된 지점에 연결됩니다. 이전처럼 루프를 통해 수동으로 전달될 필요가 없습니다. 동작을 추가하거나 순서를 변경하려면 전체 재작성이 아닌 목록에 한 줄만 변경하면 됩니다.체크포인터(Checkpointer)가 처리하는 상태(State). 대화 기록은 PostgreSQL에 세션별로 키 지정되어 영구 저장되며, 이를 통해 다중 턴 메모리(multi-turn memory), 파드(pods)를 가로지르는 확장성, 그리고 대화 재개 모두 추가 배선 없이 작동합니다.루프 자체를 내부 플랫폼으로 만들기. 에이전트는 단순히 모델, 도구, 프롬프트, 미들웨어, 체크포인터의 조합이기 때문에, 공유 팩토리(shared factory)가 컴파일된 그래프를 반환하며 각 팀은 자신만의 구성을 제공합니다. 대부분의 새로운 워크플로우는 새로운 아키텍처라기보다는 구성 변경에 가깝습니다.
“개발 관점에서 볼 때, LangChain은 우리가 오케스트레이션(orchestration), 도구 호출(tool-calling), 스트리밍(streaming), 상태(state)를 재발명하는 대신 에이전트의 영향력과 기능에 집중할 수 있도록 배터리가 포함된(batteries-included) 에이전트 추상화(agent abstraction)를 제공했습니다.”
—Matt Jarvis, Snyk AI 엔지니어링 디렉터

모든 변경 사항을 평가하는 방법
개발 초기부터 모든 모델 호출(model call), 도구 호출(tool call), 의사 결정 지점은 LangSmith에서 추적되었습니다. 이 추적이 우리가 배포하는 방식의 기반이 되었습니다.
우리는 두 가지 계층의 평가를 사용합니다.
**오프라인 평가(Offline evaluation)는 LangSmith에서 일련의 테스트 질문을 실행합니다. 첫 번째는 알려진 정답이 있는 실제 질문이며, 두 번째 모델에 의해 표시되어 프롬프트나 모델 변경으로 인해 답변 품질이 저하되었는지 빠르게 알 수 있습니다. 두 번째는 사람들이 에이전트가 지침 무시하거나 비밀 정보를 넘겨주도록 속이는 자동화된 레드팀(red-teaming) 연습입니다.
**CI를 게이트로 사용한다(CI as a gate)**는 모든 풀 리퀘스트(pull request)가 해당 스위트(suites)에 대해 실제 에이전트를 실행하고, 저장소에 커밋된 합의된 임계값에 따라 차단된다는 의미입니다.
**온라인 평가(Online evaluation)**는 예약된 작업을 통해 모든 프로덕션 실행을 채점합니다. 우리는 두 가지를 확인합니다: 이것이 Snyk에 관한 것인지, 그리고 응답이 그것에 답했는지 여부입니다. 이러한 점수는 추정치가 아닌 측정된 편향률(deflection rate)을 제공합니다. 또한 각 질문을 제품 영역, 주제, 언어 생태계 및 오류 유형별로 분류하여 제품 관리자에게 고객이 어려움을 겪는 곳의 실시간 지도를 제공합니다.
**루프를 닫는다(Closing the loop)**는 LangSmith MCP 서버를 통해 코딩 에이전트 내부에서 발생합니다. 나쁜 트레이스(trace)를 발견하면 IDE를 벗어나지 않고 조사하고 데이터셋으로 전환할 수 있습니다.
모든 단계가 LangSmith에 추적되기 때문에, 우리는 실제 질문에 대해 변경 사항을 테스트하고, 배포 전에 회귀(regressions)를 포착하며, 나쁜 트레이스를 빠르게 새로운 데이터셋으로 전환할 수 있습니다. 이는 더 빠른 피드백 루프를 제공하고 자신감을 가지고 배포하는 것을 훨씬 쉽게 만듭니다.
영향: 티켓 감소 및 답변 속도 향상
Snyk Assist가 2026년 4월에 고객에게 출시된 이후:
60,000개 이상의 질의 처리500개 이상의 고객 계정세션 중 85% 이상을 지원 티켓 없이 해결하여 지원팀의 수백 시간 절약****에이전트에 의해 자동 감지 및 적절한 팀으로 에스컬레이션된 250개 이상의 사례
모든 대화가 채점되고 분류되므로, 제품의 어떤 부분이 가장 많은 혼란을 야기하는지 파악할 수 있습니다. 이는 문서 개선에 도움이 됩니다.
핵심 시사점 및 향후 계획
Snyk Assist는 원래 Snyk 자체 지원팀을 위한 도구였습니다. 오늘날 이 도구는 60,000건 이상의 고객 문의를 처리했으며, 지원 티켓 생성 없이 85%가 넘는 세션을 해결했습니다. 지난 9월부터 Snyk Assist는 제품 자체의 일부가 되어, 고객들이 이미 작업하고 있는 모든 페이지에서 사용할 수 있게 되었습니다. 저희는 이것이 모든 고객에게 유용한 Snyk 경험의 일부가 되기를 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 LangChain Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기