浏览器库函数节点 SDK
浏览器库函数 SDK 允许您在 浏览器库。每个函数都得到一个管理下的浏览器会话——写出您的自动化逻辑,在本地测试,然后发布到云中.
文件全文可在以下网址查阅: 页面存档备份,存于互联网档案馆. docs.browserbase.com。 。 。 .
安装
pnpm add @browserbasehq/sdk-functions
或带 npm :
npm install @browserbasehq/sdk-functions
快速启动
与CLI合作的新项目:
pnpm dlx @browserbasehq/sdk-functions init my-project
cd my-project
将浏览器库 API 密钥添加到 .env数字 :
BROWSERBASE_API_KEY=your_api_key_here
启动函数使用 阶段手,它需要在浏览器会话中扩展。 上传扩展名后粘贴返回的 id 输入 extensionId 内 index.ts数字 :
browse cloud extensions upload node_modules/@browserbasehq/stagehand/dist/assets/stagehand-extension.zip
启动本地开发服务器 :
pnpm bb dev index.ts
准备就绪后,公布至浏览器库:
pnpm bb publish index.ts
礛 附加您的 API 密钥作为密钥 到已发布的函数.
使用量
基本函数
import { defineFn } from "@browserbasehq/sdk-functions";
defineFn("hello-world", async () => {
return { message: "Hello from Browserbase!" };
});
浏览器自动化
每个函数都收到 context 有管理浏览器会话。 连接 阶段手 按会话编号排列:
import { defineFn } from "@browserbasehq/sdk-functions";
import { browserbase, Stagehand } from "@browserbasehq/stagehand";
import { z } from "zod/v4";
defineFn(
"scrape-titles",
async (context) => {
const browser = await browserbase.connect({
// The local dev server has no secrets, so fall back to .env.
apiKey:
context.secrets.BROWSERBASE_API_KEY ?? process.env.BROWSERBASE_API_KEY!,
sessionId: context.session.id,
});
// In this example, Stagehand uses the Model Gateway where Browserbase charges for the tokens
const stagehand = await Stagehand.create({ browser });
const page = (await browser.context.activePage())!;
await page.goto("https://news.ycombinator.com");
const { data } = await stagehand.extract(
"Extract the titles of the top 5 stories",
z.object({ titles: z.array(z.string()).max(5) }),
);
await stagehand.close();
return { titles: data.titles };
},
// The ID from `browse cloud extensions upload`. Stagehand needs its extension in the session.
{ sessionConfig: { extensionId: "your-extension-id" } },
);
参数验证
使用 佐德语Name 用于验证传递到您函数的参数的计划 :
import { defineFn } from "@browserbasehq/sdk-functions";
import z from "zod";
defineFn(
"multiply",
async (_context, params) => {
return { result: params.a * params.b };
},
{
parametersSchema: z.object({
a: z.number(),
b: z.number(),
}),
},
);
自定义浏览器配置
过 sessionConfig 以自定义浏览器会话(使用与 浏览器 SDK 会话创建参数:
import { defineFn } from "@browserbasehq/sdk-functions";
import { browserbase, Stagehand } from "@browserbasehq/stagehand";
import { z } from "zod/v4";
defineFn(
"stealth-scraper",
async (context) => {
const browser = await browserbase.connect({
apiKey:
context.secrets.BROWSERBASE_API_KEY ?? process.env.BROWSERBASE_API_KEY!,
sessionId: context.session.id,
});
const stagehand = await Stagehand.create({ browser });
const page = (await browser.context.activePage())!;
await page.goto("https://example.com");
const { data } = await stagehand.extract(
"Extract the main text of the page",
z.object({ content: z.string() }),
);
await stagehand.close();
return { content: data.content };
},
{
sessionConfig: {
extensionId: "your-extension-id", // Stagehand's extension
browserSettings: { advancedStealth: true },
},
},
);
秘诀
在加密的项目秘密中保留 API 密钥 。 函数所附带的每个秘密如下: context.secrets[name]。已读取 Stagehand 示例 BROWSERBASE_API_KEY 这边 他们不需要模型 API 键:没有 model 选项, Stagehand 使用 浏览器模式网关,它为每个呼叫选择一个模型。 令牌的浏览器收费 .
创建该密钥并将其附加到已出版的函数中 browse 国 际数字 :
browse cloud secrets create BROWSERBASE_API_KEY --env BROWSERBASE_API_KEY
browse functions secrets attach <functionId> <secretId>
使用函数 ID 从 builtFunctions[].id 在发布输出中。 本地开发服务器不会传递秘密,所以示例会回到其中的值 .env。 。 。 .
CLI 参考
这个 bb CLI包含在套件中.
| 命令 | 说明 |
|---|---|
bb init [project-name] | 脚手架新项目( 默认为 my-browserbase-function(中文(简体) ) |
bb dev <entrypoint> | 启动本地开发服务器 |
bb publish <entrypoint> | 将函数部署到浏览器库 |
bb invoke <functionId> | 启动已部署的职能 |
bb init
bb init my-project
bb init my-project --package-manager npm
选项 :
-p, --package-manager <manager>使用软件包管理器(npm或者说pnpm,默认为pnpm(中文(简体) )
bb dev
bb dev index.ts
bb dev index.ts --port 3000
选项 :
-p, --port <number>—— 要听的端口( 默认 :14113(中文(简体) )-h, --host <string>- 主机绑定(默认:127.0.0.1(中文(简体) )
bb publish
bb publish index.ts
bb publish index.ts --dry-run
选项 :
--dry-run- 显示不上传将公布的内容-u, --api-url <url>—自定义 API 端点 URL
bb invoke
bb invoke <functionId>
bb invoke <functionId> --params '{"key": "value"}'
选项 :
-p, --params <json>JSON 参数传递给函数--no-wait- 不要等待 引用完成--check-status <invocationId>- 检查现有援引的情况-u, --api-url <url>—自定义 API 端点 URL
配置
在环境或在一个环境中设置变量 .env 用于 CLI 和本地开发服务器的文件。 已部署的职能从 隐藏 换句话说.
| 变量 | 需求 | 说明 |
|---|---|---|
BROWSERBASE_API_KEY | 对 | 您的浏览器库 API 密钥 |
获取您的 API 密钥 浏览器库.com。 。 。 .
所需资源
- 节点.js 18+
- 类型脚本QQ 4.5