TypeScript、AgentCash、Bright Data、Tavily、OpenAI、Featherlessでエージェント型コマース・ルーターを構築する

Dev.to / 2026/4/13

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • この記事では、API仕様から機械中心(machine-first)のストアフロントページを生成し、コマースのワークフローをエンドツーエンドで実行するTypeScriptの「エージェント型コマース・ルーター」について説明します。
  • 支払い・実行のための実トランザクション実行レールに重点を置いており、従量課金(pay-per-request)の取り扱い、配送証跡(proof of delivery artifacts)やトレースを伴う自律的なアウトリーチ/メール送信などを含みます。
  • 単一のベンダーに依存するのではなく、複数のディスカバリ(発見)・エンリッチメント(拡充)・推論(inference)プロバイダー間でタスクを動的にルーティングし、品質・コスト・レイテンシを最適化します。
  • AgentCashは実行および支払いの基盤として用いられ(有料のfetch呼び出しやメール送信を含む)、TavilyとBright DataがWebリサーチ/エンリッチメントを、OpenAI/Featherlessが推論(inference)層を担当します。
  • ウォークスルーでは、Zodによる型付き環境バリデーションや、プロバイダーごとの実行計測(run artifacts)の実装といった、実務的な詳細に焦点を当てています。

TL;DR

私たちは次の機能を備えたTypeScriptアプリを構築しました:

  • API仕様を、機械優先のストアフロントページへ変換
  • 発見(discovery)、濃縮(enrichment)、推論(inference)のプロバイダに対してタスクを動的にルーティング
  • AgentCashを介して有料API呼び出しを実行
  • エージェントからアウトリーチおよび要約メールを自律的に送信
  • トレース付きの実行アーティファクト(プロバイダ、レイテンシ、コスト、成功)を生成

この記事では、アーキテクチャ、設計上の判断、および実装の具体的な詳細を説明します。

Problem Statement

「AIオートメーション」の多くのデモは、コンテンツ生成で止まっています。実際のエージェント型コマースには次が必要です:

  • 取引(トランザクション)実行のためのレール(リクエストごとに課金)
  • ターゲティングとパーソナライズのためのリアルタイムデータ
  • 品質/コスト/スピードを最適化するためのマルチプロバイダ・ルーティング
  • 納品の証明(実際に送信された成果物+ログ)

私たちは、これらの制約を前提としてこのアプリを設計しました。

System Overview

System Overview

Provider Strategy

AgentCash (execution + payments)

AgentCashは、支払いと実行の基幹部分です:

  • エンドポイントのチェック
  • 有料のfetch呼び出し
  • stableemail経由でのメール送信

Tavily + Bright Data (research/enrichment)

  • 広くて高速なWebシグナル収集にはTavily
  • MCP対応のより深いデータワークフローとWebツールにはBright Data

OpenAI + Featherless (inference layer)

  • 高品質な戦略的コピーにはOpenAI
  • コスト効率の良い、OpenAI互換のバルク生成にはFeatherless

この切り分けにより、すべてを単一のベンダに固定せず、各ステップごとに最適化できます。

Code Walkthrough

1) Typed env schema

Zodを使って、起動時に環境変数の正しさを強制します。

const envSchema = z.object({
  DRY_RUN: z.string().optional().transform((v) => (v ?? "true").toLowerCase() === "true"),
  BRIGHT_DATA_API_TOKEN: z.string().optional(),
  FEATHERLESS_BASE_URL: z.string().default("https://api.featherless.ai/v1"),
  FEATHERLESS_MODEL: z.string().default("meta-llama/Meta-Llama-3.1-8B-Instruct")
});

2) Capability router

ポリシー駆動のルータが、タスクの種類と戦略に基づいてプロバイダを選択します。

forResearchTask(): RouteDecision[] {
  if (this.policy === "speed") {
    return [
      { provider: "tavily", reason: "Fast web research baseline" },
      { provider: "agentcash", reason: "Paid enrichment calls" }
    ];
  }
  // quality / cost variants...
}

3) Featherless with OpenAI-compatible API

await fetch(`${env.FEATHERLESS_BASE_URL}/chat/completions`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${env.FEATHERLESS_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: env.FEATHERLESS_MODEL,
    messages: [
      { role: "system", content: "送信先に合わせた簡潔なパーソナライズ文を書きます。" },
      { role: "user", content: prompt }
    ]
  })
});

4) メール送信の契約(contract)での落とし穴

最初はccを使いましたが、stableemail.dev/api/sendtoを配列として検証しており、ccには対応していません。

正しいパターン:

await this.agentcash.fetch("https://stableemail.dev/api/send", {
  to: ["primary@example.com", "observer@example.com"],
  subject,
  text
});

5) アーティファクト生成を実行

await writeFile(`output/${runId}.md`, reportMarkdown, "utf-8");
await writeFile(`output/${runId}.brightdata.mcp.json`, JSON.stringify(mcpConfig, null, 2), "utf-8");

データと制御フロー

Data and Control Flow

実行してみる

npm install
cp .env.example .env
npm run dev
npm run start

確認チェックリスト

  • 起動ログに、本番実行ではdryRun=falseが含まれている
  • 出力レポートに、有料送信の非ゼロのレイテンシがある
  • AgentCashの残高が、本番実行後に減っている
  • 受信トレイに、relay@stableemail.devからのサマリーメールが届いている

得られた学び

  1. スキーマ優先の統合は時間を節約します。ペイロードを作る前にagentcash checkを使ってください。
  2. 「プロバイダ抽象化」は、それが実際の契約(contract)の差分に対応している場合に限り有用です。
  3. 実行アーティファクトは信頼とデバッグに不可欠です。
  4. 適切な指標は「送信したメール数」だけではなく、コンバージョンと、繰り返しの有料呼び出しです。

今後の改善

  • リードの状態とキャンペーンの進行状況用に永続DBを追加する
  • 送信操作に冪等性キーを追加する
  • プロバイダごとのサーキットブレーカーとリトライを追加する
  • 実行の掘り下げ(ドリルダウン)付きUIダッシュボードを追加する
  • 件名とCTAの最適化のための評価(evaluator)ループを追加する

このプロジェクトは、「AI workflow」から「エージェント的コマースエンジン」へ至る実用的な道筋を示しています。コアとなるオーケストレーションのモデルを維持したまま、チームがプロバイダを差し替えられるよう、意図的にモジュール化されています。

UI Output

Github Repo: https://github.com/harishkotra/AgentCash-Commerce-Router/