WIP, custom API Modes

This commit is contained in:
josc146
2024-08-07 17:13:27 +08:00
parent fbb74b65d1
commit 3d89ddd5bf
15 changed files with 112 additions and 82 deletions
+3 -4
View File
@@ -1,7 +1,7 @@
import BingAIClient from '../clients/bing/index.mjs'
import { getUserConfig } from '../../config/index.mjs'
import { pushRecord, setAbortController } from './shared.mjs'
import { isCustomModelName, modelNameToCustomPart } from '../../utils/model-name-convert.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'
/**
* @param {Runtime.Port} port
@@ -19,9 +19,8 @@ export async function generateAnswersWithBingWebApi(
) {
const { controller, messageListener, disconnectListener } = setAbortController(port)
const config = await getUserConfig()
let modelMode
if (isCustomModelName(session.modelName)) modelMode = modelNameToCustomPart(session.modelName)
else modelMode = config.modelMode
let modelMode = getModelValue(session)
if (!modelMode) modelMode = config.modelMode
console.debug('mode', modelMode)
+2 -2
View File
@@ -9,7 +9,7 @@ import { v4 as uuidv4 } from 'uuid'
import { t } from 'i18next'
import { sha3_512 } from 'js-sha3'
import randomInt from 'random-int'
import { modelNameToValue } from '../../utils/model-name-convert.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'
async function request(token, method, path, data) {
const apiUrl = (await getUserConfig()).customChatGptWebApiUrl
@@ -234,7 +234,7 @@ export async function generateAnswersWithChatgptWebApi(port, question, session,
isNeedWebsocket(accessToken).catch(() => undefined),
])
console.debug('models', models)
const selectedModel = modelNameToValue(session.modelName)
const selectedModel = getModelValue(session)
const usedModel =
models && models.includes(selectedModel) ? selectedModel : Models.chatgptFree35.value
console.debug('usedModel', usedModel)
+3 -3
View File
@@ -3,7 +3,7 @@ import { pushRecord, setAbortController } from './shared.mjs'
import { fetchSSE } from '../../utils/fetch-sse.mjs'
import { isEmpty } from 'lodash-es'
import { getConversationPairs } from '../../utils/get-conversation-pairs.mjs'
import { modelNameToValue } from '../../utils/model-name-convert.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'
/**
* @param {Runtime.Port} port
@@ -14,7 +14,7 @@ export async function generateAnswersWithClaudeApi(port, question, session) {
const { controller, messageListener, disconnectListener } = setAbortController(port)
const config = await getUserConfig()
const apiUrl = config.customClaudeApiUrl
const modelName = session.modelName
const model = getModelValue(session)
const prompt = getConversationPairs(
session.conversationRecords.slice(-config.maxConversationContextLength),
@@ -32,7 +32,7 @@ export async function generateAnswersWithClaudeApi(port, question, session) {
'x-api-key': config.claudeApiKey,
},
body: JSON.stringify({
model: modelNameToValue(modelName),
model,
messages: prompt,
stream: true,
max_tokens: config.maxResponseTokenLength,
+4 -10
View File
@@ -1,24 +1,18 @@
import { pushRecord, setAbortController } from './shared.mjs'
import Claude from '../clients/claude'
import { modelNameToValue } from '../../utils/model-name-convert.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'
/**
* @param {Runtime.Port} port
* @param {string} question
* @param {Session} session
* @param {string} sessionKey
* @param {string} modelName
*/
export async function generateAnswersWithClaudeWebApi(
port,
question,
session,
sessionKey,
modelName,
) {
export async function generateAnswersWithClaudeWebApi(port, question, session, sessionKey) {
const bot = new Claude({ sessionKey })
await bot.init()
const { controller, cleanController } = setAbortController(port)
const model = getModelValue(session)
let answer = ''
const progressFunc = ({ completion }) => {
@@ -35,7 +29,7 @@ export async function generateAnswersWithClaudeWebApi(
const params = {
progress: progressFunc,
done: doneFunc,
model: modelNameToValue(modelName),
model,
signal: controller.signal,
}
+4 -10
View File
@@ -2,7 +2,7 @@ import { pushRecord, setAbortController } from './shared.mjs'
import { setUserConfig } from '../../config/index.mjs'
import { fetchSSE } from '../../utils/fetch-sse'
import { isEmpty } from 'lodash-es'
import { modelNameToValue } from '../../utils/model-name-convert.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'
export class MoonshotWeb {
/**
@@ -569,18 +569,12 @@ export class Message {
* @param {string} question
* @param {Session} session
* @param {UserConfig} config
* @param {string} modelName
*/
export async function generateAnswersWithMoonshotWebApi(
port,
question,
session,
config,
modelName,
) {
export async function generateAnswersWithMoonshotWebApi(port, question, session, config) {
const bot = new MoonshotWeb({ config })
await bot.init()
const { controller, cleanController } = setAbortController(port)
const model = getModelValue(session)
let answer = ''
const progressFunc = ({ completion }) => {
@@ -597,7 +591,7 @@ export async function generateAnswersWithMoonshotWebApi(
const params = {
progress: progressFunc,
done: doneFunc,
model: modelNameToValue(modelName),
model,
signal: controller.signal,
}
+6 -11
View File
@@ -10,23 +10,17 @@ import {
pushRecord,
setAbortController,
} from './shared.mjs'
import { modelNameToValue } from '../../utils/model-name-convert.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'
/**
* @param {Browser.Runtime.Port} port
* @param {string} question
* @param {Session} session
* @param {string} apiKey
* @param {string} modelName
*/
export async function generateAnswersWithGptCompletionApi(
port,
question,
session,
apiKey,
modelName,
) {
export async function generateAnswersWithGptCompletionApi(port, question, session, apiKey) {
const { controller, messageListener, disconnectListener } = setAbortController(port)
const model = getModelValue(session)
const config = await getUserConfig()
const prompt =
@@ -55,7 +49,7 @@ export async function generateAnswersWithGptCompletionApi(
},
body: JSON.stringify({
prompt: prompt,
model: modelNameToValue(modelName),
model,
stream: true,
max_tokens: config.maxResponseTokenLength,
temperature: config.temperature,
@@ -129,6 +123,7 @@ export async function generateAnswersWithChatgptApiCompat(
extraBody = {},
) {
const { controller, messageListener, disconnectListener } = setAbortController(port)
const model = getModelValue(session)
const config = await getUserConfig()
const prompt = getConversationPairs(
@@ -155,7 +150,7 @@ export async function generateAnswersWithChatgptApiCompat(
},
body: JSON.stringify({
messages: prompt,
model: modelNameToValue(modelName),
model,
stream: true,
max_tokens: config.maxResponseTokenLength,
temperature: config.temperature,