LangChain.jsとLangSmithをCloudflare Workersで動かす場合の環境変数について
LangSmithを使用して、LLMアプリのトレースと分析方法を調査中。Cloudflareにデプロイする際の環境変数の扱いについて説明。LangSmithでは環境変数のexportが必要であり、Cloudflareでは実行時の引数で設定。LangSmithの方法だとトレースが開始できないため、実行時に直接値を設定する方法を紹介。Honoを使用する際はmiddlewareを利用して全リクエストで処理可能。詳細は参考資料をご覧ください。
目次
https://langchain.com/langsmith を使って、LLMアプリのトレースと分析を行う方法を調べています。今の所アプリケーションをCloudflareにデプロイすることが多いので、その場合の環境変数の扱い方についてまとめてみました。
環境変数のexportがLangSmithには必要
LangSmithでのトレースを行うには、下の画像のように環境変数のexportが必要です。通常のNode.js実行環境では、CI / CDパイプラインでの登録や、AWSのSystems Managerなどを活用することで、簡単に情報をアプリケーションに送信することができます。
しかしCloudflareでは、環境変数は実行時の引数で受け取ります。
import { Hono } from 'hono';
import { env } from 'hono/adapter';
const app = new Hono();
app.get('/ask', async c => {
const { LANGCHAIN_TRACING_V2, LANGCHAIN_API_KEY } = env(c);
そのため、LangSmithが紹介している方法では、トレースを開始することができません。
実行時に値を直接設定すると、一応動く
いろいろ試した結果、かなり力技ですが次のような実装で動きました。
import { Hono } from 'hono';
import { env } from 'hono/adapter';
const app = new Hono();
app.get('/ask', async c => {
const { LANGCHAIN_TRACING_V2, LANGCHAIN_API_KEY } = env(c);
process.env.LANGCHAIN_API_KEY = LANGCHAIN_API_KEY
process.env.LANGCHAIN_TRACING_V2 = LANGCHAIN_TRACING_V2
LangSmithのコードが、process.env
から値を読み取っているため、実行時に値を直接設定させています。Honoを使っている場合は、middlewareを使うことでこの処理を全リクエストにて動かせると思います。
あまりスマートな感じはしませんが、「動かない・・・」と困っている方は、とりあえずこれを試してみたください。