workers-ai-provider
Version:
Workers AI Provider for the vercel AI SDK
48 lines (43 loc) • 1.26 kB
text/typescript
import type { LanguageModelV1FinishReason } from "@ai-sdk/provider";
export function mapWorkersAIFinishReason(finishReasonOrResponse: any): LanguageModelV1FinishReason {
let finishReason: string | null | undefined;
// If it's a string/null/undefined, use it directly (original behavior)
if (
typeof finishReasonOrResponse === "string" ||
finishReasonOrResponse === null ||
finishReasonOrResponse === undefined
) {
finishReason = finishReasonOrResponse;
} else if (typeof finishReasonOrResponse === "object" && finishReasonOrResponse !== null) {
const response = finishReasonOrResponse;
if (
"choices" in response &&
Array.isArray(response.choices) &&
response.choices.length > 0
) {
finishReason = response.choices[0].finish_reason;
} else if ("finish_reason" in response) {
finishReason = response.finish_reason;
} else {
finishReason = undefined;
}
}
switch (finishReason) {
case "stop":
return "stop";
case "length":
case "model_length":
return "length";
case "tool_calls":
return "tool-calls";
case "error":
return "error";
case "other":
return "other";
case "unknown":
return "unknown";
default:
// Default to `stop` for backwards compatibility
return "stop";
}
}