From ca2f0c347bdad6d54ac1b94713c748135a3ba07b Mon Sep 17 00:00:00 2001 From: Zhang Minghan Date: Sun, 24 Sep 2023 12:53:51 +0800 Subject: [PATCH] add claude-2, claude-2-100k model --- api/stream.go | 11 +++++++---- app/src/conf.ts | 2 +- auth/usage.go | 4 ++++ types/globals.go | 9 +++++++++ utils/tokenizer.go | 6 ++++++ 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/api/stream.go b/api/stream.go index 01cc80b..4a17acc 100644 --- a/api/stream.go +++ b/api/stream.go @@ -115,17 +115,20 @@ func StreamRequest(model string, enableReverse bool, messages []types.ChatGPTMes if enableReverse { NativeStreamRequest(viper.GetString("openai.reverse"), viper.GetString("openai.pro_endpoint"), viper.GetString("openai.pro"), messages, token, callback) } else { - NativeStreamRequest(model, viper.GetString("openai.gpt4_endpoint"), viper.GetString("openai.gpt4"), messages, token, callback) + NativeStreamRequest(types.GPT40613, viper.GetString("openai.gpt4_endpoint"), viper.GetString("openai.gpt4"), messages, token, callback) } case types.GPT432k, types.GPT432k0613, types.GPT432k0314: - NativeStreamRequest(model, viper.GetString("openai.gpt4_endpoint"), viper.GetString("openai.gpt4"), messages, token, callback) + NativeStreamRequest(types.GPT432k0613, viper.GetString("openai.gpt4_endpoint"), viper.GetString("openai.gpt4"), messages, token, callback) case types.GPT3Turbo16k, types.GPT3Turbo16k0301, types.GPT3Turbo16k0613: - NativeStreamRequest(types.GPT3Turbo16k, viper.GetString("openai.user_endpoint"), viper.GetString("openai.user"), messages, token, callback) + NativeStreamRequest(types.GPT3Turbo16k0613, viper.GetString("openai.user_endpoint"), viper.GetString("openai.user"), messages, token, callback) + case types.Claude2, + types.Claude2100k: + NativeStreamRequest(model, viper.GetString("claude.endpoint"), viper.GetString("claude.key"), messages, token, callback) default: - NativeStreamRequest(types.GPT3Turbo, viper.GetString("openai.anonymous_endpoint"), viper.GetString("openai.anonymous"), messages, token, callback) + NativeStreamRequest(types.GPT3Turbo0613, viper.GetString("openai.anonymous_endpoint"), viper.GetString("openai.anonymous"), messages, token, callback) } } diff --git a/app/src/conf.ts b/app/src/conf.ts index 73753ff..26685ac 100644 --- a/app/src/conf.ts +++ b/app/src/conf.ts @@ -1,7 +1,7 @@ import axios from "axios"; export const version: string = "2.8.0"; -export const deploy: boolean = false; +export const deploy: boolean = true; export let rest_api: string = "http://localhost:8094"; export let ws_api: string = "ws://localhost:8094"; diff --git a/auth/usage.go b/auth/usage.go index 567fcfb..4470ae0 100644 --- a/auth/usage.go +++ b/auth/usage.go @@ -37,6 +37,8 @@ func CountInputToken(model string, v []types.ChatGPTMessage) float32 { return float32(utils.CountTokenPrice(v, model)) / 1000 * 2.1 case types.GPT432k: return float32(utils.CountTokenPrice(v, model)) / 1000 * 2.1 * 2 + case types.Claude2, types.Claude2100k: + return 0 default: return 0 } @@ -52,6 +54,8 @@ func CountOutputToken(model string, t int) float32 { return float32(t*utils.GetWeightByModel(model)) / 1000 * 4.3 case types.GPT432k: return float32(t*utils.GetWeightByModel(model)) / 1000 * 8.6 + case types.Claude2, types.Claude2100k: + return 0 default: return 0 } diff --git a/types/globals.go b/types/globals.go index 333ed11..881202d 100644 --- a/types/globals.go +++ b/types/globals.go @@ -42,6 +42,11 @@ var GPT432kArray = []string{ GPT432k0613, } +var ClaudeModelArray = []string{ + Claude2, + Claude2100k, +} + func in(value string, slice []string) bool { for _, item := range slice { if item == value { @@ -58,3 +63,7 @@ func IsGPT4Model(model string) bool { func IsGPT3TurboModel(model string) bool { return in(model, GPT3TurboArray) || in(model, GPT3Turbo16kArray) } + +func IsClaudeModel(model string) bool { + return in(model, ClaudeModelArray) +} diff --git a/utils/tokenizer.go b/utils/tokenizer.go index 44d8e5c..3ee8a96 100644 --- a/utils/tokenizer.go +++ b/utils/tokenizer.go @@ -13,6 +13,9 @@ import ( func GetWeightByModel(model string) int { switch model { + case types.Claude2, + types.Claude2100k: + return 2 case types.GPT432k, types.GPT432k0613, types.GPT432k0314: @@ -36,6 +39,9 @@ func GetWeightByModel(model string) int { } else if strings.Contains(model, types.GPT4) { // warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613. return GetWeightByModel(types.GPT40613) + } else if strings.Contains(model, types.Claude2) { + // warning: claude-2 may update over time. Returning num tokens assuming claude-2-100k. + return GetWeightByModel(types.Claude2100k) } else { // not implemented: See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens panic(fmt.Errorf("not implemented for model %s", model))