ai-chatbot/lib/ai/runtime/agent-vision-failover.ts

14 lines
788 B
TypeScript

import type { LanguageModel } from "ai";
import { AgentModelProtocolError, createAgentModelFailover, type AgentCircuitStore, type AgentModelEntry } from "./agent-model-failover";
export type AgentVisionExecutor = <T>(execute: (model: LanguageModel, signal: AbortSignal) => Promise<T>, signal?: AbortSignal) => Promise<T>;
export function createAgentVisionExecutor(entries: AgentModelEntry[], circuit: AgentCircuitStore,
resolve: (id: string) => Promise<LanguageModel | null>): AgentVisionExecutor {
const run = createAgentModelFailover(entries, circuit);
return (execute, signal) => run(async (entry, attemptSignal) => {
const model = await resolve(entry.model.id);
if (!model) throw new AgentModelProtocolError();
return execute(model, attemptSignal);
}, signal);
}