UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

70 lines (69 loc) 2.7 kB
import { r as assertOkOrThrowHttpError } from "./provider-http-errors-DqaqQLLZ.js"; import { r as describeImagesWithModel, t as describeImageWithModel } from "./image-runtime-CmS6zMcE.js"; import { i as resolveMediaUnderstandingString, n as buildOpenAiCompatibleVideoRequestBody, r as coerceOpenAiCompatibleVideoText } from "./media-understanding-1KBZ_bnJ.js"; import { c as postJsonRequest, p as resolveProviderHttpRequestConfig } from "./shared-IuCmx8oC.js"; import "./provider-http-BXCBCi4E.js"; import { r as MOONSHOT_DEFAULT_MODEL_ID } from "./provider-catalog-C_q7hjV_.js"; //#region extensions/moonshot/media-understanding-provider.ts const DEFAULT_MOONSHOT_VIDEO_BASE_URL = "https://api.moonshot.ai/v1"; const DEFAULT_MOONSHOT_VIDEO_MODEL = MOONSHOT_DEFAULT_MODEL_ID; const DEFAULT_MOONSHOT_VIDEO_PROMPT = "Describe the video."; async function describeMoonshotVideo(params) { const fetchFn = params.fetchFn ?? fetch; const model = resolveMediaUnderstandingString(params.model, DEFAULT_MOONSHOT_VIDEO_MODEL); const mime = resolveMediaUnderstandingString(params.mime, "video/mp4"); const prompt = resolveMediaUnderstandingString(params.prompt, DEFAULT_MOONSHOT_VIDEO_PROMPT); const { baseUrl, allowPrivateNetwork, headers, dispatcherPolicy } = resolveProviderHttpRequestConfig({ baseUrl: params.baseUrl, defaultBaseUrl: DEFAULT_MOONSHOT_VIDEO_BASE_URL, headers: params.headers, request: params.request, defaultHeaders: { "content-type": "application/json", authorization: `Bearer ${params.apiKey}` }, provider: "moonshot", api: "openai-completions", capability: "video", transport: "media-understanding" }); const { response: res, release } = await postJsonRequest({ url: `${baseUrl}/chat/completions`, headers, body: buildOpenAiCompatibleVideoRequestBody({ model, prompt, mime, buffer: params.buffer }), timeoutMs: params.timeoutMs, fetchFn, allowPrivateNetwork, dispatcherPolicy }); try { await assertOkOrThrowHttpError(res, "Moonshot video description failed"); const text = coerceOpenAiCompatibleVideoText(await res.json()); if (!text) throw new Error("Moonshot video description response missing content"); return { text, model }; } finally { await release(); } } const moonshotMediaUnderstandingProvider = { id: "moonshot", capabilities: ["image", "video"], defaultModels: { image: MOONSHOT_DEFAULT_MODEL_ID, video: DEFAULT_MOONSHOT_VIDEO_MODEL }, autoPriority: { video: 20 }, describeImage: describeImageWithModel, describeImages: describeImagesWithModel, describeVideo: describeMoonshotVideo }; //#endregion export { moonshotMediaUnderstandingProvider as n, describeMoonshotVideo as t };