Cloudflare 的无服务器平台允许您在边缘运行代码,使用 Workers 构建全栈应用。绑定(binding) 使 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- 转换后文档的估计 token 数。如果
format等于error则不存在。
- 转换后文档的估计 token 数。如果
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 类型 ↗