리옵트 데이터
프로젝트 워크스페이스

AI 관측

LLM 호출의 비용·토큰·지연·에러를 추적하고, 문제 호출의 공통점을 비교해 트레이스와 대화로 내려갑니다.

AI 관측에서는 비용·토큰·지연을 확인하고, 문제 호출이 정상 호출과 어떻게 다른지 비교합니다. 모델·프로바이더·기능·에이전트의 구성 차이를 단서로 삼아 실제 트레이스를 조사하세요.

진입 경로

  • 개요: /dashboard/[orgId]/[projectId]/ai (사이드바의 AI 관측)
  • 트레이스: /dashboard/[orgId]/[projectId]/ai/traces, 상세는 /ai/traces/[traceId]
  • 대화: /dashboard/[orgId]/[projectId]/ai/sessions, 상세는 /ai/sessions/[sessionId]

화면 위의 개요, 트레이스, 대화로 오가도 기간과 필터가 그대로 유지됩니다.

시작하기 전에

  • 서버에 @reopt-ai/data-sdk-server/ai 텔레메트리를 등록해야 모델 호출이 기록됩니다. 기록이 없는 프로젝트에서는 화면에 설치 코드가 표시됩니다.
  • 프로젝트를 볼 수 있는 조직 멤버라면 조회할 수 있습니다. 조회는 데이터 포인트를 쓰지 않습니다.
  • 기본 기간은 최근 7일입니다. 한 번에 조회할 수 있는 기간은 최대 400일입니다.
  • 프롬프트와 응답 본문은 기본으로 저장하지 않습니다. 비용·토큰·지연·에러 같은 호출 메타데이터만으로 이 문서의 화면을 모두 쓸 수 있습니다.

개요

상단 필터는 세 화면이 함께 씁니다.

  • 모델은 여러 개를 고를 수 있습니다. 선택지는 고른 기간에 실제로 호출된 값입니다.
  • 결과는 전체, 에러만, 정상만 중 하나입니다.
  • 추가 조건을 펼치면 프로바이더, 기능, 에이전트, 종류(생성, 임베딩, 도구·구간, 트레이스)로 좁힙니다.
  • 분류 표의 값을 누르면 그 값이 필터로 걸립니다.

타일은 선택한 기간의 합계와, 길이가 같은 직전 기간 대비 증감을 보여줍니다.

타일내용
비용모델 호출 비용 합계(USD). 비용을 모르는 호출은 건수를 따로 표시
모델 호출생성·임베딩 호출 수
에러율실패한 모델 호출 비율과 건수
p95 지연호출 지연의 95분위. p50을 함께 표시
p95 첫 토큰첫 토큰까지 걸린 시간. 스트리밍 호출만 측정
토큰입력·출력 토큰
트레이스트레이스 수
사용자profile_id, 없으면 device_id 기준. 둘 다 없는 호출은 세지 않음

추이 차트는 요청·에러, 비용, 토큰, 지연, 첫 토큰 중 하나를 그립니다. 타일을 눌러도 차트 지표가 바뀝니다.

  • 기간이 2일 이하면 시간 단위, 그보다 길면 일 단위로 묶습니다.
  • 지연은 p50 선과 p50~p95 범위를 함께 그립니다.
  • 차트를 드래그하면 그 구간으로 기간이 좁혀지고 주소에도 반영됩니다.
  • 이전 기간 비교를 켜면 직전 기간을 겹쳐 그립니다.
  • 릴리스 첫 관측·알림 감지 표시를 켜면 릴리스가 처음 관측된 시각과 알림이 발송된 시각을 표시합니다. 배포 시각이나 임계값을 넘은 시각이 아니라 기록된 시각입니다.

분류는 모델, 프로바이더, 기능, 에이전트, 사용자, 종료 사유, 도구, 에러 유형 중 하나를 기준으로 호출, 에러율, 비용, 토큰, 지연, 트레이스 수를 나눠 보여줍니다. 최대 50개 값이 표시됩니다. 도구 기준은 모델 호출이 아니라 도구 실행을 세므로 토큰과 비용이 비어 있습니다. 값을 누르면 그 도구를 실행한 트레이스로 좁힙니다. 이 조건의 트레이스 보기를 누르면 같은 기간과 필터로 트레이스 목록이 열립니다.

트레이스

트레이스는 작업 하나를 이루는 모델 호출과 도구 실행의 묶음입니다. 목록은 트레이스 하나를 한 행으로 보여줍니다.

  • 열: 상태, 트레이스 이름과 ID, 시작, 소요, 비용, 토큰, 모델 호출 / 스팬, 모델, 기능, 에이전트, 대화, 사용자
  • 정렬: 최근 순, 비용 높은 순, 오래 걸린 순
  • 50건씩 불러오고 더 보기로 이어서 봅니다.
  • 비용 옆 +?는 비용을 모르는 호출이 섞여 실제보다 적게 표시됐음을 나타냅니다.
  • 대화 ID를 누르면 그 대화가 열립니다.

트레이스 이름을 누르면 상세가 열립니다.

  • 위쪽 타일은 상태, 소요, 비용, 토큰입니다.
  • 워터폴은 스팬을 같은 시간축에 그립니다. 생성, 임베딩, 도구 실행을 색으로 구분하고 실패한 스팬을 표시합니다. 아무 스팬도 실행되지 않은 긴 구간은 접어서 보여줍니다.
  • 한 트레이스에서 최대 2,000개 스팬을 불러옵니다.
  • 스팬을 고르면 모델, 프로바이더, 토큰, 비용과 비용 출처, 지연, 첫 토큰, 종료 사유, 에러 내용이 보입니다.
  • 본문을 저장한 호출이면 입력과 출력이 함께 보입니다. 호출에 붙인 사용자 정의 속성이 있으면 속성도 표시됩니다.
  • 재현은 선택한 모델 호출을 Vercel AI SDK 코드로 보여줍니다. 실행은 각자의 프로바이더 키로 해야 합니다.
  • 피드백은 이 트레이스에 남겨진 평가의 건수, 평균 점수, 긍정·부정 수와 개별 평가를 보여줍니다. 트레이스가 끝난 뒤 30일 안에 남겨진 평가까지 읽습니다.
  • 이전(P), 다음(N)은 들어온 목록의 순서대로 옆 트레이스를 엽니다. 목록으로는 같은 필터의 목록으로 돌아갑니다.

대화

대화는 같은 $ai_session_id를 가진 트레이스의 묶음입니다. SDK의 context에서 aiSessionId를 넘겨야 대화로 묶입니다. 넘기지 않으면 트레이스는 보이지만 대화 목록은 비어 있습니다.

  • 목록의 열: 대화, 시작, 마지막 활동, 기간, 트레이스, 모델 호출, 에러, 토큰, 비용, 사용자
  • 필터는 조건에 맞는 호출이 있는 대화를 고르는 데만 씁니다. 각 행의 숫자는 대화 전체의 합계입니다.

대화를 열면 주고받은 순서대로 표시됩니다.

  • 한 턴은 트레이스 하나입니다. 턴마다 모델 호출 수, 토큰, 비용, 소요 시간이 표시되고, 트레이스 열기를 누르면 상세로 이동합니다.
  • 모델 호출은 보낸 내용과 받은 내용 두 메시지로 나뉩니다. 메시지마다 모델, 토큰, 비용, 지연이 표시됩니다.
  • 본문을 저장한 호출은 보낸 내용 보기, 받은 내용 보기로 엽니다. 본문은 열 때 한 건씩 불러옵니다.
  • 대화는 목록에서 고른 기간과 관계없이 전체를 보여줍니다. 긴 대화는 이어지는 턴 더 보기로 이어서 불러옵니다.

문제 호출의 공통점 찾기

개요의 문제 호출은 무엇이 다를까요? 영역에서 두 집단을 비교합니다.

  • 비교 기간은 최대 31일입니다. 선택한 기간의 생성·임베딩 호출을 집계하며, 도구 스팬과 트레이스 요약 행은 호출 수에 더하지 않습니다.
  • 프롬프트·응답 본문 수집을 켤 필요는 없습니다. 비교는 호출 메타데이터만 사용합니다.

오류 호출의 공통점 찾기

  1. 상단에서 기간을 고르고, 필요하면 기능이나 모델 범위를 좁히세요.
  2. 추이의 오류와 정상 비교를 누르거나, 차트 아래 비교 영역에서 같은 항목을 선택하세요.
  3. 상단 결과 필터가 에러만 또는 정상만이거나 호출 지연 필터가 걸려 있다면 두 집단 모두 포함을 누르세요. 나머지 조건은 유지됩니다.
  4. 차이가 큰 속성부터 확인하세요. 각 값의 오류·정상 집단 비중과 실제 호출 건수가 함께 표시됩니다.
  5. 해당 값의 트레이스 보기를 누르면 그 조건을 만족하는 모델 호출이 있는 트레이스로 이동합니다.

트레이스 목록은 선택된 트레이스 전체를 보여줍니다. 비교한 모델 호출 건수와 트레이스 행 수는 다를 수 있고, 한 트레이스에 다른 모델이나 도구 호출도 함께 있을 수 있습니다.

느린 호출의 공통점 찾기

느린 호출 비교를 선택하고 기준 시간을 밀리초로 정하세요. 기본값은 3,000ms입니다. 기준 이상인 호출과 미만인 호출을 비교하며, 지연을 측정하지 않은 호출은 양쪽에서 제외하고 그 건수를 따로 표시합니다.

예를 들어 3,000ms를 선택하면 정확히 3초인 호출도 느린 집단에 포함됩니다. 목록으로 이동한 뒤 호출 지연 필터를 지우면 다시 전체 범위가 보입니다.

결과 읽는 법

차이(%p) 수치는 두 집단에서 같은 값이 차지하는 비중의 차이입니다. 오류 호출의 60%, 정상 호출의 20%가 특정 모델을 사용했다면 차이는 +40%p입니다. 이 수치는 그 모델의 오류율이 아니며, 그 모델이 오류의 원인임을 뜻하지도 않습니다.

  • 전체 호출을 집계합니다. 화면에는 속성마다 차이가 큰 값 최대 8개를 표시하지만 비율의 분모에는 나머지 값도 포함됩니다.
  • 미기록도 별도 값으로 비교합니다. 기능 이름이 빠진 호출이 있어도 그 호출을 분모에서 빼지 않습니다.
  • 한 집단이 비어 있으면 차이를 계산하지 않습니다. 필터·기간·지연 기준을 조정하세요.
  • 한 집단이 20건 미만이면 안내가 표시됩니다. 몇 건만 추가되어도 비율이 크게 바뀔 수 있습니다. 20건 이상이라고 해서 통계적 유의성이 보장되지는 않습니다.
  • 네 속성의 차이가 모두 0.1%p 미만이면 뚜렷한 구성 차이가 없다는 안내가 표시됩니다.
  • 다른 작업을 한 호출끼리 비교하면 작업 구성 차이가 먼저 보일 수 있습니다. 같은 기능으로 좁혀 모델이나 프로바이더 차이를 다시 살펴보세요.

조사 조건 공유하기

비교 방식·지연 기준·기간·필터는 주소에 남습니다. 상대 기간인 최근 7일 링크는 나중에 열면 그 시점의 최근 7일을 보여줍니다. 특정 조사 결과를 공유하려면 기간을 고정된 날짜와 시각으로 선택하세요.

비교 결과에서 트레이스 보기로 이동하는 링크는 방금 조사한 시작·종료 시각을 고정합니다. 목록은 생성·임베딩 호출이 있는 트레이스로 좁혀지고, 느린 호출 비교에서 넘어오면 오래 걸린 순으로 정렬됩니다. 뒤로 가면 비교 화면으로 돌아갑니다.

숫자를 세는 방식

  • 호출, 에러, 토큰, 비용은 생성·임베딩 호출만 셉니다. 도구 스팬과 트레이스 요약 행은 더하지 않습니다.
  • 모델은 프로바이더가 응답에 보고한 모델을 쓰고, 없으면 요청한 모델을 씁니다.
  • 비용 출처는 보고값, 가격표, 비용 모름 중 하나입니다. 보고값도 가격표 항목도 없는 호출은 비용 합계에 $0으로 들어갑니다. 이런 호출이 있으면 개요에 안내가 표시되고, 실제 비용은 표시값보다 큽니다.
  • 지연 분위수는 지연을 측정한 호출만으로 계산합니다. 측정값이 없는 호출을 0으로 치지 않습니다.
  • 트레이스와 대화 목록에서 필터는 행을 고르기만 합니다. 각 행의 합계는 그 트레이스나 대화 전체입니다.
  • 시각은 프로젝트 타임존으로 표시합니다.

본문 수집과 보존

  • 프롬프트·응답 본문은 SDK의 captureContent와 프로젝트 설정의 프롬프트·응답 본문 수집을 모두 켜야 저장됩니다. 프로젝트 설정은 조직 owner 또는 admin만 바꿀 수 있습니다.
  • 저장된 본문은 프로젝트 멤버 모두가 트레이스 상세와 대화에서 볼 수 있습니다. 개인정보나 비밀값이 섞일 수 있으면 SDK의 redact로 보내기 전에 지우세요.
  • 본문은 입력과 출력 각각 32,000자에서 잘립니다.
  • 본문 수집을 꺼도 이미 저장된 본문은 남습니다. 보존 기간이 지나면 정리됩니다.
  • AI 호출 기록은 프로젝트 보존 기간과 AI 관측의 스팬 보존 기간(기본 90일) 중 짧은 쪽이 지나면 매일 자동으로 정리됩니다. 정리된 트레이스와 대화는 열 수 없습니다.

설정 위치는 프로젝트 설정을 보세요.

다음 단계