feat: gpt-3.5-turbo-instruct support, refactor: try fetching models if OpenRouter is set (#981)

* refactor: try fetching if OpenRouter api key is set

* feat: gpt-3.5-turbo-instruct support

* fix: use new assignment in getTokenizer
This commit is contained in:
Danny Avila 2023-09-22 07:11:36 -04:00 committed by GitHub
parent 1a77fb4fd5
commit d87754c43d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 10 deletions

View file

@ -153,6 +153,11 @@ class ChatGPTClient extends BaseClient {
} else {
modelOptions.prompt = input;
}
if (this.useOpenRouter && modelOptions.prompt) {
delete modelOptions.stop;
}
const { debug } = this.options;
const url = this.completionsUrl;
if (debug) {

View file

@ -73,21 +73,22 @@ class OpenAIClient extends BaseClient {
this.useOpenRouter = true;
}
const { model } = this.modelOptions;
this.isChatCompletion =
this.useOpenRouter ||
this.options.reverseProxyUrl ||
this.options.localAI ||
this.modelOptions.model.startsWith('gpt-');
model.includes('gpt-');
this.isChatGptModel = this.isChatCompletion;
if (this.modelOptions.model === 'text-davinci-003') {
if (model.includes('text-davinci-003') || model.includes('instruct')) {
this.isChatCompletion = false;
this.isChatGptModel = false;
}
const { isChatGptModel } = this;
this.isUnofficialChatGptModel =
this.modelOptions.model.startsWith('text-chat') ||
this.modelOptions.model.startsWith('text-davinci-002-render');
this.maxContextTokens = maxTokensMap[this.modelOptions.model] ?? 4095; // 1 less than maximum
model.startsWith('text-chat') || model.startsWith('text-davinci-002-render');
this.maxContextTokens = maxTokensMap[model] ?? 4095; // 1 less than maximum
this.maxResponseTokens = this.modelOptions.max_tokens || 1024;
this.maxPromptTokens =
this.options.maxPromptTokens || this.maxContextTokens - this.maxResponseTokens;
@ -168,8 +169,9 @@ class OpenAIClient extends BaseClient {
tokenizer = this.constructor.getTokenizer(this.encoding, true, extendSpecialTokens);
} else {
try {
this.encoding = this.modelOptions.model;
tokenizer = this.constructor.getTokenizer(this.modelOptions.model, true);
const { model } = this.modelOptions;
this.encoding = model.includes('instruct') ? 'text-davinci-003' : model;
tokenizer = this.constructor.getTokenizer(this.encoding, true);
} catch {
tokenizer = this.constructor.getTokenizer(this.encoding, true);
}
@ -354,6 +356,8 @@ class OpenAIClient extends BaseClient {
if (this.isChatCompletion) {
token =
progressMessage.choices?.[0]?.delta?.content ?? progressMessage.choices?.[0]?.text;
} else {
token = progressMessage.choices?.[0]?.text;
}
if (!token && this.useOpenRouter) {

View file

@ -88,12 +88,11 @@ const getOpenAIModels = async (opts = { azure: false, plugins: false }) => {
return models;
}
if (userProvidedOpenAI) {
if (userProvidedOpenAI && !OPENROUTER_API_KEY) {
return models;
}
models = await fetchOpenAIModels(opts, models);
return models;
return await fetchOpenAIModels(opts, models);
};
const getChatGPTBrowserModels = () => {