You've already forked bilibili-subtitle
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import {DEFAULT_SERVER_URL_OPENAI} from '../consts/const'
|
||
|
||
const getServerUrl = (serverUrl?: string) => {
|
||
if (!serverUrl) {
|
||
return DEFAULT_SERVER_URL_OPENAI
|
||
}
|
||
if (serverUrl.endsWith('/')) {
|
||
serverUrl = serverUrl.slice(0, -1)
|
||
}
|
||
//如果serverUrl不以/vxxx结尾,则添加/v1
|
||
if (!/\/v\d+$/.test(serverUrl.toLowerCase())) {
|
||
serverUrl += '/v1'
|
||
}
|
||
return serverUrl
|
||
}
|
||
|
||
export const handleChatCompleteTask = async (task: Task) => {
|
||
const data = task.def.data
|
||
const serverUrl = getServerUrl(task.def.serverUrl)
|
||
const resp = await fetch(`${serverUrl}/chat/completions`, {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
Authorization: 'Bearer ' + task.def.extra.apiKey,
|
||
},
|
||
body: JSON.stringify(data),
|
||
})
|
||
task.resp = await resp.json()
|
||
if (task.resp.usage) {
|
||
return (task.resp.usage.total_tokens??0) > 0
|
||
} else {
|
||
throw new Error(`${task.resp.error.code as string??''} ${task.resp.error.message as string ??''}`)
|
||
}
|
||
}
|
||
|
||
export const handleGeminiChatCompleteTask = async (task: Task) => {
|
||
const data = task.def.data
|
||
const resp = await fetch('https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'x-goog-api-key': task.def.extra.geminiApiKey,
|
||
},
|
||
body: JSON.stringify(data),
|
||
})
|
||
task.resp = await resp.json()
|
||
}
|