コンテンツへスキップ

移行ガイドHeliconeから

簡単なふりをせずにHeliconeから移行する

HeliconeはMintlifyに買収され、サービスはメンテナンスモードになっています。移行先を検討しているなら、このページは概念ごとの対応表です:コードをどう変える必要があるか、HeliconeになかったINFROの機能、INFROにまったくない4個のもの、そしてこの種のページの多くが省くセクション、つまり別の製品のほうが良い答えになる場合です。

INFROのアカウントはセルフサービスで作成できます。 カタログ、ドキュメント、API仕様は公開済みで、ゲートウェイもデプロイ済みです。v1以降の機能には「今後提供」と表示しています。 プランとトライアル

現状

発表されたこと

2026年3月、MintlifyはHeliconeの買収を発表し、Heliconeはメンテナンスモードで継続すると述べたうえで、「別のプラットフォームへのスムーズな移行を支援するため、すべての顧客と緊密に連携する」としました。2026年10月には、Heliconeのホームページが「HeliconeはもはやMintlifyの一部ではありません。詳細は近日中にお知らせします」という表記に変わりました。クラウドのサインアップページには、今も「サインアップは無効です」と表示されています。

発表されていないこと

停止日も、データ保持の約束もなく、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にはどちらもあり、評価はその最も力を入れている2つの領域の1つです。
  • モデル呼び出しだけでなく、エージェントをトレースする場合。Langfuseは、ツール呼び出しと検索ステップにまたがるトレースツリーをモデル化します。INFROは1リクエストずつを記録し、スパンのツリーは自分のコレクターで組み立てることになります。
  • 営業とのやり取りなしにセルフホストしたい、またはその選択肢を残しておきたい場合。LangfuseはMITライセンスで、誰でも運用できます。INFROのプランはホスト型で、お客様自身のインフラで動作するのは、エンタープライズ契約がある場合に限られます。

LangfuseはINFROのパートナー、再販業者、アフィリエイトではありません。リンクしているのは、このページがそうでなければ不誠実に答えることになる質問への、正直な答えだからです。

Heliconeのオブジェクトと当社のオブジェクトの対応表です。Heliconeの公開ドキュメントから読み取り(2026年10月24日に再確認)、ゲートウェイの実装と照合しています。4行は、当社に対応するものがないことを示します。最初に読む価値があるのはその行です。

Heliconeそこでの役割INFROでは
ゲートウェイの統合同じ形式OpenAI互換クライアントをHeliconeのAIゲートウェイのベースURLに向け、Heliconeのキーを渡します。同じ形です。ベースURLはhttps://api.infro.io/v1、キーはAuthorization: Bearerに指定します。サービスごとに1行ずつ、計2行です。
リクエストの経路から外れた非同期ロギングなしOpenLLMetryベースのロガーがプロバイダーSDKをラップするため、Heliconeはアプリケーションのクリティカルパスに入りません。同等のものはありません。INFROはゲートウェイなので、常に経路上にいます。だからこそルーティング、フェイルオーバー、予算に基づくリクエストの拒否ができる一方、これは実際に受け入れるトレードオフです。
リクエストを処理するのは誰のプロバイダーアカウントか異なるゲートウェイがモデルへのアクセスを提供でき、Heliconeは自分のプロバイダーキーの持ち込みにも対応しています。お客様自身のものだけです。すでに保有しているプロバイダーアカウントを接続し、プロバイダーはお客様自身の料金で直接請求し、INFROはモデル支出の0%しか取りません。
カスタムプロパティ異なるHelicone-Property-<Name>リクエストヘッダーとして送る任意のタグ。フィルタリングとコスト分析に使います。リクエストボディのmetadataオブジェクト。リクエストログではtag.<key>としてフィルターできます。考え方は同じで、場所が違います。ヘッダーがボディのフィールドになるため、移植作業の中で最も大きな単一の編集です。
エンドユーザーの追跡異なるHelicone-User-Idはエンドユーザーを識別し、それに基づくユーザーごとのエンゲージメント、リテンション、満足度の分析があります。metadata.user_idはすべてのリクエストに記録され、リクエストログと使用量のグループ化でフィルターできるため、エンドユーザーごとのコストを答えられます。ユーザーごとの行動分析の画面(セッション時間、再訪率、満足度スコア)はありません。
セッションとトレースツリー異なるHelicone-Session-Id、-Path、-Nameは、関連する呼び出しを1つのビューにまとめます。ベクトルクエリやツール呼び出しなどLLM以外のステップも含み、パスから親子構造が作られます。metadata.session_idはログ内のリクエストをグループ化し、スパンはリクエストの経路からお客様自身のOpenTelemetryコレクターへ送れます。INFROにないのは、トレースツリーを含むセッションビューです。記録するのはモデル呼び出しであり、その間のステップではありません。
レスポンスキャッシュ異なるHelicone-Cache-Enabledは、完全なレスポンスをエッジでキャッシュします。バケットサイズとキャッシュシード付き。チャット補完向けの完全一致レスポンスキャッシュ。既定ではオフで、組織またはプロジェクト単位で有効にします。有効期間内の同一リクエストはキャッシュから応答し、プロバイダーに届かないため、プロバイダーは課金しません。制御は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はモデルの出力を採点せず、回答が良かったかどうかについて意見を持ちません。
Webhook異なるリクエストの完了時に署名付きWebhookが発火し、リクエストとレスポンスのボディ、コスト、トークン、レイテンシーを運びます。署名付きWebhookですが、対象は非同期のメディアジョブのみで、job.succeeded、job.failed、job.canceledです。リクエストごとの完了フックはありません。完了したトラフィックは、リクエストログとGET /v1/requestsで読み取ります。
リクエストごとの費用異なるリクエストごとに計算されたコストを、プロパティ、ユーザー、モデル別に集計。プロバイダーが請求する金額の見積もりが、レスポンスのusage.costに入ります。usage.price_sourceは、それが交渉済みの料金、そのモデルに対するお客様の料金、ベンダーの定価のどれに由来するかを示し、料金が分からない場合は推測せず、値を出しません。
フォールバックと複数プロバイダーのルーティング同じ形式ゲートウェイを通じたプロバイダーのフォールバック。お客様自身の接続に対する、優先度付きまたは重み付きのターゲットを持つ名前付きルート。レスポンスが始まる前にタイムアウトまたは5xxになったターゲットは、別の場所で再試行されます。バイトが流れ始めた後は、エラーが再ルーティングされずにそのまま表面化します。
モデルポリシー異なる確認したページには、Heliconeの概念として記載されていません。最も近い制御はレート制限です。組織、プロジェクト、キーの許可リスト。最も狭いスコープが優先され、その外にあるものは、費用が発生する前に拒否されます。
過去のデータなしすでにHeliconeにあるリクエスト、プロパティ、セッション、スコア。インポーターはなく、予定もありません。そこに記録したものは、ここには現れません。送信を止める前に、Heliconeからエクスポートして、ご自身で管理できる場所に保管してください。
オープンソースとセルフホスト異なるHeliconeのプラットフォームはオープンソースで、自分で運用できます。ゲートウェイはオープンソースではありません。プランはホスト型で、セルフホストまたはハイブリッドのデプロイは、エンタープライズ契約がある場合に限られます。契約なしで自分で運用する必要があるなら、ここで終わりにしてください。Enterprise — セルフサービスではなく、Enterprise契約で提供します。

Heliconeの公開ドキュメントに対する当社の読み取りであり、トライアルやベンチマークではありません。移行期間中に同社のドキュメントが移動し、一部の機能ページは以前の場所で表示されなくなっています。確認できなかった点は、推測せずに行にそう書いています。すべての出典と確認した日付はページ末尾にあります。

接続のためには2行。作業はアノテーションにあります。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 はそのまま受け付けます。

決める前に試す価値があることが1つあります。Heliconeの非同期統合はネットワーク経路上ではなくプロバイダーのクライアントをラップするため、理論上はベースURLをこちらに向けてもログ記録を続けられます。この組み合わせは検証しておらず、保証はできません。まず1つのサービスで試し、こちら側で GET /v1/requests を読んで、両者の記録が一致するか確認してください。

4つのこと。どれも、プロバイダーアカウントを監視するロガーではなく、自社のプロバイダーアカウント上で動くゲートウェイであることから生まれるものです。

リクエストを処理するアカウントはお客様のもので、名前が明示される
すべてのレスポンスに、provider(実行したアカウントのプロバイダー種別)とconnection(使用した接続のID)が含まれ、ルートで解決された場合はrouteとroute_nameも含まれます。ゲートウェイの背後にプールはなく、トラフィックに上乗せもありません。プロバイダーはお客様自身の料金で請求し、INFROはこの層に対してサブスクリプションを請求します。
コストは、どこから来た数字かを示す見積もり
usage.costは、そのリクエストに対するプロバイダーの請求額の見積もりで、usage.price_sourceはその算出方法を示します。custom_providerは、処理したプロバイダーに対する交渉済みの料金、customはそのモデルに対するお客様の料金、listはベンダーの公開料金です。料金が不明な場合、リクエストはゼロではなく価格未設定として記録されます。コスト列のゼロは主張であり、空欄は事実だからです。
予算でリクエストを拒否できる
組織、プロジェクト、メンバー、キーの上限と、お客様が設定するアラートしきい値。上限に達すると、ゲートウェイは超過後にメールで知らせるのではなく402 budget_exceededを返します。これが、予算とレポートの違いです。
見積もりは、プロバイダー自身の請求と照合される
日次の処理で、OpenAIとAnthropicのコストAPIを別の管理者用認証情報で読み取り、報告された数字をINFROの見積もりと並べて保存します。そのため、表示されるのは信用して受け入れる数字ではなく、差異です。アダプターがあるのはこの2つのプロバイダーだけで、アダプターのないプロバイダーには、差異ゼロではなく、差異を表示しません。Bedrock、Vertex、Azureのコストは、周囲のクラウドの請求システムにあります。

引き継がれないもの

インポーターはありません。Heliconeで記録したものはINFROに表示されず、こちらから取りに行くこともありません。同社のサービスが動いているうちに、必要なものをエクスポートしてください。

  • リクエスト履歴。インポーターはなく、予定もありません。必要なものを先にHeliconeからエクスポートしてください。INFROのどの機能も、それを遡って取りに行くことはありません。
  • 記録済みのカスタムプロパティ、セッション、ユーザーID。アノテーションは、ここに最初に送るリクエストから始まります。
  • キャッシュされたレスポンス。他の製品のキャッシュにあるエントリーは移行されません。INFROのキャッシュは空の状態から始まり、お客様自身のトラフィックで埋まっていき、一致するのは完全に同一のリクエストだけで、類似のものにはマッチしません。
  • プロンプトと評価器のスコア。移す先がありません。
  • ご自身で運用していたHeliconeのデプロイメント。INFROのプランはホスト型です。INFROをお客様自身のインフラで運用するのはエンタープライズ契約であり、移行の手順ではありません。

コントロールプレーンが目的の場合

まずAPIの仕様を読んでください。まだ存在しない部分も含めてすべて公開しているので、何かを書く前に判断できます。そのうえで何を運用しているか教えてください。移行する価値があるかどうかを率直にお伝えします。

出典

このページにあるHeliconeやLangfuseについての記述は、すべてこれらの資料と読んだ日付に基づいています。トライアル、ベンチマーク、会話から推測したものはありません。