콘텐츠로 건너뛰기
Telemetry
문서 찾아보기
가이드업데이트된 2026년 8월 8일Telemetry 편집 및 제품 팀의 검토6 최소 읽기

1분 안에 OpenAI 비용 대시보드를 확인하세요

전체 워크플로를 검토한 다음 샘플 사용 이벤트와 즉시 실행 가능한 비용 쿼리가 포함된 작업 영역을 만듭니다.

이 페이지에서
  1. 1분 안에 OpenAI 비용 대시보드를 확인하세요.
  2. 전제 조건
  3. 1. SDK 설치 및 초기화
  4. 2. 계측 외부에서 가격 책정 유지
  5. 3. API 요청에 대한 응답 계측
  6. 4. 재시도를 비용에 포함하기
  7. 5. 지출을 결과에 연결
  8. 6. 기능 및 모델별 일일 비용 쿼리
  9. 7. 송장에 대한 견적 조정
  10. 알림할 내용
  11. 다음 단계

OpenAI API 모델 및 기능별 비용 추적

OpenAI API 비용을 추적하려면 통화를 발생시킨 고객 및 제품 기능과 함께 토큰 사용량, 모델, 대기 시간, 재시도 및 예상 요청 비용을 기록하세요. 이를 통해 설명할 수 없는 제공업체 송장을 모델, 기능, 팀 및 결과별로 쿼리할 수 있는 지출로 전환합니다.

지출, 요청당 비용, 모델별 일일 비용 및 값비싼 프롬프트 이상값이 포함된 OpenAI 비용 대시보드의 예

요청 수준 원격 분석은 비용 추세를 이를 유발한 모델 및 워크로드에 연결합니다.

가장 유용한 이벤트는 공급자 사용과 제품 컨텍스트를 결합합니다. 토큰 수는 소비를 설명합니다. feature, team_id, statusaccepted와 같은 필드는 요청이 값을 생성했는지 여부를 설명합니다.

1분 안에 OpenAI 비용 대시보드를 확인하세요.

무료 샘플 OpenAI 사용 이벤트로 시작하세요. 빠른 시작은 명확하게 표시된 이벤트를 만들고, 실행할 준비가 된 비용 쿼리를 열고, 시작하기 대시보드에 결과를 유지합니다. 애플리케이션 코드를 변경하기 전에 워크플로를 검사할 수 있습니다.

생성된 샘플은 최소 유효 비용 형태를 사용합니다.

{
  "provider": "openai",
  "model": "gpt-5",
  "input_tokens": 1250,
  "output_tokens": 340,
  "cost_usd": 0.0184,
  "latency_ms": 842,
  "status": "ok",
  "sample": true
}

생성된 telemetry_quickstart 테이블에 대해 즉시 실행합니다.

SELECT
  model,
  COUNT(*) AS requests,
  SUM(input_tokens) AS input_tokens,
  SUM(output_tokens) AS output_tokens,
  ROUND(SUM(cost_usd), 4) AS total_cost_usd,
  ROUND(AVG(latency_ms), 0) AS average_latency_ms
FROM telemetry_quickstart
WHERE provider = 'openai'
GROUP BY model
ORDER BY total_cost_usd DESC;

전제 조건

  • Telemetry API 키
  • OpenAI API 키
  • Node.js 및 공식 OpenAI JavaScript SDK

1. SDK 설치 및 초기화

npm install openai telemetry-sh
import OpenAI from "openai";
import telemetry from "telemetry-sh";

const openai = new OpenAI();
telemetry.init(process.env.TELEMETRY_API_KEY);

서버 측 환경 변수에 두 API 키를 모두 유지합니다. 소스 제어나 브라우저 코드에 넣지 마십시오.

2. 계측 외부에서 가격 책정 유지

OpenAI 가격 및 모델 가용성은 변경될 수 있습니다. 공식 OpenAI 가격 페이지에서 현재 요금을 읽고 구성에 사용하는 요금을 저장하세요.

이 예에서는 백만 토큰당 USD를 사용합니다.

OPENAI_MODEL="YOUR_MODEL"
OPENAI_INPUT_USD_PER_MILLION="YOUR_CURRENT_INPUT_RATE"
OPENAI_CACHED_INPUT_USD_PER_MILLION="YOUR_CURRENT_CACHED_INPUT_RATE"
OPENAI_CACHE_WRITE_USD_PER_MILLION="YOUR_CURRENT_CACHE_WRITE_RATE"
OPENAI_OUTPUT_USD_PER_MILLION="YOUR_CURRENT_OUTPUT_RATE"
OPENAI_PRICING_VERSION="provider-price-sheet-reviewed-YYYY-MM-DD"
const pricing = {
  inputUsdPerMillion: Number(process.env.OPENAI_INPUT_USD_PER_MILLION),
  cachedInputUsdPerMillion: Number(
    process.env.OPENAI_CACHED_INPUT_USD_PER_MILLION
  ),
  cacheWriteUsdPerMillion: Number(
    process.env.OPENAI_CACHE_WRITE_USD_PER_MILLION
  ),
  outputUsdPerMillion: Number(process.env.OPENAI_OUTPUT_USD_PER_MILLION),
};

function estimateCostUsd({
  inputTokens,
  cachedInputTokens,
  cacheWriteTokens,
  outputTokens,
}) {
  const uncachedInputTokens = Math.max(
    0,
    inputTokens - cachedInputTokens - cacheWriteTokens
  );

  return (
    (uncachedInputTokens * pricing.inputUsdPerMillion +
      cachedInputTokens * pricing.cachedInputUsdPerMillion +
      cacheWriteTokens * pricing.cacheWriteUsdPerMillion +
      outputTokens * pricing.outputUsdPerMillion) /
    1_000_000
  );
}

공급자 송장을 청구 소스로 사용하세요. 캐시된 입력, 추론 토큰, 일괄 처리, 도구, 이미지, 오디오 또는 기타 모델 기능에는 추가 필드 및 가격 책정 규칙이 필요할 수 있습니다.

캐시된 읽기 또는 읽기 작업이 수행될 때 표준 입력 속도를 자동으로 대체하지 마십시오. 캐시 쓰기 속도를 알 수 없습니다. 현재까지 추정치를 불완전으로 표시 공급자 가격표가 검토되었습니다. 공급자별 주요 가격 구성, 모델, 서비스 계층 및 유효 시간을 덮어쓰지 않고 그대로 유지합니다.

3. API 요청에 대한 응답 계측

현재 OpenAI JavaScript SDK는 client.responses.create를 통해 응답 API를 노출합니다. 완성된 응답에는 input_tokens, output_tokenstotal_tokens가 포함된 usage 개체가 포함됩니다.

async function createDraftReply({ input, teamId, userId, attempt = 1 }) {
  const model = process.env.OPENAI_MODEL;
  const startedAt = Date.now();

  try {
    const response = await openai.responses.create({
      model,
      input,
    });

    const inputTokens = response.usage?.input_tokens ?? 0;
    const outputTokens = response.usage?.output_tokens ?? 0;
    const cachedInputTokens =
      response.usage?.input_tokens_details?.cached_tokens ?? 0;
    const cacheWriteTokens =
      response.usage?.input_tokens_details?.cache_write_tokens ?? 0;
    const reasoningTokens =
      response.usage?.output_tokens_details?.reasoning_tokens ?? 0;
    const estimatedCostUsd = estimateCostUsd({
      inputTokens,
      cachedInputTokens,
      cacheWriteTokens,
      outputTokens,
    });

    await telemetry.log("llm_request_completed", {
      response_id: response.id,
      provider: "openai",
      model: response.model ?? model,
      feature: "draft_reply",
      team_id: teamId,
      user_id: userId,
      status: "success",
      attempt,
      input_tokens: inputTokens,
      cached_input_tokens: cachedInputTokens,
      cache_write_tokens: cacheWriteTokens,
      output_tokens: outputTokens,
      reasoning_tokens: reasoningTokens,
      total_tokens: response.usage?.total_tokens ?? inputTokens + outputTokens,
      estimated_cost_usd: estimatedCostUsd,
      latency_ms: Date.now() - startedAt,
      service_tier: response.service_tier ?? "not_reported",
      pricing_version: process.env.OPENAI_PRICING_VERSION,
    });

    return response.output_text;
  } catch (error) {
    await telemetry.log("llm_request_failed", {
      provider: "openai",
      model,
      feature: "draft_reply",
      team_id: teamId,
      user_id: userId,
      status: "error",
      attempt,
      error_type: error?.constructor?.name ?? "unknown_error",
      latency_ms: Date.now() - startedAt,
    });

    throw error;
  }
}

기본적으로 원시 프롬프트, 완료, 도구 인수, 자격 증명 또는 개인 고객 콘텐츠를 기록하지 마십시오. feature, workflow, input_category, output_categoryerror_type와 같은 안전한 카테고리를 선호하세요.

OpenAI의 현재 프롬프트 캐싱 가이드 문서 cached_tokens는 아래에 있습니다. 응답 API 결과 및 문서에 대한 usage.input_tokens_details 캐시 쓰기를 보고하는 모델 제품군의 경우 cache_write_tokens입니다. 그것은 또한 보여줍니다 출력 토큰 세부 정보 아래 reasoning_tokens. 공식 [프롬프트 캐싱]을 참조하세요. 요구 사항](https://developers.openai.com/api/docs/guides/prompt-caching#requirements).

추론 토큰은 응답의 출력 토큰 계정 내의 세부 정보입니다. 하다 토큰 총계를 추정할 때 output_tokens에 두 번째로 추가하지 마세요. 비용, 지연 시간 또는 변경 사항을 설명할 수 있으므로 별도의 필드를 유지하세요. 행동.

4. 재시도를 비용에 포함하기

애플리케이션 수준 재시도는 사용자가 볼 때에도 청구 가능한 새로운 요청입니다. 하나의 제품 작업. 시도와 증가에 걸쳐 안정적인 operation_id를 운반하십시오. attempt. 터미널 적용 결과를 별도로 기록합니다.

await telemetry.log("ai_operation_completed", {
  operation_id: operationId,
  response_id: response.id,
  team_id: teamId,
  feature: "draft_reply",
  attempts: attempt,
  outcome: "accepted",
  accepted: true,
});

이는 논리 작업당 비용, 허용된 출력당 비용 및 재시도를 지원합니다. 증폭. 단지 공유한다는 이유만으로 요청 비용 이벤트를 중복 제거하지 마세요. operation_id; 모든 공급자 요청은 비용에 기여할 수 있습니다.

5. 지출을 결과에 연결

요청당 비용은 출력이 유용한지 여부를 알려주지 않습니다. 사용자가 결과를 수락, 복사, 저장, 재생성 또는 삭제할 때 별도의 결과 이벤트를 기록합니다.

await telemetry.log("ai_output_reviewed", {
  response_id: responseId,
  team_id: teamId,
  user_id: userId,
  feature: "draft_reply",
  outcome: "accepted",
  accepted: true,
});

안정적인 response_id를 사용하면 모델 출력 자체를 저장하지 않고도 사용량과 결과를 결합할 수 있습니다.

6. 기능 및 모델별 일일 비용 쿼리

Telemetry는 자동으로 timestamp_utc를 추가하므로 애플리케이션은 자체 타임스탬프 필드를 보낼 필요가 없습니다.

SELECT
  date_trunc('day', timestamp_utc) AS day,
  feature,
  model,
  COUNT(*) AS requests,
  SUM(input_tokens) AS input_tokens,
  SUM(cached_input_tokens) AS cached_input_tokens,
  SUM(cache_write_tokens) AS cache_write_tokens,
  SUM(output_tokens) AS output_tokens,
  SUM(reasoning_tokens) AS reasoning_tokens,
  ROUND(SUM(estimated_cost_usd), 4) AS estimated_cost_usd,
  ROUND(AVG(latency_ms), 0) AS avg_latency_ms
FROM llm_request_completed
WHERE timestamp_utc >= now() - INTERVAL '30 days'
GROUP BY day, feature, model
ORDER BY day ASC, estimated_cost_usd DESC;

estimated_cost_usdfeature 또는 model로 분할된 누적 선 또는 영역 차트로 시각화합니다. 비용 증가를 상황에 맞게 해석할 수 있도록 요청량 및 허용된 출력 속도와 결합합니다.

7. 송장에 대한 견적 조정

지출이 어디서 발생했는지 텔레메트리 답변을 요청하세요. 공급자 송장 답변 청구된 것. 공급자 프로젝트와 같은 공유 곡물에서 두 가지를 모두 조정합니다. 모델, 서비스 계층, 통화 및 UTC 청구일.

SELECT
  date_trunc('day', timestamp_utc) AS day,
  model,
  service_tier,
  pricing_version,
  COUNT(*) AS requests,
  ROUND(SUM(estimated_cost_usd), 4) AS estimated_cost_usd
FROM llm_request_completed
WHERE timestamp_utc >= now() - INTERVAL '30 days'
GROUP BY
  date_trunc('day', timestamp_utc),
  model,
  service_tier,
  pricing_version
ORDER BY day ASC, model ASC, service_tier ASC;

송장 총액을 별도의 재무 관리 데이터세트에 저장한 후 비교하세요. 비슷한 기간. 가격 변동, 불완전성으로 인해 차이가 발생할 수 있음 이벤트, 크레딧, 일괄 처리 또는 우선 순위 처리, 비토큰 도구, 이미지, 오디오, 통화 변환 또는 애플리케이션 텔레메트리에서 공급자 프로젝트가 누락되었습니다. 단지 합의를 강요하기 위해 사건 기록을 "수정"하지 마십시오. 화해를 기록하다 설명.

알림할 내용

유용한 알림은 다음과 같습니다.

  • 예상 예산을 초과하는 일일 예상 지출
  • 테스트된 임계값을 초과하는 허용된 출력당 비용
  • 하나의 모델이나 기능에 대한 재시도 또는 실패가 증가합니다.
  • 프롬프트 또는 도구 스키마 변경 후 캐시된 입력 공유가 감소합니다.
  • 상응하는 향후 캐시 읽기 이점 없이 캐시 쓰기가 증가합니다.
  • 하나의 프롬프트 버전 또는 워크플로에 대한 추론 토큰 공유 변경
  • 허용된 출력 속도가 일정하게 유지되거나 떨어지는 동안 p95 대기 시간이 증가합니다.
  • 인식된 pricing_version 없이 도착하는 사용 이벤트입니다.

다음 단계

전체 기능별 LLM 비용 SQL 레시피를 사용하여 예시 결과와 대시보드 디자인을 검사하세요. 그런 다음 달러당 허용되는 AI 출력 레시피를 추가하여 제품 가치와 예상 지출을 비교합니다.

전체 구현 경로를 보려면 OpenAI 에이전트 통합, LLM 비용 추적기 템플릿AI 에이전트 텔레메트리 제품 가이드를 계속 진행하세요. 이 페이지는 요청 수준 비용 데이터를 에이전트 실행, 도구 호출, 대시보드 및 유지된 제품 결과와 연결합니다.

기본 API 형태에 대해서는 OpenAI 개발자 빠른 시작응답 API 참조를 참조하세요.

내 이벤트로 사용해 보기

첫 번째 실제 OpenAI 요청을 추적하세요.

코딩 에이전트에 집중된 프롬프트를 제공하고 하나의 실제 모델 요청을 실행한 다음 Telemetry에서 토큰, 비용, 대기 시간 및 결과를 확인합니다.

신용 카드가 필요하지 않습니다. 명확하게 표시된 샘플 이벤트와 실행 준비가 완료된 쿼리가 자동으로 생성되므로 워크플로를 평가하는 데 프로덕션 데이터가 필요하지 않습니다.

  1. 1. 명확하게 표시된 하나의 샘플 이벤트 만들기
  2. 2. 실행 준비가 완료된 쿼리 열기
  3. 3. 결과를 대시보드에 저장

관련 기능

Connect 에이전트 실행, 도구 사용, 토큰 비용, 품질 및 제품 결과.

페이지 작성자 및 참고 자료

이 설명은 Telemetry 편집팀의 소유입니다. 제품 팀은 동작, 예시, 경계를 검토합니다.

문서 검토 방법