コンテンツにスキップ

Vercel AI SDK

In AI SDK routes, @vel4ai/ai-sdk bundles createOpenAI(), model, onFinish, onError, onAbort, and reporter sharing.

prepareVelaStreamTextWithResponse() returns either a non-allow response or an allowed result with streamTextOptions for AI SDK.

import { prepareVelaStreamTextWithResponse } from "@vel4ai/ai-sdk";
import { createVelaIntegrationFromEnvironment } from "@vel4ai/sdk";
import { streamText } from "ai";
declare const process: { env: Record<string, string | undefined> };
declare const messages: unknown[];
export async function runStream() {
const vela = createVelaIntegrationFromEnvironment({ env: process.env });
const prepared = await prepareVelaStreamTextWithResponse(
vela,
{ estimatedCostUsd: 0.05 },
{
onReportError(error) {
console.error("Vela report failed", error);
},
},
);
if (prepared.outcome !== "allow") {
return prepared.response;
}
return streamText(prepared.createStreamTextInput({ messages }));
}

In routes that should avoid loading the AI SDK runtime in setup or deny paths, prepare with the core SDK first, then import @vel4ai/ai-sdk and ai only after allow.

import { createVelaIntegrationFromEnvironment } from "@vel4ai/sdk";
declare const process: { env: Record<string, string | undefined> };
declare const messages: unknown[];
export async function runAllowOnlyStream() {
const vela = createVelaIntegrationFromEnvironment({ env: process.env });
const prepared = await vela.prepareExecutionWithResponse({
estimatedCostUsd: 0.05,
});
if (prepared.outcome !== "allow") {
return prepared.response;
}
const [{ createVelaStreamTextInput }, { streamText }] = await Promise.all([
import("@vel4ai/ai-sdk"),
import("ai"),
]);
const reporter = prepared.createResultReporter();
return streamText(
createVelaStreamTextInput(prepared, { messages }, { reporter }),
);
}
HelperPurpose
createVelaOpenAI()Create an AI SDK OpenAI provider/model from a prepared execution
createVelaStreamCallbacks()Attach AI SDK callbacks to an existing report target
createVelaStreamTextCallbacks()Create callbacks from a prepared execution
createVelaStreamTextOptions()Get model and callbacks together
createVelaStreamTextInput()Merge app-owned streamText() fields with Vela-controlled options