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を使うことでこの処理を全リクエストにて動かせると思います。

    あまりスマートな感じはしませんが、「動かない・・・」と困っている方は、とりあえずこれを試してみたください。

    参考にした資料など

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark