본문으로 건너뛰기

마이그레이션 가이드Helicone에서

간단한 척하지 않고 Helicone에서 옮기기

Helicone은 Mintlify에 인수되었고 서비스는 유지 관리 모드입니다. 어디로 갈지 정하고 있다면, 이 페이지는 개념별 지도입니다: 코드가 어떻게 바뀌어야 하는지, Helicone에는 없던 INFRO의 기능, INFRO에 아예 없는 4가지, 그리고 이런 페이지 대부분이 빠뜨리는 섹션인 다른 제품이 더 나은 답인 경우까지.

INFRO 계정은 셀프 서비스입니다. 카탈로그, 문서, API 계약은 공개되어 있고, 게이트웨이는 배포되어 있으며, v1 이후의 기능은 Later로 표시됩니다. 요금제와 체험

현재 상황

발표된 내용

2026년 3월 Mintlify는 Helicone 인수를 발표하면서 Helicone이 유지보수 모드로 계속 운영되며 “모든 고객과 긴밀히 협력해 다른 플랫폼으로의 원활한 이전을 지원하겠다”고 밝혔습니다. 2026년 10월 Helicone 홈페이지는 “Helicone은 더 이상 Mintlify에 속하지 않습니다. 자세한 내용은 곧 공개됩니다.”로 바뀌었습니다. 클라우드 가입 페이지에는 여전히 “Sign ups are disabled”라고 표시됩니다.

발표되지 않은 내용

종료 날짜도, 데이터 보관 약속도 없으며, 10월의 변경에 대한 설명도 아직 없습니다. 지금 Helicone을 누가 운영하는지, 그것이 로드맵에 어떤 의미인지 알 수 없습니다. 있는 그대로 읽으시기 바랍니다. 이번 주에 해야 할 일은 없습니다. 서두르기보다 신중하게 결정해야 한다는 신호이며, 결정 전에 Helicone의 공식 페이지를 다시 확인하시기 바랍니다.

이 페이지가 존재하는 이유

정직한 답은 Helicone을 무엇에 쓰고 있었는지에 달려 있고, 이 검색에서 찾게 될 대부분의 페이지는 그것을 알려 주지 않기 때문입니다. 트레이싱, 평가, 프롬프트 관리 때문에 거기 있었다면 다음 섹션이 저희보다 나은 이전 대상을 알려 줍니다.

이 섹션을 차이점보다 앞에 둔 것은 의도적입니다. 이 글을 읽는 사람 중 상당수는 Helicone을 관측성 및 평가 플랫폼으로 사용했으며, 그 용도에는 그것을 중심으로 만든 제품이 있습니다.

Langfuse는 스스로를 에이전트 평가와 관측을 위한 오픈소스 AI 엔지니어링 플랫폼이라고 설명합니다. LLM 호출, 도구 호출, 검색 단계에 걸친 계층적 트레이싱, LLM-as-a-judge와 휴리스틱 평가자, 배포와 롤백이 있는 프롬프트 관리, 데이터셋과 실험, 사람의 주석, 플레이그라운드를 제공합니다. MIT 라이선스이고 Docker Compose, Kubernetes, Terraform으로 자체 호스팅할 수 있으며, 2026년 1월 ClickHouse에 인수되었습니다. ClickHouse 측 설명에 따르면 오픈소스와 자체 호스팅이 유지되고 클라우드 서비스도 이전처럼 운영됩니다.

INFRO를 살펴볼 이유는 비슷해 보이는 다른 문제입니다. 여러 팀에 걸친 여러 공급자 계정, 청구서가 올 때까지 아무도 귀속시킬 수 없는 지출, 코드베이스마다 다르게 쓰인 재시도와 폴백, 서비스가 호출할 모델에 대한 승인 단계가 없다는 것이 실제 상황이라면, 이는 관측 문제가 아니라 컨트롤 플레인 문제이며 이 제품이 바로 그 문제를 중심으로 만들어졌습니다. 많은 팀이 둘 다 필요하며, INFRO를 게이트웨이로 쓰고 트레이싱을 원하는 수집기로 내보내는 구성도 합리적인 형태입니다.

이런 경우 Langfuse를 선택하세요

  • 주로 관측을 위해 Helicone을 쓰던 경우입니다. Langfuse가 바로 그런 제품이며, 의도적으로 깊이 있게 만들어졌고, 존재하는 가장 동등한 이전 대상에 가깝습니다.
  • 프롬프트 관리나 평가자가 필요한 경우입니다. INFRO에는 둘 다 없고 일정도 없습니다. Langfuse에는 둘 다 있으며, 평가는 Langfuse가 앞세우는 두 가지 중 하나입니다.
  • 모델 호출만이 아니라 에이전트를 트레이스하는 경우입니다. Langfuse는 도구 호출과 검색 단계에 걸친 트레이스 트리를 모델링합니다. INFRO는 한 번에 요청 하나를 기록하며, 스팬 트리는 자체 수집기에서 조립해야 합니다.
  • 영업 상담 없이 자체 호스팅하고 싶거나 그 선택지를 열어 두고 싶은 경우입니다. Langfuse는 MIT 라이선스이며 누구나 운영할 수 있습니다. INFRO의 요금제는 호스팅형이며, 엔터프라이즈 계약이 있을 때만 자체 인프라에서 실행됩니다.

Langfuse는 INFRO의 파트너, 재판매자, 제휴사가 아닙니다. 링크를 거는 이유는 이 페이지가 그러지 않으면 정직하지 않게 답하게 될 질문에 대한 정직한 답이기 때문입니다.

Helicone의 객체와 INFRO의 객체를 공개 문서(2026년 10월 24일에 다시 확인)를 바탕으로 비교하고, 게이트웨이가 실제로 구현하는 내용과 대조했습니다. 4개 행은 INFRO에 해당 기능이 없다고 표시되어 있으니 먼저 읽어 볼 만합니다.

Helicone그곳에서 하는 일INFRO에서
게이트웨이 통합같은 구조OpenAI 호환 클라이언트를 Helicone의 AI 게이트웨이 베이스 URL로 향하게 하고 Helicone 키를 전달합니다.같은 형태입니다. 베이스 URL https://api.infro.io/v1, 키는 Authorization: Bearer에. 서비스마다 두 줄입니다.
요청 경로 밖의 비동기 로깅해당 없음OpenLLMetry 기반 로거가 공급자 SDK를 감싸므로 Helicone은 애플리케이션의 핵심 경로에 있지 않습니다.대응하는 것이 없습니다. INFRO는 게이트웨이이므로 항상 경로에 있습니다. 그래서 라우팅하고, 페일오버하고, 예산에 따라 요청을 거부할 수 있으며, 이는 사용자가 치르는 실질적인 절충입니다.
요청을 누구의 공급자 계정이 처리하는가다름게이트웨이가 모델 접근을 제공할 수 있고, Helicone은 자체 공급자 키를 가져오는 방식도 지원합니다.사용자 자신의 것뿐입니다. 이미 보유한 공급자 계정을 연결하고, 공급자가 사용자의 요율로 직접 청구하며, INFRO는 모델 지출의 0%를 받습니다.
사용자 지정 속성다름Helicone-Property-<Name> 요청 헤더로 보내는 임의의 태그로, 필터링과 비용 분석에 사용됩니다.요청 본문의 metadata 객체이며, 요청 로그에서 tag.<key>로 필터링할 수 있습니다. 같은 개념이 다른 위치에 있는 것입니다. 헤더가 본문 필드가 되며, 이는 이전 작업에서 가장 큰 단일 수정입니다.
최종 사용자 추적다름Helicone-User-Id는 최종 사용자를 식별하며, 이를 기반으로 사용자별 참여, 유지, 만족도 분석을 제공합니다.metadata.user_id는 모든 요청에 기록되고 요청 로그와 사용량 그룹화를 필터링하므로 최종 고객별 비용에 답할 수 있습니다. 사용자별 행동 분석 화면은 없으며 세션 길이, 재방문율, 만족도 점수는 없습니다.
세션과 트레이스 트리다름Helicone-Session-Id, -Path, -Name은 벡터 쿼리나 도구 호출 같은 비 LLM 단계를 포함해 관련 호출을 하나의 보기로 묶으며, 경로에서 상위/하위 구조를 만듭니다.metadata.session_id는 로그에서 요청을 묶고, 스팬은 요청 경로에서 자체 OpenTelemetry 수집기로 보낼 수 있습니다. INFRO에 없는 것은 트레이스 트리가 들어 있는 세션 보기입니다. 모델 호출은 기록하지만 그 사이의 단계는 기록하지 않습니다.
응답 캐싱다름Helicone-Cache-Enabled는 버킷 크기와 캐시 시드를 지정해 완성된 응답을 엣지에서 캐싱합니다.채팅 완성을 위한 정확 일치 응답 캐시로, 기본은 꺼져 있고 조직 또는 프로젝트 단위로 켭니다. TTL 안에 들어온 동일한 요청은 캐시에서 응답하며 공급자에 도달하지 않으므로 공급자가 청구하지 않습니다. 제어는 cache 본문 필드 또는 X-INFRO-Cache 헤더로 하고, 캐시 시드는 X-INFRO-Cache-Namespace가 됩니다. 저장된 여러 답변을 담는 버킷은 없으며 시맨틱(유사 프롬프트) 일치도 없습니다. 문서 페이지는 /docs/features/caching입니다.
사용자 지정 속도 제한다름Helicone-RateLimit-Policy는 기간당 할당량을 요청 수 또는 비용으로 설정하며, 전역, 사용자별, 사용자 지정 속성별로 구분합니다.X-RateLimit-Limit로 보고되는 키별 요청 속도 등급, 그리고 조직, 프로젝트, 멤버, 키 단위로 상한에서 402 budget_exceeded로 트래픽을 거부하는 예산. 비용 상한은 잘 대응하지만, 최종 사용자나 임의의 속성으로 구분한 제한은 대응하지 않습니다.
프롬프트 관리해당 없음코드베이스 밖에서 관리되며, 버전을 프로덕션 트래픽과 비교하는 프롬프트.없으며, 저희가 밝힐 계획도 없습니다. 프롬프트는 저장소에 두거나 이를 제대로 하는 도구에 두세요. Langfuse가 그렇습니다.
평가자와 실험해당 없음출력 품질을 채점하는 LLM-as-a-judge와 사용자 지정 평가자, 나란히 비교하는 프롬프트 비교. Helicone의 문서는 Experiments 기능에 지원 중단 공지를 싣고 있습니다.없습니다. INFRO는 모델 출력을 채점하지 않으며, 답이 좋았는지에 대한 의견도 없습니다.
웹훅다름요청이 끝나면 서명된 웹훅이 발송되며, 요청 및 응답 본문, 비용, 토큰, 지연 시간을 담습니다.서명된 웹훅이 있지만 비동기 미디어 작업에만 해당합니다. job.succeeded, job.failed, job.canceled가 있습니다. 요청별 완료 훅은 없으며, 끝난 트래픽은 요청 로그와 GET /v1/requests로 읽습니다.
요청당 비용다름요청별로 계산한 비용을 속성, 사용자, 모델별로 집계합니다.공급자가 청구할 금액의 추정치로, 응답에 usage.cost로 들어가며, usage.price_source가 협상 요율, 해당 모델에 대한 요율, 벤더의 정가 중 어디에서 왔는지 알려 줍니다. 알려진 요율이 없으면 추측하지 않고 값이 없습니다.
폴백과 다중 공급자 라우팅같은 구조게이트웨이를 통한 공급자 폴백.자체 연결에 대한 우선순위 또는 가중치 대상이 있는 이름 있는 라우트. 응답이 시작되기 전에 타임아웃되거나 5xx가 나는 대상은 다른 곳에서 재시도됩니다. 바이트가 흐르기 시작하면 오류는 재라우팅되지 않고 그대로 전달됩니다.
모델 정책다름저희가 읽은 페이지에는 Helicone 개념으로 문서화되어 있지 않습니다. 가장 가까운 통제는 속도 제한입니다.조직, 프로젝트, 키 단위의 허용 목록입니다. 가장 좁은 범위가 우선하며, 그 밖의 것은 비용이 발생하기 전에 거부됩니다.
과거 데이터해당 없음이미 Helicone에 있는 요청, 속성, 세션, 점수.가져오기 도구는 없고 계획도 없습니다. 거기에 기록한 것은 여기에 나타나지 않습니다. 전송을 멈추기 전에 Helicone에서 내보내 직접 관리하는 곳에 보관하세요.
오픈소스와 자체 호스팅다름Helicone의 플랫폼은 오픈소스이며 직접 운영할 수 있습니다.게이트웨이는 오픈소스가 아닙니다. 요금제는 호스팅형이며, 자체 호스팅이나 하이브리드 배포는 엔터프라이즈 계약으로만 제공됩니다. 계약 없이 직접 운영해야 한다면 여기서 멈추세요.Enterprise — 셀프 서비스가 아닌 엔터프라이즈 계약으로 제공됩니다.

체험이나 벤치마크가 아니라 Helicone의 공개 문서를 저희가 읽은 결과입니다. 전환 과정에서 문서가 옮겨져 일부 기능 페이지는 예전 주소로 열리지 않습니다. 확인할 수 없었던 부분은 추측하지 않고 행에 그렇다고 적었습니다. 모든 출처와 저희가 열어 본 날짜는 이 페이지 하단에 있습니다.

연결에는 두 줄이면 됩니다. 작업은 주석에 있습니다. Helicone은 주석을 요청 헤더로 전달하고 INFRO는 요청 본문으로 전달하므로, 헤더를 설정한 곳마다 수정이 필요합니다.

이전 · Helicone 게이트웨이

import OpenAI from "openai";

// Before: the OpenAI SDK through Helicone's gateway, attribution in headers.
const sessionId = "sess_42";
const client = new OpenAI({
  baseURL: process.env.HELICONE_BASE_URL ?? "https://ai-gateway.helicone.ai",
  apiKey: process.env.HELICONE_API_KEY,
  defaultHeaders: {
    "Helicone-User-Id": "user_8f21",
    "Helicone-Session-Id": sessionId,
    "Helicone-Property-Feature": "summarizer",
  },
});

const completion = await client.chat.completions.create({
  model: "gpt-5.4-mini",
  messages: [{ role: "user", content: "Summarize this ticket in one line." }],
});
console.log(completion.choices[0]?.message.content);

이후 · INFRO

import OpenAI from "openai";

// After: the same SDK through INFRO, on your own OpenAI account.
const sessionId = "sess_42";
const client = new OpenAI({
  baseURL: process.env.INFRO_BASE_URL ?? "https://api.infro.io/v1",
  apiKey: process.env.INFRO_API_KEY,
});

const completion = await client.chat.completions.create({
  model: "openai/gpt-5.4-mini",
  messages: [{ role: "user", content: "Summarize this ticket in one line." }],
  // Attribution moves from headers into the body. Recorded on the request,
  // never forwarded to the provider.
  metadata: {
    user_id: "user_8f21",
    session_id: sessionId,
    feature: "summarizer",
  },
});
console.log(completion.choices[0]?.message.content);

베이스 URL과 키

https://api.infro.io/v1이며, 키는 표준 Authorization: Bearer 헤더에 넣습니다. 즉 클라이언트에 이미 있는 baseURL과 apiKey 인수입니다. 코드가 아직 Helicone의 예전 공급자별 프록시 호스트를 가리키고 별도의 Helicone-Auth 헤더를 보낸다면, 그 헤더는 완전히 제거합니다. INFRO는 사용하지 않습니다.

모델 ID

모델은 vendor/model 형식으로 지정합니다. 예: anthropic/claude-opus-5. GET /v1/models는 키로 실제 호출할 수 있는 모델, 즉 연결된 자체 공급자 계정이 제공하는 모델을 나열합니다. 어떤 연결도 다루지 않는 모델은 연결할 공급자를 명시한 503 no_provider_connected를 반환합니다.

주석

Helicone-User-Id는 metadata.user_id가 되고, Helicone-Session-Id는 metadata.session_id가 되며, 모든 Helicone-Property-X는 metadata.tags 아래의 키가 되어 요청 로그에서 tag.x로 필터링됩니다. TypeScript에서는 OpenAI의 metadata 타입이 평면 문자열 맵이므로 중첩된 tags 객체에 캐스트가 필요하며, Python의 extra_body는 그대로 받습니다.

결정하기 전에 시도해 볼 만한 것이 하나 있습니다. Helicone의 비동기 통합은 네트워크 경로에 있지 않고 공급자 클라이언트를 감싸므로, 원칙적으로는 베이스 URL이 여기를 가리켜도 로깅이 계속됩니다. 이 조합은 테스트하지 않았으며 보장할 수 없습니다. 먼저 서비스 하나에서 실행해 보고, 이쪽의 GET /v1/requests를 읽어 양쪽 기록이 일치하는지 확인하세요.

네 가지이며, 모두 공급자 계정을 지켜보는 로거가 아니라 자체 공급자 계정 위에서 작동하는 게이트웨이라는 점에서 나옵니다.

요청을 처리한 계정은 사용자 것이며, 이름이 명시됩니다
모든 응답에는 provider(요청을 실행한 계정의 공급자 종류)와 connection(사용한 연결의 ID)이 들어 있으며, 라우트가 처리한 경우 route와 route_name도 들어 있습니다. 게이트웨이 뒤에 풀은 없고 트래픽에 붙는 마진도 없습니다. 공급자가 사용자의 요율로 청구서를 보내고, INFRO는 그 계층에 대한 구독료를 청구합니다.
비용은 출처를 밝히는 추정치입니다
usage.cost는 해당 요청에 대한 공급자 청구서의 추정치이고, usage.price_source는 그 값을 어떻게 구했는지 알려 줍니다. custom_provider는 요청을 처리한 공급자에 대한 협상 요율, custom은 해당 모델에 대한 요율, list는 벤더의 정가입니다. 알려진 요율이 없으면 요청은 0이 아니라 가격 미정으로 기록됩니다. 비용 열의 0은 주장이고, 값이 없는 것은 사실이기 때문입니다.
예산은 요청을 거부할 수 있습니다
조직, 프로젝트, 멤버, 키 단위의 상한과 직접 설정하는 알림 임계값. 상한에 도달하면 게이트웨이는 초과 지출을 나중에 이메일로 알리는 대신 402 budget_exceeded를 반환합니다. 이것이 예산과 보고서의 차이입니다.
추정치는 공급자 자체의 청구와 대조됩니다
일일 작업이 별도의 관리자 자격 증명으로 OpenAI와 Anthropic의 비용 API를 읽고, 보고된 수치를 INFRO가 추정한 값 옆에 저장하므로, 믿고 받아들여야 하는 숫자가 아니라 편차가 보입니다. 어댑터가 있는 공급자는 이 둘뿐이며, 어댑터가 없는 공급자는 편차 0이 아니라 편차 없음으로 표시됩니다. Bedrock, Vertex, Azure의 비용은 해당 클라우드의 청구 시스템에 남습니다.

이어지지 않는 것

가져오기 도구는 없습니다. Helicone에 기록한 내용은 INFRO에 나타나지 않으며, 여기서 그것을 가져오지도 않습니다. 서비스가 아직 운영 중일 때 필요한 것을 내보내세요.

  • 요청 기록. 가져오기 도구는 없고 계획도 없습니다. 먼저 Helicone에서 필요한 것을 내보내세요. INFRO의 어떤 것도 거슬러 올라가 가져오지 않습니다.
  • 이미 기록된 사용자 지정 속성, 세션, 사용자 ID. 주석은 여기에 처음 보내는 요청부터 시작합니다.
  • 캐시된 응답. 다른 제품의 캐시 항목은 이전되지 않습니다. INFRO의 캐시는 비어 있는 상태로 시작해 자체 트래픽으로 채워지며, 정확히 같은 요청만 일치시키고 비슷한 요청은 일치시키지 않습니다.
  • 프롬프트와 평가자 점수. 옮길 곳이 없습니다.
  • 직접 운영하던 Helicone 배포. INFRO의 요금제는 호스팅형이며, INFRO를 자체 인프라에서 운영하는 것은 이전 단계가 아니라 엔터프라이즈 계약입니다.

원하는 것이 컨트롤 플레인이라면

먼저 API 계약을 읽어 보세요. 아직 존재하지 않는 부분까지 포함해 전체가 공개되어 있으므로, 무엇이든 작성하기 전에 결정할 수 있습니다. 그런 다음 운영 중인 것을 알려 주시면, 옮길 가치가 있는지 솔직하게 말씀드리겠습니다.

출처

이 페이지에서 Helicone이나 Langfuse에 관한 모든 서술은 다음 자료 중 하나에서 나왔으며, 읽은 날짜를 함께 적었습니다. 체험, 벤치마크, 대화에서 추론한 것은 없습니다.