ログインとデータ抽出
コピー
AIに質問
import { Refrain, loadRunbook } from "@refrainai/sdk";
const client = new Refrain({
ai: {
modelId: "claude-sonnet-4-6",
provider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY!,
},
headless: true,
});
const runbook = await loadRunbook("./runbooks/login-and-extract.yaml");
const report = await client.execute(runbook, {
contextMarkdown: "# 認証情報\n- ステージング環境を使用",
variables: { email: "[email protected]" },
secrets: { password: process.env.APP_PASSWORD! },
screenshotDir: "./screenshots",
});
// キャプチャした値にアクセス
for (const step of report.steps) {
if (step.capturedValues) {
console.log(`ステップ ${step.ordinal}:`, step.capturedValues);
}
}
console.log(`結果: ${report.succeeded}/${report.totalSteps} 成功`);
await client.dispose();
カスタムロガー
ロギングフレームワークとの統合:コピー
AIに質問
import { Refrain, CallbackLogger, loadRunbook } from "@refrainai/sdk";
import type { LoggerFactory } from "@refrainai/sdk";
const loggerFactory: LoggerFactory = {
createLogger: () =>
new CallbackLogger((level, message) => {
// ロガーに転送(例: winston, pino)
console.log(`[refrain:${level}] ${message}`);
}),
createSpinner: () => ({
start: (msg) => console.log(`[spinner] ${msg}...`),
stop: (msg) => console.log(`[spinner] ${msg}`),
}),
};
const client = new Refrain({
ai: {
modelId: "claude-sonnet-4-6",
provider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY!,
},
loggerFactory,
debug: true,
});
const runbook = await loadRunbook("./flow.yaml");
const report = await client.execute(runbook, {
contextMarkdown: "",
debugLogPath: "./debug.jsonl",
});
await client.dispose();
ファイルのダウンロードとエクスポート
コピー
AIに質問
import { Refrain, loadRunbook } from "@refrainai/sdk";
const client = new Refrain({
ai: {
modelId: "claude-sonnet-4-6",
provider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY!,
},
});
const runbook = await loadRunbook("./runbooks/export-data.yaml");
const report = await client.execute(runbook, {
contextMarkdown: "",
outputDir: "./output",
mergeDownloads: true,
});
if (report.downloadedFiles?.length) {
console.log("ダウンロード済み:", report.downloadedFiles);
}
await client.dispose();
異なる AI プロバイダーの使用
ai 設定でプロバイダーとモデルを指定します:
コピー
AIに質問
const client = new Refrain({
ai: {
modelId: "gpt-4o",
provider: "openai",
apiKey: process.env.OPENAI_API_KEY!,
},
});
AiConfig 型リファレンス を参照してください。