OpenAICloudflare Developer Platform2026/04/21 12:00

Workflows - Additional step context and ReadableStream support now available in Workflows step.do()

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

Workflows の step.do() に追加コンテキストと ReadableStream サポートが追加

Key Points

  • step.do() に追加コンテキスト
  • ReadableStream を直接返せる
  • config に retries/timeout を含む

Summary

Workflows の step.do() コールバックが受け取る context に追加プロパティ(step.namestep.countconfig)が追加され、ReadableStream を直接返せるようになりました。非ストリーム出力は 1 MiB 制限ですが、ストリームはより大きなペイロードを扱えます(ただし Workflow インスタンスのストレージ上限には含まれます)。TypeScript の型定義も提供されています。

Key Points

  • コールバックの context に以下が追加されます:
    • step.namestep.do() に渡したステップ名
    • step.count — インスタンス内で同名ステップが何度呼ばれたか(1始まり)
    • config — 解決済みのステップ設定(retriestimeout がデフォルト適用済み)
    • attempt — 現在の試行回数
  • TypeScript 型(例): type WorkflowStepContext = { step: { name: string; count: number }; attempt: number; config: ResolvedStepConfig }
  • ReadableStream を直接返すことで大きな出力を扱える。
    • 例: return object.bodyobject.bodyReadableStream の場合)
    • 注意: 非ストリームは 1 MiB 制限、ストリームはより大きいがインスタンスのストレージ上限に含む。
  • 実用ポイント:ループで同じステップ名を使うときは step.count で回数を判別し、config.retries.limitconfig.timeout を参照してリトライ/タイムアウト挙動を制御する。

Migration / Usage tips

  • 既存の step.do() コールバックはそのまま動作します。追加情報が必要な場合はコールバックの引数から context を分割代入して利用してください。
    • 例: async (context) => { const { step, attempt, config } = context; /* ... */ }
  • 大きなファイルやストリーミング応答は ReadableStream を返すように変更してメモリ使用を抑制してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Workflows — step.do() で追加のステップコンテキストと ReadableStream サポートが利用可能になりました

概要

Workflows の step.do() コールバックに、既存の attempt に加えて追加のコンテキストが渡されるようになりました。また、ステップから ReadableStream を直接返せるようになり、大きな出力をストリームで処理できるようになりました。

Step コンテキストのプロパティ

step.do() コールバックは以下のプロパティを含むコンテキストオブジェクトを受け取ります(従来の attempt も引き続き存在します)。

  • step.namestep.do() に渡した名前
  • step.count — このインスタンス内で同じ名前のステップが何回呼び出されたか(1-indexed)。ループで同じステップを複数回実行する場合に便利です。
  • config — タイムアウトやリトライを含む、デフォルトが適用された解決済みのステップ設定
  • attempt — 現在の試行回数

TypeScript 型

type ResolvedStepConfig = {
  retries: {
    limit: number;
    delay: WorkflowDelayDuration | number;
    backoff?: "constant" | "linear" | "exponential";
  };
  timeout: WorkflowTimeoutDuration | number;
};

type WorkflowStepContext = {
  step: {
    name: string;
    count: number;
  };
  attempt: number;
  config: ResolvedStepConfig;
};

ReadableStream のサポート

ステップは ReadableStream を直接返すことができるようになりました。非ストリームのステップ出力は 1 MiB に制限されていますが、ストリーム出力はより大きなペイロードをサポートします。

例(TypeScript)

const largePayload = await step.do("fetch-large-file", async () => {
    const object = await env.MY_BUCKET.get("large-file.bin");
    return object.body;
});

注意: ストリーム化された出力は依然として Workflow インスタンスのストレージ制限の一部として扱われます。


ご不明点や詳細はドキュメント/ヘルプセンターをご参照ください。