UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

71 lines (70 loc) 2.6 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 { S as QWEN_STANDARD_GLOBAL_BASE_URL } from "./models-BMEcWkNl.js"; //#region extensions/qwen/media-understanding-provider.ts const DEFAULT_QWEN_VIDEO_MODEL = "qwen-vl-max-latest"; const DEFAULT_QWEN_VIDEO_PROMPT = "Describe the video in detail."; async function describeQwenVideo(params) { const fetchFn = params.fetchFn ?? fetch; const model = resolveMediaUnderstandingString(params.model, DEFAULT_QWEN_VIDEO_MODEL); const mime = resolveMediaUnderstandingString(params.mime, "video/mp4"); const prompt = resolveMediaUnderstandingString(params.prompt, DEFAULT_QWEN_VIDEO_PROMPT); const { baseUrl, allowPrivateNetwork, headers, dispatcherPolicy } = resolveProviderHttpRequestConfig({ baseUrl: params.baseUrl, defaultBaseUrl: QWEN_STANDARD_GLOBAL_BASE_URL, headers: params.headers, request: params.request, defaultHeaders: { "content-type": "application/json", authorization: `Bearer ${params.apiKey}` }, provider: "qwen", 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, "Qwen video description failed"); const text = coerceOpenAiCompatibleVideoText(await res.json()); if (!text) throw new Error("Qwen video description response missing content"); return { text, model }; } finally { await release(); } } function buildQwenMediaUnderstandingProvider() { return { id: "qwen", capabilities: ["image", "video"], defaultModels: { image: "qwen-vl-max-latest", video: DEFAULT_QWEN_VIDEO_MODEL }, autoPriority: { video: 15 }, describeImage: describeImageWithModel, describeImages: describeImagesWithModel, describeVideo: describeQwenVideo }; } //#endregion export { describeQwenVideo as n, buildQwenMediaUnderstandingProvider as t };