之前刷论坛看到有大佬编写了个openwebui接入硅基流动的视频生成模型,但我用了下,等待时间过长,并且有概率出现请求失败的情况,并且在生成的时候没办法离开这个页面。
于是我参考大佬的代码,并使用cf worker中转,实现了可以刷新后台等待的接入方式。
cf worker设置
代码
export default {
async fetch(request, env) {
let url = new URL(request.url);
let path = url.pathname;
if (request.method === 'POST' && path === '/video/submit') {
const authHeader = request.headers.get('Authorization');
if (!authHeader || !checkAuthorization(authHeader, env)) {
return new Response('Forbidden', { status: 403 });
}
return handleProxy(request, env, 'https://api.siliconflow.cn/v1/video/submit');
} else if (request.method === 'POST' && path === '/video/status') {
return handleProxy(request, env, 'https://api.siliconflow.cn/v1/video/status');
} else if (request.method === 'OPTIONS') {
// Handle preflight requests for CORS
return new Response(null, {
status: 204,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Max-Age': '86400',
}
});
} else {
return new Response('Not Found', { status: 404 });
}
}
};
async function handleProxy(request, env, targetUrl) {
const response = await fetch(targetUrl, {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.AUTH_TOKEN}`,
'Content-Type': 'application/json'
},
body: request.body // 直接转发请求的body部分
});
// Create a new response and pass through the status and headers from the origin response
const newResponse = new Response(response.body, {
status: response.status,
headers: {
'Content-Type': response.headers.get('Content-Type'),
'Access-Control-Allow-Origin': '*', // 解决CORS问题
}
});
return newResponse;
}
function checkAuthorization(authHeader, env) {
// This function checks if the authHeader contains a valid token.
// For simplicity, here we're just comparing with a predefined value.
const token = authHeader.split(' ')[1]; // Assumes Bearer token
return token === env.SUBMIT_AUTH_TOKEN;
}
在环境变量中加入AUTH_TOKEN
SUBMIT_AUTH_TOKEN
其中AUTH_TOKEN
为硅基流动的apikey,SUBMIT_AUTH_TOKEN
为自己定义的令牌,建议使用随机密码生成器来生成。
注意
SUBMIT_AUTH_TOKEN
的值需要保存下来,后面会使用
openwebui 设置
代码
由于代码中存在奇奇怪怪的html和md语法,直接贴到论坛上会导致渲染错误,所以可以通过点击这里下载函数代码
在管理员界面 - > 函数-> 添加一个新的函数
点击设置 进行变量的设置
保存后,就可以看到这个新模型了
参考
搞个openwebui的 pipe 玩玩 2 ,硅基流动 ,混元视频生成 - 资源荟萃 / 资源荟萃, Lv1 - LINUX DO