LangChain Blog수정일

LangSmith의 AI Search로 행동 기반 에이전트 트레이스 검색

핵심 요약 AI Search는 이제 "사용자가 좌절했는가?" 또는 "PII가 유출되었는가?"와 같은 트레이스에 대한 의미론적 이해를 기반으로 대화를 찾을 수 있게 해줍니다. 행동을 일반 언어로 설명하면 빠른 의사결정 모델이 트레이스를 읽고 해당 행동이 발생한 사례들을 반환합니다. LangSmith는 사용합니다 궤적 트레이스를 정규화하고, 컨텍스트 비대화를

이미지 출처 · LangChain Blog

핵심 요약

  • AI Search는 이제 "사용자가 좌절했는가?" 또는 "PII가 유출되었는가?"와 같은 트레이스에 대한 의미론적 이해를 기반으로 대화를 찾을 수 있게 해줍니다.
  • 행동을 일반 언어로 설명하면 빠른 의사결정 모델이 트레이스를 읽고 해당 행동이 발생한 사례들을 반환합니다.
  • LangSmith는 사용합니다 궤적 트레이스를 정규화하고, 컨텍스트 비대화를 줄이며, 쿼리 결과를 빠르게 제공합니다.

에이전트 흔적 규모가 크고, 멀티모달이며, 정보 밀도가 높습니다. 트레이스는 사용자 입력, 에이전트의 응답 방식, 로직 실패와 같은 핵심 세부 정보를 담고 있습니다. 그렇기 때문에 사용자 행동을 이해하고 에이전트 성능을 개선하는 데 트레이스는 독보적으로 가치가 있지만, 기존 데이터 플랫폼은 이처럼 크고 비정형化的인 페이로드를 처리하도록 만들어지지 않았습니다.

트레이스 데이터를 유용하게 활용하려면 팀은 전체 수명 주기를 지원할 수 있는 인프라가 필요합니다: 대용량 실행 데이터를 수집·저장하고, 트레이스를 유연하게 쿼리하며, 이를 디버깅, 제품 분석, 주석 달기 같은 운영 워크플로를 위한 뷰로 전환하는 것이죠. 바로 이 때문에 저희는 SmithDB, 즉 다음을 위한 트레이스 데이터 전용 데이터베이스를 만들었습니다: LangSmith, 그리고 최근에는 사용자 지정 앱, 이를 통해 팀은 자신들의 트레이스 위에 맞춤형 뷰를 만들 수 있었습니다.

오늘 우리는 추가합니다 AI 검색, 자연어를 사용해 트레이스를 쿼리하는 새로운 방법입니다.

왜 우리는 AI Search를 만들었나

각 트레이스에는 사용자 입력, 에이전트 추론, 도구 호출 및 응답, 즉 에이전트가 어디에서 잘 수행하고 어디에서 실패하는지 이해하는 데 필요한 모든 정보가 담겨 있습니다. LangSmith를 사용하는 팀은 에이전트 트레이스를 분석하여 평가에 사용할 예시를 발견하는 경우가 많습니다. 데이터셋 또는 검토자를 위한 대화 내용 어노테이션 대기열.

하지만 적절한 트레이스를 찾아내는 일은 번거로울 수 있습니다. "PII가 유출되었는가?" 또는 "사용자가 좌절했는가?"와 같은 질문은 태그나 메타데이터 같은 단일 트레이스 속성과 깔끔하게 대응되지 않으며, 전문 검색으로도 답할 수 없습니다. 이를 위해서는 트레이스 내용에 대한 이해가 필요합니다. 지금까지는 사전에 이밸류에이터를 설정하거나 트레이스를 수동으로 검토해야 했습니다.

그래서 우리는 AI Search를 만들었습니다. 찾고자 하는 동작을 설명하면 LangSmith가 해당 동작이 발생한 트레이스를 반환합니다. 이를 통해 바늘 찾기처럼 드문 트레이스를 찾고 문제가 되는 패턴을 즉석에서 검색할 수 있습니다.

검색할 수 있는 항목

트레이스 내용에 나타나는 모든 것을 검색할 수 있습니다. 작업을 완료했다고 말했지만 실제로는 완료하지 않은 에이전트, 답변에 좌절했거나 반박한 사용자, PII를 유출한 모델 요청, 또는 구독 취소를 시도하는 누군가를 찾을 수 있습니다. 제품 팀은 "지원하지 않는 통합 요청", "경쟁사 언급", "온보딩에 혼란스러워하는 사용자" 등을 검색하여 사용자 자신의 말로 제품이 미흡한 부분을 파악할 수 있습니다.

AI Search는 이미 사용 중인 필터와 함께 작동하므로, 오류가 발생한 트레이스에서만 또는 특정 태그가 있는 경우에만 검색을 실행할 수 있습니다.

우리가 이를 구축한 방법

왜 모델이 모든 트레이스를 읽는가

벡터 검색은 정확한 단어 대신 의미로 검색하는 일반적인 방법입니다. 이는 쿼리와 각 트레이스를 임베딩, 즉 텍스트가 무엇에 관한 것인지를 담아내는 짧은 숫자 목록으로 변환합니다. 그런 다음 쿼리의 임베딩과 가장 가까운 임베딩을 가진 트레이스들을 반환합니다. 이는 청구서에 관한 대화를 찾는 것 같은 주제 검색에는 잘 작동합니다. 하지만 임베딩은 하나의 트레이스 전체를 하나의 작은 벡터에 압축하며, 이 압축은 손실이 있습니다. 쿼리와 관련된 중요한 세부 사항이 사라질 수 있습니다. 에이전트가 실제로 작업을 성공적으로 수행한 트레이스와 단지 수행했다고 말하기만 한 트레이스가 거의 동일한 임베딩을 가질 수 있습니다. 이 둘을 구별하려면 트레이스의 실제 단어를 질문과 함께 읽고 무슨 일이 일어났는지 추론할 수 있는 모델이 필요합니다.

최근까지 검색 시점에 이를 수행하는 것은 너무 느리고 비용이 너무 많이 들었습니다. 빠른 결정 모델(fast decision model)이 이를 바꾸었습니다. 이 모델들은 입력에 대한 하나의 좁은 질문에 충분히 빠르고 저렴하게 답하여 대규모로 실행할 수 있습니다. AI Search는 결정 모델 추론을 SmithDB라는 에이전트 관측 가능성(observability)을 위한 저희 데이터 레이어와 결합합니다. 트레이스가 도착하면 SmithDB는 이를 궤적(trajectory)으로 변환합니다. 검색을 실행하면 필터가 후보를 좁히고, 결정 모델이 남은 각 궤적을 사용자의 설명과 대조하여 확인합니다.

트레이스는 크고 다양한 형식으로 제공됩니다

트레이스는 여러 소스에서 제공됩니다: OpenAI 및 Anthropic SDK, LangChain, LangGraph, Vercel AI SDK, OpenTelemetry 등. 각 소스는 메시지를 조금씩 다르게 기록합니다. 트레이스는 또한 자기 반복을 합니다. 에이전트는 종종 모든 LLM 호출마다 대화 기록을 다시 전송하기 때문에, 첫 번째 메시지가 이후의 모든 호출마다 다시 나타납니다.

SmithDB는 이러한 트레이스를 세션별 궤적 으로 변환합니다. 궤적은 에이전트의 작업을 정제한 뷰입니다: 각 메시지, 도구 호출, 도구 결과가 한 번씩 나열됩니다. SmithDB는 트레이스가 도착할 때 이를 구축하며, 지원되는 모든 형식을 동일한 형태로 만듭니다.

AI Search는 원시 트레이스 대신 궤적(trajectory)을 분석합니다. 모든 포맷이 동일한 궤적 형태를 가지기 때문에, 서로 다른 SDK로 구축된 에이전트에서도 하나의 검색이 작동합니다. 반복 메시지를 제거하면 컨텍스트 비대가 줄어들어 검색이 더 빠르게 실행됩니다. 또한 궤적은 전체 세션을 포괄하므로, "사용자가 취소를 시도함"을 검색하면 모델이 사용자가 요청한 내용, 에이전트가 수행한 작업, 대화가 어떻게 끝났는지를 모두 볼 수 있습니다.

각 LLM 호출마다 전체 히스토리를 다시 전송합니다. 궤적 뷰는 세션을 한 번만 보여줍니다.여기에 이미지 캡션 입력(선택 사항)

궤적은 여전히 깁니다

중복 제거가 도움이 되지만, 에이전트 궤적은 여전히 깁니다. 어느 정도로 긴지 감을 잡기 위해, 저희는 150개의 무작위 대화를 샘플링했습니다 from Open SWE, LangChain 팀이 매일 사용하는 오픈 소스 코딩 에이전트입니다. 각 작업은 셸 접근 권한이 있는 자체 샌드박스에서 실행되며 하위 에이전트에게 작업을 넘길 수 있어, 대화가 커지게 됩니다.

소수의 샘플에서도 두어 개는 1,000,000 토큰을 넘어 실행되었습니다. 드문 동작을 검색하려면 수많은 대화를 읽어야 하므로, AI Search는 정기적으로 그 정도 크기의 대화를 접하게 되며 모든 토큰을 읽을 수는 없습니다.

하지만 대부분의 질문은 이 모든 토큰이 필요하지 않습니다. 많은 질문은 사용자가 요청한 내용과 에이전트가 어떻게 답했는지에 관한 것입니다. 중앙값 기준 대화에서는 72K 토큰 중 약 2K만이 사용자 메시지와 에이전트의 답변에서 나왔습니다. 약 85%는 도구 출력, 주로 파일 읽기와 셸 명령이었습니다.

💡 트레이스가 1,000,000 토큰을 넘어 실행되더라도, 에이전트 동작에 관한 많은 질문은 수천 개의 토큰만으로도 답변할 수 있습니다.

각 궤적에는 고정된 토큰 예산이 할당되며, 우선순위 순서로 채워집니다. 사용자 메시지와 에이전트의 사용자에 대한 답변이 먼저 들어갑니다. 나머지 예산은 그 외 모든 것, 즉 중간 AI 메시지(에이전트의 추론 및 도구 호출), 도구 결과, 시스템 메시지에 할당됩니다. 다음 메시지가 일부만 들어가는 경우 예산을 채우기 위해 잘리고, 그 이후의 내용은 버려집니다.

AI Search는 8K 토큰 예산을 우선순위 순서로 채운 뒤, 유지된 메시지를 원래 순서대로 결정 모델에 전송합니다.

검색은 대규모에서도 빠르게 유지되어야 합니다

SmithDB는 대량의 에이전트 트레이스 데이터를 수집하고 스캔하도록 설계되었습니다. 검색을 실행하면 구조화된 필터가 먼저 후보를 좁힙니다. 그런 다음 결정 모델이 남은 각 궤적을 설명과 대조하며, 많은 경우 병렬로 처리합니다. 모델이 한 배치의 궤적을 검사하는 동안 SmithDB는 이미 다음 배치를 가져오고 준비하고 있습니다. 일치 항목은 발견되는 대로 스트리밍되므로 전체 스캔이 끝날 때까지 기다릴 필요가 없습니다.

구조화된 필터가 후보를 좁히고, 모델이 각 궤적을 검사하며, 일치 항목은 발견되는 대로 스트리밍됩니다.

다음 단계

저희는 사람들이 가장 많이 묻는 질문이 무엇인지 아직 배우고 있는 중입니다. 분류하기 가장 어려운 대화는 미묘한 차이가 있는 것들입니다. "사용자가 포기함"과 "사용자가 필요한 것을 얻고 떠남"을 구분하는 것은 긴 궤적에서 몇 번의 턴 차이로 갈릴 수 있습니다. 저희는 트레이스로 튜닝된 모델이 이를 더 신뢰성 있게 구분하는지 확인하고 싶습니다.

토큰 예산은 사용자와 에이전트가 말한 내용에서 답을 찾을 수 있을 때 잘 작동합니다. 다른 질문들은 다른 증거가 필요합니다. 에이전트가 도구 오류를 무시하는 것은 도구 결과에서만 드러납니다. 저희는 질문에 따라 컨텍스트를 선택하는 방법과, 모델이 확신하지 못할 때를 보여주는 신호를 탐색하고 있어, 더 많은 컨텍스트로 두 번째 패스를 수행할 수 있게 하려 합니다.

또한 유사한 결과를 그룹화하거나 공통점을 요약하는 방식으로 단순한 일치 목록을 넘어서고자 합니다.

시작하기

AI Search는 현재 LangSmith Cloud 에서 GCP US, EU, APAC 리전에 추가 비용 없이 공개 베타로 제공됩니다. 조직 관리자가 설정에서 활성화하면 트레이싱 페이지에 표시됩니다. 자세한 내용은 AI Search 문서 를 참조하세요. 어떤 것을 검색하는지 알려주세요.

‍

원문 출처

LangChain Blog

내용 안내

원문 발행 및 권리는 출처에 있습니다.

기계 번역 · 원문을 참고하세요