Merge pull request #1173 from Kilig947/azure_multiple_models
Azure 支持部署多个模型
This commit is contained in:
commit
50ecb45d63
16
config.py
16
config.py
@ -84,8 +84,9 @@ DEFAULT_FN_GROUPS = ['对话', '编程', '学术', '智能体']
|
||||
# 模型选择是 (注意: LLM_MODEL是默认选中的模型, 它*必须*被包含在AVAIL_LLM_MODELS列表中 )
|
||||
LLM_MODEL = "gpt-3.5-turbo" # 可选 ↓↓↓
|
||||
AVAIL_LLM_MODELS = ["gpt-3.5-turbo-16k", "gpt-3.5-turbo", "azure-gpt-3.5",
|
||||
"api2d-gpt-3.5-turbo", 'api2d-gpt-3.5-turbo-16k', "api2d-gpt-4",
|
||||
"gpt-4", "gpt-4-32k", "azure-gpt-4", "chatglm", "moss", "newbing", "stack-claude"]
|
||||
"api2d-gpt-3.5-turbo", 'api2d-gpt-3.5-turbo-16k',
|
||||
"gpt-4", "gpt-4-32k", "azure-gpt-4", "api2d-gpt-4",
|
||||
"chatglm", "moss", "newbing", "claude-2"]
|
||||
# P.S. 其他可用的模型还包括 ["qianfan", "llama2", "qwen", "gpt-3.5-turbo-0613", "gpt-3.5-turbo-16k-0613", "gpt-3.5-random"
|
||||
# "spark", "sparkv2", "sparkv3", "chatglm_onnx", "claude-1-100k", "claude-2", "internlm", "jittorllms_pangualpha", "jittorllms_llama"]
|
||||
|
||||
@ -140,12 +141,16 @@ SLACK_CLAUDE_BOT_ID = ''
|
||||
SLACK_CLAUDE_USER_TOKEN = ''
|
||||
|
||||
|
||||
# 如果需要使用AZURE 详情请见额外文档 docs\use_azure.md
|
||||
# 如果需要使用AZURE(方法一:单个azure模型部署)详情请见额外文档 docs\use_azure.md
|
||||
AZURE_ENDPOINT = "https://你亲手写的api名称.openai.azure.com/"
|
||||
AZURE_API_KEY = "填入azure openai api的密钥" # 建议直接在API_KEY处填写,该选项即将被弃用
|
||||
AZURE_ENGINE = "填入你亲手写的部署名" # 读 docs\use_azure.md
|
||||
|
||||
|
||||
# 如果需要使用AZURE(方法二:多个azure模型部署+动态切换)详情请见额外文档 docs\use_azure.md
|
||||
AZURE_CFG_ARRAY = {}
|
||||
|
||||
|
||||
# 使用Newbing (不推荐使用,未来将删除)
|
||||
NEWBING_STYLE = "creative" # ["creative", "balanced", "precise"]
|
||||
NEWBING_COOKIES = """
|
||||
@ -221,13 +226,16 @@ NUM_CUSTOM_BASIC_BTN = 4
|
||||
│ ├── API_ORG(不常用)
|
||||
│ └── API_URL_REDIRECT(不常用)
|
||||
│
|
||||
├── "azure-gpt-3.5" 等azure模型
|
||||
├── "azure-gpt-3.5" 等azure模型(单个azure模型,不需要动态切换)
|
||||
│ ├── API_KEY
|
||||
│ ├── AZURE_ENDPOINT
|
||||
│ ├── AZURE_API_KEY
|
||||
│ ├── AZURE_ENGINE
|
||||
│ └── API_URL_REDIRECT
|
||||
│
|
||||
├── "azure-gpt-3.5" 等azure模型(多个azure模型,需要动态切换)
|
||||
│ └── AZURE_CFG_ARRAY
|
||||
│
|
||||
├── "spark" 星火认知大模型 spark & sparkv2
|
||||
│ ├── XFYUN_APPID
|
||||
│ ├── XFYUN_API_SECRET
|
||||
|
@ -1,3 +1,42 @@
|
||||
# 微软Azure云接入指南
|
||||
|
||||
## 方法一(旧方法,只能接入一个Azure模型)
|
||||
|
||||
- 通过以下教程,获取AZURE_ENDPOINT,AZURE_API_KEY,AZURE_ENGINE,直接修改 config 配置即可。配置的修改方法见本项目wiki。
|
||||
|
||||
## 方法二(新方法,接入多个Azure模型,并支持动态切换)
|
||||
|
||||
- 在方法一的基础上,注册并获取多组 AZURE_ENDPOINT,AZURE_API_KEY,AZURE_ENGINE
|
||||
- 修改config中的AZURE_CFG_ARRAY配置项,按照格式填入多个Azure模型的配置,如下所示:
|
||||
|
||||
```
|
||||
AZURE_CFG_ARRAY = {
|
||||
"azure-gpt-3.5": # 第一个模型,azure模型必须以"azure-"开头
|
||||
{
|
||||
"AZURE_ENDPOINT": "https://你亲手写的api名称.openai.azure.com/",
|
||||
"AZURE_API_KEY": "cccccccccccccccccccccccccccccccc",
|
||||
"AZURE_ENGINE": "填入你亲手写的部署名1",
|
||||
"AZURE_MODEL_MAX_TOKEN": 4096,
|
||||
},
|
||||
"azure-gpt-4": # 第二个模型,azure模型必须以"azure-"开头
|
||||
{
|
||||
"AZURE_ENDPOINT": "https://你亲手写的api名称.openai.azure.com/",
|
||||
"AZURE_API_KEY": "dddddddddddddddddddddddddddddddd",
|
||||
"AZURE_ENGINE": "填入你亲手写的部署名2",
|
||||
"AZURE_MODEL_MAX_TOKEN": 8192,
|
||||
},
|
||||
"azure-gpt-3.5-16k": # 第三个模型,azure模型必须以"azure-"开头
|
||||
{
|
||||
"AZURE_ENDPOINT": "https://你亲手写的api名称.openai.azure.com/",
|
||||
"AZURE_API_KEY": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"AZURE_ENGINE": "填入你亲手写的部署名3",
|
||||
"AZURE_MODEL_MAX_TOKEN": 16384,
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
# 通过微软Azure云服务申请 Openai API
|
||||
|
||||
由于Openai和微软的关系,现在是可以通过微软的Azure云计算服务直接访问openai的api,免去了注册和网络的问题。
|
||||
|
@ -484,6 +484,30 @@ if "llama2" in AVAIL_LLM_MODELS: # llama2
|
||||
except:
|
||||
print(trimmed_format_exc())
|
||||
|
||||
# <-- 用于定义和切换多个azure模型 -->
|
||||
AZURE_CFG_ARRAY, = get_conf("AZURE_CFG_ARRAY")
|
||||
if len(AZURE_CFG_ARRAY) > 0:
|
||||
for azure_model_name, azure_cfg_dict in AZURE_CFG_ARRAY.items():
|
||||
# 可能会覆盖之前的配置,但这是意料之中的
|
||||
if not azure_model_name.startswith('azure'):
|
||||
raise ValueError("AZURE_CFG_ARRAY中配置的模型必须以azure开头")
|
||||
endpoint_ = azure_cfg_dict["AZURE_ENDPOINT"] + \
|
||||
f'openai/deployments/{azure_cfg_dict["AZURE_ENGINE"]}/chat/completions?api-version=2023-05-15'
|
||||
model_info.update({
|
||||
azure_model_name: {
|
||||
"fn_with_ui": chatgpt_ui,
|
||||
"fn_without_ui": chatgpt_noui,
|
||||
"endpoint": endpoint_,
|
||||
"azure_api_key": azure_cfg_dict["AZURE_API_KEY"],
|
||||
"max_token": azure_cfg_dict["AZURE_MODEL_MAX_TOKEN"],
|
||||
"tokenizer": tokenizer_gpt35, # tokenizer只用于粗估token数量
|
||||
"token_cnt": get_token_num_gpt35,
|
||||
}
|
||||
})
|
||||
if azure_model_name not in AVAIL_LLM_MODELS:
|
||||
azure_model_name += [azure_model_name]
|
||||
|
||||
|
||||
|
||||
|
||||
def LLM_CATCH_EXCEPTION(f):
|
||||
|
@ -23,8 +23,8 @@ import random
|
||||
# config_private.py放自己的秘密如API和代理网址
|
||||
# 读取时首先看是否存在私密的config_private配置文件(不受git管控),如果有,则覆盖原config文件
|
||||
from toolbox import get_conf, update_ui, is_any_api_key, select_api_key, what_keys, clip_history, trimmed_format_exc, is_the_upload_folder
|
||||
proxies, TIMEOUT_SECONDS, MAX_RETRY, API_ORG = \
|
||||
get_conf('proxies', 'TIMEOUT_SECONDS', 'MAX_RETRY', 'API_ORG')
|
||||
proxies, TIMEOUT_SECONDS, MAX_RETRY, API_ORG, AZURE_CFG_ARRAY = \
|
||||
get_conf('proxies', 'TIMEOUT_SECONDS', 'MAX_RETRY', 'API_ORG', 'AZURE_CFG_ARRAY')
|
||||
|
||||
timeout_bot_msg = '[Local Message] Request timeout. Network error. Please check proxy settings in config.py.' + \
|
||||
'网络错误,检查代理服务器是否可用,以及代理设置的格式是否正确,格式须是[协议]://[地址]:[端口],缺一不可。'
|
||||
@ -289,7 +289,11 @@ def generate_payload(inputs, llm_kwargs, history, system_prompt, stream):
|
||||
"Authorization": f"Bearer {api_key}"
|
||||
}
|
||||
if API_ORG.startswith('org-'): headers.update({"OpenAI-Organization": API_ORG})
|
||||
if llm_kwargs['llm_model'].startswith('azure-'): headers.update({"api-key": api_key})
|
||||
if llm_kwargs['llm_model'].startswith('azure-'):
|
||||
headers.update({"api-key": api_key})
|
||||
if llm_kwargs['llm_model'] in AZURE_CFG_ARRAY.keys():
|
||||
azure_api_key_unshared = AZURE_CFG_ARRAY[llm_kwargs['llm_model']]["AZURE_API_KEY"]
|
||||
headers.update({"api-key": azure_api_key_unshared})
|
||||
|
||||
conversation_cnt = len(history) // 2
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user