Cloudflare のサーバーレスプラットフォームでは、エッジでコードを実行し、Workers でフルスタックアプリケーションを構築できます。バインディング により、Worker または Pages Function は Cloudflare Developer Platform 上のリソースと連携できます。
Workers から Markdown Conversion サービスを直接使うには、Cloudflare ダッシュボードで AI バインディングを作成するか(手順は AI バインディング を参照)、Wrangler ファイル を更新します。Wrangler ファイルに次を追加します。
{
"$schema": "./node_modules/wrangler/config-schema.json",
"ai": {
"binding": "AI"
}
}[ai]
binding = "AI" # i.e. available in your Worker on env.AIこの例では、R2 から PDF と画像を取得し、両方を env.AI.toMarkdown に渡します。結果は変換済みドキュメントのリストです。画像の検出と要約には、Workers AI モデルが自動で使われます。
import { Env } from "./env";
export default {
async fetch(request, env, ctx) {
// https://pub-979cb28270cc461d94bc8a169d8f389d.r2.dev/somatosensory.pdf
const pdf = await env.R2.get("somatosensory.pdf");
// https://pub-979cb28270cc461d94bc8a169d8f389d.r2.dev/cat.jpeg
const cat = await env.R2.get("cat.jpeg");
return Response.json(
await env.AI.toMarkdown([
{
name: "somatosensory.pdf",
blob: new Blob([await pdf.arrayBuffer()], {
type: "application/pdf",
}),
},
{
name: "cat.jpeg",
blob: new Blob([await cat.arrayBuffer()], {
type: "image/jpeg",
}),
},
]),
);
},
};import { Env } from "./env";
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
// https://pub-979cb28270cc461d94bc8a169d8f389d.r2.dev/somatosensory.pdf
const pdf = await env.R2.get("somatosensory.pdf");
// https://pub-979cb28270cc461d94bc8a169d8f389d.r2.dev/cat.jpeg
const cat = await env.R2.get("cat.jpeg");
return Response.json(
await env.AI.toMarkdown([
{
name: "somatosensory.pdf",
blob: new Blob([await pdf.arrayBuffer()], {
type: "application/pdf",
}),
},
{
name: "cat.jpeg",
blob: new Blob([await cat.arrayBuffer()], {
type: "image/jpeg",
}),
},
]),
);
},
};import { Env } from "./env";
export default {
async fetch(request, env, ctx) {
return Response.json(await env.AI.toMarkdown().supported());
},
};import { Env } from "./env";
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
return Response.json(await env.AI.toMarkdown().supported());
},
};さまざまな形式のドキュメント、またはそのリストを受け取り、Markdown に変換します。
const result = await env.AI.toMarkdown({
name: "document.pdf",
blob: new Blob([documentBuffer]),
});const result = await env.AI.toMarkdown({
name: "document.pdf",
blob: new Blob([documentBuffer]),
});-
files:MarkdownDocument | MarkdownDocument[]—MarkdownDocumentのインスタンス、またはその配列です。 -
conversionOptions:ConversionOptions— 変換の動作を制御するオプションです。詳細は 変換オプション を参照してください。
results:Promise<ConversionResult | ConversionResult[]>—ConversionResultのインスタンス、またはその配列です。
-
namestring- 変換するドキュメントの名前です。
-
blobBlob- ドキュメント内容を持つ新しい Blob ↗ オブジェクトです。
-
idstring- このオブジェクトに関連付けられた ID です。
-
namestring- 変換後ドキュメントの名前です。入力の名前と一致します。
-
format'markdown' | 'text' | 'error'- この
ConversionResultオブジェクトの形式です。output.formatオプションをtextに設定すると、textになります。
- この
-
mimetypestring- 検出されたドキュメントの MIME タイプ ↗ です。
-
tokensnumber- 変換後ドキュメントの推定トークン数です。
formatがerrorの場合は存在しません。
- 変換後ドキュメントの推定トークン数です。
-
datastring- 変換後ドキュメントの内容です。
formatがerrorの場合は存在しません。
- 変換後ドキュメントの内容です。
-
errorstring- 変換が失敗した理由を説明するエラーメッセージです。
formatがerrorの場合にのみ存在します。
- 変換が失敗した理由を説明するエラーメッセージです。
このメソッドは env.AI.toMarkdown と似ていますが、新しいハンドル経由で公開されます。引数と戻り値は同じです。
const result = await env.AI.toMarkdown().transform({
name: "document.pdf",
blob: new Blob([documentBuffer]),
});const result = await env.AI.toMarkdown().transform({
name: "document.pdf",
blob: new Blob([documentBuffer]),
});現在 Markdown 変換に対応しているファイル形式の一覧を返します。Markdown に変換できるファイル形式の一覧は 対応形式 を参照してください。
const formats = await env.AI.toMarkdown().supported();const formats = await env.AI.toMarkdown().supported();results:SupportedFormat[]— Markdown 変換に対応しているすべての形式の配列です。
-
extensionstring- この形式のファイルの拡張子です。
-
mimeTypestring- この形式のファイルの MIME タイプ ↗ です。