3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Langfuse を軽く試してみる: OpenAI SDK(JS/TS)の組み合わせ

3
Last updated at Posted at 2026-04-16

はじめに

ふとしたきっかけ(※)があり、アカウント作成だけやってみていた、Langfuse に関する話です。
4/24 に Langfuse というものに関するイベントが身近な場所で開催される、という情報を知って、Langfuse はよく分かってないけどイベントには申し込んでみた

Langfuse の公式ページなど

Langfuse の公式ページは、以下になるようです。

●Langfuse
 https://langfuse.com/

2026-04-16_21-44-48.jpg

当初は本当にアカウントを作成しただけ、という状態で、以下の画面が出たところまではやったという状況でした。

image.png

そして Langfuse について、今より少し理解を深めるために、とりあえず少し手を動かしてみました。

今回の記事の内容

アカウントを作っただけの状態から、もう少しお試しをやってみたというのが、今回の記事の内容です。

具体的には、公式ドキュメントにある以下の「Get Started with Tracing」をやってみるというものです。

●Get Started - Langfuse
 https://langfuse.com/docs/observability/get-started

2026-04-17_00-29-07.jpg

Tracing を試す際のサンプルに関して、いくつかの SDK を使ったものが示されているようでした。それについて、とりあえず自分がわりと触ったことがあり、なおかつシンプルにお試しを進められそうな「OpenAI SDK(JS/TS)」を選んでみました。

2026-04-16_21-49-00.jpg

実際にやってみる

進める手順に関して、上で少し掲載していた公式ドキュメントの冒頭に「Agentic installation」という部分もあります。しかし、今回は手を動かしつつ見ていきたいとうのがあったので、その下の「Manual installation」の内容で進めました。

2026-04-16_21-51-25.jpg

APIキーの取得

上で書いたとおり、アカウント作成だけはやっていたので、その続きで APIキーを作成します。アカウントを作っただけの状態だと、APIキー取得のために Organization・Project を作っておく必要がありそうでした。

APIキー取得のための下準備

Organization・Project を作っていきます。Langfuse のアカウント作成だけをやった画面だと、以下の「New Organization」ボタンが出てきているので、これを押します。

2026-04-16_21-53-53.jpg

そうすると以下の画面が表示されます。ここに出てきている Organization name は、入力サンプルとして出ている my-org と全く同じにしました。Type も Personal のままで進めます(「Create」ボタンを押して次に進みます)。

2026-04-16_21-54-04.jpg

次は Organization へのメンバー追加です。自分だけが使うので、次へ進みます(自分のアカウントは、Owner として、既にメンバーリストに表示されています)。

2026-04-16_21-54-33.jpg

次はプロジェクト作成です。Project name は、入力サンプルと全く同じにしました。

2026-04-16_21-55-05.jpg

これで Organization・Project の作成は完了です。

APIキー取得

Organization・Project の作成が完了した後の画面は以下でした。Host Name は後で表示されるところがあったので、ここではあまり気にせず進んでいきます。
(※ Host Name に関わるところで、自分はアカウント作成時に「US」を選んでいたので、us が含まれた URL になっているようです)

左メニューにある API Keys を選びます。

2026-04-16_21-55-29.jpg

まだ APIキーがないので、キーを作成していきます。以下の赤矢印で示したボタンを押します。

2026-04-16_22-02-07.jpg

その後の画面で APIキーの名前を適当につけて、さらに次に進みました。そうすると、「API Keys」という内容として、「Secret Key」と「Public Key」が表示されます。

さらにその下には「.env」という内容で、「上記 2つのキー + 先ほども出ていた Host name」がセットになったものが表示されます。

この後で、「.env」のサンプルとして以下の形式で表示されたものを用いたり、それぞれ環境変数としてセットしたりなどという対応が必要です(それに加えて、今回野のお試しでは OpenAI の APIキーもセットする必要があります)。

LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-..."
LANGFUSE_BASE_URL="https://us.cloud.langfuse.com"

お試し用のコードの準備と処理の実行

それでは、お試し用のコードを作っていきます。

パッケージのインストール

そのために Node.js のパッケージをインストールします。公式ドキュメントを見つつ必要そうなパッケージを選びました(OpenAI の SDK も使うので、それも含めています)。

npm i openai @langfuse/openai @langfuse/otel @opentelemetry/sdk-node

インストール後、自分の環境では以下のバージョンのものがインストールされました。

2026-04-16_22-56-29.jpg

お試し用のコードを書く

お試し用のコードを書いていきます。具体的には以下の内容です。

import OpenAI from "openai";
import { observeOpenAI } from "@langfuse/openai";
import { NodeSDK } from "@opentelemetry/sdk-node";
import { LangfuseSpanProcessor } from "@langfuse/otel";

const langfuseSpanProcessor = new LangfuseSpanProcessor();

const sdk = new NodeSDK({
  spanProcessors: [langfuseSpanProcessor],
});

await sdk.start();

const openai = observeOpenAI(new OpenAI());
// const inputText = "あなたは誰?";
const inputText = "Langfuseについて短く説明して";

try {
  const response = await openai.responses.create({
    model: "gpt-5.4-mini",
    input: inputText,
  });

  console.log(response.output_text);
  console.log("\nResponse:");
  console.log("Usage:", response.usage);
} finally {
  await langfuseSpanProcessor.forceFlush();
  await sdk.shutdown();
}

上記は、公式ドキュメントに出てきている以下をもとにしたものです。

以下のサンプルは Chat Completions API を使ったものになっていたので、それを Responses API を使ったものにしています。

2026-04-16_22-14-25.jpg

さらに、上記に追加する必要がある処理がいくつかあったようなので、公式情報を見つつ必要そうな内容をコードに追加しています。

処理の実行と得られた結果

あとは処理を実行するだけです。今回の内容を実行するにあたり、以下の環境変数が使える状態にしてください。

OPENAI_API_KEY=【OpenAI の APIキー】
LANGFUSE_PUBLIC_KEY=【Langfuse の Secret Key】
LANGFUSE_SECRET_KEY=【Langfuse の Public Key】
LANGFUSE_BASE_URL=【Langfuse の Host Name】

以下は、inputText を「あなたは誰?」という内容にした時のものです。

2026-04-16_22-53-40.jpg

上記を実行した後、Langfuse側の「Tracing」というページを見てみました。そうすると、以下のように上記の処理に関する内容が追加されていました。

2026-04-16_22-49-08.jpg

さらに、inputText を「Langfuseについて短く説明して」という内容にして、処理を実行してみます。

2026-04-16_23-00-37.jpg

上記を実行した後、Langfuse側の「Tracing」のページを見ると、以下のように上記の処理に関する内容が追加されていました。

2026-04-16_23-03-06.jpg

Langfuse の画面を少し見てみる

最後に、Langfuse の画面を少し見てみます。

先ほどの 2回目に行ったほうの Trace を見てみます。

Preview の Input/Output

Preview の部分を見ると「Input/Output」として、今回の入出力テキストが出ています。

2026-04-16_23-51-02.jpg

Preview の Metadata

さらに、Preview の部分を見ていくと「Metadata」という項目があります。

たくさんの項目がありますが、例えば以下のように、「処理のステータス(今回のものは "完了")」や「利用した SDK・SDK の言語」などの情報が出ています。

2026-04-16_23-51-24.jpg

さらに見ていくと、「Node.js のバージョン」や「Node.js のパス(※ 自分の環境では Node.js のバージョン管理に mise を利用していて、mise が作った bin のパスが出ています)」、さらには「マシンの環境(Mac、ARM64 という情報)」が出てきていました。

2026-04-16_23-51-38.jpg

2026-04-16_23-51-47.jpg

おわりに

今回、「Langfuse とは何か?」というのを知らない状態から、APIキーの取得や簡単な Trace のお試しをやってみました。まずは、自分としては概要の一部をつかめた感じがします。

一方で、今回試した Trace の機能をあまり試せていない感じもしています。

今回試した API を使った処理は、シンプルな処理での 1往復のやりとりであったため、Langfuse で見られる内容も比較的シンプルでした。この部分は、ツール呼び出しや Reasoning が用いた内容のものを試したりといった、追加のお試しができればと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?