mirror of
https://github.com/RockChinQ/QChatGPT.git
synced 2024-11-16 11:42:44 +08:00
243 lines
8.5 KiB
Python
243 lines
8.5 KiB
Python
from __future__ import annotations
|
|
|
|
from . import entities
|
|
from ...core import app
|
|
|
|
from .apis import chatcmpl
|
|
from . import token
|
|
from .tokenizers import tiktoken
|
|
|
|
|
|
class ModelManager:
|
|
|
|
ap: app.Application
|
|
|
|
model_list: list[entities.LLMModelInfo]
|
|
|
|
def __init__(self, ap: app.Application):
|
|
self.ap = ap
|
|
self.model_list = []
|
|
|
|
async def get_model_by_name(self, name: str) -> entities.LLMModelInfo:
|
|
"""通过名称获取模型
|
|
"""
|
|
for model in self.model_list:
|
|
if model.name == name:
|
|
return model
|
|
raise ValueError(f"不支持模型: {name} , 请检查配置文件")
|
|
|
|
async def initialize(self):
|
|
openai_chat_completion = chatcmpl.OpenAIChatCompletion(self.ap)
|
|
await openai_chat_completion.initialize()
|
|
openai_token_mgr = token.TokenManager(self.ap, list(self.ap.provider_cfg.data['openai-config']['api-keys']))
|
|
|
|
tiktoken_tokenizer = tiktoken.Tiktoken(self.ap)
|
|
|
|
model_list = [
|
|
entities.LLMModelInfo(
|
|
name="gpt-3.5-turbo",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=4096
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-3.5-turbo-1106",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=16385
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-3.5-turbo-16k",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=16385
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-3.5-turbo-0613",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=4096
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-3.5-turbo-16k-0613",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=16385
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-3.5-turbo-0301",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=4096
|
|
)
|
|
]
|
|
|
|
self.model_list.extend(model_list)
|
|
|
|
gpt4_model_list = [
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-0125-preview",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-turbo-preview",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-1106-preview",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-vision-preview",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=8192
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-0613",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=8192
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-32k",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=32768
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="gpt-4-32k-0613",
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=True,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=32768
|
|
)
|
|
]
|
|
|
|
self.model_list.extend(gpt4_model_list)
|
|
|
|
one_api_model_list = [
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/SparkDesk",
|
|
model_name='SparkDesk',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=8192
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/chatglm_pro",
|
|
model_name='chatglm_pro',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/chatglm_std",
|
|
model_name='chatglm_std',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/chatglm_lite",
|
|
model_name='chatglm_lite',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=128000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/qwen-v1",
|
|
model_name='qwen-v1',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=6000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/qwen-plus-v1",
|
|
model_name='qwen-plus-v1',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=30000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/ERNIE-Bot",
|
|
model_name='ERNIE-Bot',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=2000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/ERNIE-Bot-turbo",
|
|
model_name='ERNIE-Bot-turbo',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=7000
|
|
),
|
|
entities.LLMModelInfo(
|
|
name="OneAPI/gemini-pro",
|
|
model_name='gemini-pro',
|
|
token_mgr=openai_token_mgr,
|
|
requester=openai_chat_completion,
|
|
tool_call_supported=False,
|
|
tokenizer=tiktoken_tokenizer,
|
|
max_tokens=30720
|
|
),
|
|
]
|
|
|
|
self.model_list.extend(one_api_model_list)
|