Skip to content

项目配置说明

binary-husky edited this page Mar 17, 2024 · 17 revisions

1 配置说明

flowchart LR
    A["请使用且仅使用一种方法配置本项目"]
    A --> D["(最最高优先级)修改环境变量"]
    D --> F["Python/Anaconda直接运行:通过当前终端环境的环境变量"]
    F --> F2["Linux下使用export命令"]
    F --> F1["Windows下使用set命令"]
    D --> E["Docker运行:修改docker-compose.yml(等价于修改容器内部的环境变量)"]
    A --> C["(高优先级)创建并修改config_private.py"]
    A --> B["(低优先级)直接修改config.py"]

本项目的所有配置都集中在config.py中。 修改配置有三种方法,您只需要选择其中一种即可,不建议同时使用多种配置方法:

  • 直接修改config.py
  • 创建并修改config_private.py
  • 修改环境变量(修改docker-compose.yml等价于修改容器内部的环境变量)

注意:如果您使用docker-compose部署,请修改docker-compose(等价于修改容器内部的环境变量)

2 读取优先级说明

配置读取优先级:环境变量 > config_private.py > config.py

如果遇到配置无效的情况,必然是因为低优先级的配置被高优先级的配置覆盖而导致的

3 关于config_private.py说明

程序运行时会优先检查是否存在名为config_private.py的私密配置文件,并用其中的配置覆盖config.py的同名配置。

因此,如果您能理解我们的配置读取逻辑,我们强烈建议您在config.py旁边创建一个名为config_private.py的新配置文件,并把config.py中的配置转移(复制)到config_private.py中(仅复制您修改过的配置条目即可)。

4 环境变量格式说明

环境变量具有最高的读取优先级

环境变量遵从python的语法规范,例如AVAIL_LLM_MODELS这个环境变量,它在config中的定义是:

AVAIL_LLM_MODELS=["model-1", "model-2"]

那么,

  • 在ubuntu环境下,设定该环境变量的bash命令是:
export AVAIL_LLM_MODELS='["model-1","model-2"]'

在ubuntu环境下,设定环境变量之后,通过echo $AVAIL_LLM_MODELS检查环境变量是否设置成功。

  • 在docker-compose中,设定该环境变量的命令是:
    environment:
      AVAIL_LLM_MODELS: '["model-1","model-2"]'

如果您觉得这还不够清楚,可以直接参考我们的docker-compose文件:

https://github.com/binary-husky/gpt_academic/blob/master/docker-compose.yml

5 在线大模型配置关联关系示意图

在线大模型配置关联关系示意图
│
├── "gpt-3.5-turbo" 等openai模型
│   ├── API_KEY
│   ├── CUSTOM_API_KEY_PATTERN(不常用)
│   ├── API_ORG(不常用)
│   └── API_URL_REDIRECT(不常用)
│
├── "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
│   └── XFYUN_API_KEY
│
├── "claude-1-100k" 等claude模型
│   └── ANTHROPIC_API_KEY
│
├── "stack-claude"
│   ├── SLACK_CLAUDE_BOT_ID
│   └── SLACK_CLAUDE_USER_TOKEN
│
├── "qianfan" 百度千帆大模型库
│   ├── BAIDU_CLOUD_QIANFAN_MODEL
│   ├── BAIDU_CLOUD_API_KEY
│   └── BAIDU_CLOUD_SECRET_KEY
│
├── "zhipuai" 智谱AI大模型chatglm_turbo
│   ├── ZHIPUAI_API_KEY
│   └── ZHIPUAI_MODEL
│
└── "newbing" Newbing接口不再稳定,不推荐使用
    ├── NEWBING_STYLE
    └── NEWBING_COOKIES

6 用户图形界面布局依赖关系示意图

    
用户图形界面布局依赖关系示意图
│
├── CHATBOT_HEIGHT 对话窗的高度
├── CODE_HIGHLIGHT 代码高亮
├── LAYOUT 窗口布局
├── DARK_MODE 暗色模式 / 亮色模式
├── DEFAULT_FN_GROUPS 插件分类默认选项
├── THEME 色彩主题
├── AUTO_CLEAR_TXT 是否在提交时自动清空输入框
├── ADD_WAIFU 加一个live2d装饰
├── ALLOW_RESET_CONFIG 是否允许通过自然语言描述修改本页的配置,该功能具有一定的危险性

7 插件在线服务配置依赖关系示意图

插件在线服务配置依赖关系示意图
│
├── 语音功能
│   ├── ENABLE_AUDIO
│   ├── ALIYUN_TOKEN
│   ├── ALIYUN_APPKEY
│   ├── ALIYUN_ACCESSKEY
│   └── ALIYUN_SECRET
│
├── PDF文档精准解析
│   └── GROBID_URLS

8 具体配置说明

API_KEY

API_KEY = "sk-123456789xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx123456789"。
极少数情况下,还需要填写组织(格式如org-123456789abcdefghijklmno的),请向下翻,找 API_ORG 设置项,可同时填写多个API-KEY,用英文逗号分割,例如API_KEY = "sk-openaikey1,sk-openaikey2,fkxxxx-api2dkey3,azure-apikey4"

P.S. 有些官方key是API_KEY = "sess-wg61ZafYHpNz7FFwIH7HGZlbVqUVaeV5tatHCWpl"格式的 这样的APIKEY可以通过修改CUSTOM_API_KEY_PATTERN实现兼容: CUSTOM_API_KEY_PATTERN = r"sess-[a-zA-Z0-9]{40}"

USE_PROXY 和 proxies

代理相关问题集合: https://github.com/binary-husky/gpt_academic/issues/1

改为True应用代理,如果直接在海外服务器部署,此处不修改;如果使用本地或无地域限制的大模型时,此处也不需要修改

USE_PROXY = False
填写格式是 [协议]://  [地址] :[端口],填写之前不要忘记把USE_PROXY改成True,如果直接在海外服务器部署,此处不修改
        <配置教程&视频教程> https://github.com/binary-husky/gpt_academic/issues/1>
[协议] 常见协议无非socks5h/http; 例如 v2**y 和 ss* 的默认本地协议是socks5h; 而cl**h 的默认本地协议是http
[地址] 懂的都懂,不懂就填localhost或者127.0.0.1肯定错不了(localhost意思是代理软件安装在本机上)
[端口] 在代理软件的设置里找。虽然不同的代理软件界面不一样,但端口号都应该在最显眼的位置上

proxies代理网络的地址,打开你的网软件查看代理的协议(socks5h / http)、地址(localhost)和端口(11284)

proxies = {
    #          [协议]://  [地址]  :[端口]
    "http":  "socks5h://localhost:11284",  # 再例如  "http":  "http://127.0.0.1:7890",
    "https": "socks5h://localhost:11284",  # 再例如  "https": "http://127.0.0.1:7890",
}
API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "https://reverse-proxy-url/v1/chat/completions"}
# 重新URL重新定向,实现更换API_URL的作用(高危设置! 常规情况下不要修改! 通过修改此设置,您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!)
# 格式: API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "在这里填写重定向的api.openai.com的URL"} 
# 举例: API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "https://reverse-proxy-url/v1/chat/completions"}
API_URL_REDIRECT = {}

DEFAULT_WORKER_NUM

多线程函数插件中,默认允许多少路线程同时访问OpenAI。Free trial users的限制是每分钟3次,Pay-as-you-go users的限制是每分钟3500次 一言以蔽之:免费(5刀)用户填3,OpenAI绑了信用卡的用户可以填 16 或者更高。提高限制请查询:https://platform.openai.com/docs/guides/rate-limits/overview

THEME

色彩主题,可选 ["Default", "Chuanhu-Small-and-Beautiful", "High-Contrast"]

CHATBOT_HEIGHT

对话窗的高度 (仅在LAYOUT="TOP-DOWN"时生效)

CHATBOT_HEIGHT = 1115

CODE_HIGHLIGHT

代码高亮

CODE_HIGHLIGHT = True

LAYOUT 和 DARK_MODE

窗口布局

LAYOUT = "LEFT-RIGHT"   # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布局)

DARK_MODE = True        # 暗色模式 / 亮色模式

TIMEOUT_SECONDS

发送请求到OpenAI后,等待多久判定为超时

TIMEOUT_SECONDS = 30

WEB_PORT

网页的端口, -1代表随机端口

WEB_PORT = -1

MAX_RETRY

如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制

MAX_RETRY = 2

DEFAULT_FN_GROUPS

插件分类默认选项

DEFAULT_FN_GROUPS = ['对话', '编程', '学术']

LLM_MODEL

模型选择是 (注意: LLM_MODEL是默认选中的模型, 它必须被包含在AVAIL_LLM_MODELS列表中 )

LLM_MODEL = "gpt-3.5-turbo" # 可选 ↓↓↓

AVAIL_LLM_MODELS

模型下拉菜单

AVAIL_LLM_MODELS = ["gpt-3.5-turbo-16k", "gpt-3.5-turbo", "azure-gpt-3.5", "api2d-gpt-3.5-turbo", 
                    "gpt-4", "api2d-gpt-4", "chatglm", "moss", "newbing", "stack-claude"]

P.S. 其他可用的模型还包括

["qianfan", "llama2", "qwen", "gpt-3.5-turbo-0613", "gpt-3.5-turbo-16k-0613", 
"spark", "sparkv2", "chatglm_onnx", "claude-1-100k", "claude-2", "internlm", "jittorllms_pangualpha", "jittorllms_llama"]

BAIDU_CLOUD_*

百度千帆(LLM_MODEL="qianfan")

BAIDU_CLOUD_API_KEY = ''
BAIDU_CLOUD_SECRET_KEY = ''
BAIDU_CLOUD_QIANFAN_MODEL = 'ERNIE-Bot'    # 可选 "ERNIE-Bot"(文心一言), "ERNIE-Bot-turbo", "BLOOMZ-7B", "Llama-2-70B-Chat", "Llama-2-13B-Chat", "Llama-2-7B-Chat"

CHATGLM_PTUNING_CHECKPOINT

如果使用ChatGLM2微调模型,请把 LLM_MODEL="chatglmft",并在此处指定模型路径

CHATGLM_PTUNING_CHECKPOINT = "" # 例如"/home/hmp/ChatGLM2-6B/ptuning/output/6b-pt-128-1e-2/checkpoint-100"

LOCAL_MODEL_DEVICE

本地LLM模型如ChatGLM的执行方式 CPU/GPU

LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda"

LOCAL_MODEL_QUANT

本地LLM量化

LOCAL_MODEL_QUANT = "FP16" # 默认 "FP16" "INT4" 启用量化INT4版本 "INT8" 启用量化INT8版本

CONCURRENT_COUNT

设置gradio的并行线程数(不需要修改)

CONCURRENT_COUNT = 100

AUTO_CLEAR_TXT

是否在提交时自动清空输入框

AUTO_CLEAR_TXT = False

ADD_WAIFU

加一个live2d装饰

ADD_WAIFU = False

AUTHENTICATION

设置用户名和密码(不需要修改)(相关功能不稳定,与gradio版本和网络都相关,如果本地使用不建议加这个)

AUTHENTICATION = [("username", "password"), ("username2", "password2"), ...]

CUSTOM_PATH (需要配合修改main.py才能生效!)

如果需要在二级路径下运行(常规情况下,不要修改!!)(需要配合修改main.py才能生效!)

CUSTOM_PATH = "/"

API_ORG

极少数情况下,openai的官方KEY需要伴随组织编码(格式如org-xxxxxxxxxxxxxxxxxxxxxxxx)使用

API_ORG = ""

SLACK_CLAUDE_*

如果需要使用Slack Claude,使用教程详情见 request_llm/README.md

SLACK_CLAUDE_BOT_ID = ''   
SLACK_CLAUDE_USER_TOKEN = ''

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

Newbing*

使用Newbing

NEWBING_STYLE = "creative"  # ["creative", "balanced", "precise"]
NEWBING_COOKIES = """
put your new bing cookies here
"""

AUDIO

阿里云实时语音识别 配置难度较高 仅建议高手用户使用 参考 https://github.com/binary-husky/gpt_academic/blob/master/docs/use_audio.md

ENABLE_AUDIO = False
ALIYUN_TOKEN=""     # 例如 f37f30e0f9934c34a992f6f64f7eba4f
ALIYUN_APPKEY=""    # 例如 RoPlZrM88DnAFkZK
ALIYUN_ACCESSKEY="" # (无需填写)
ALIYUN_SECRET=""    # (无需填写)

XFYUN*

接入讯飞星火大模型 https://console.xfyun.cn/services/iat

XFYUN_APPID = "00000000"
XFYUN_API_SECRET = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
XFYUN_API_KEY = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

ANTHROPIC_API_KEY

Claude API KEY
ANTHROPIC_API_KEY = ""

CUSTOM_API_KEY_PATTERN

自定义API KEY格式

CUSTOM_API_KEY_PATTERN = ""

HUGGINGFACE_ACCESS_TOKEN

HUGGINGFACE的TOKEN,下载LLAMA时起作用 https://huggingface.co/docs/hub/security-tokens
HUGGINGFACE_ACCESS_TOKEN = "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"

GROBID_URLS

GROBID服务器地址(填写多个可以均衡负载),用于高质量地读取PDF文档

获取方法:复制以下空间https://huggingface.co/spaces/qingxu98/grobid,设为public,然后GROBID_URL = "https://(你的hf用户名如qingxu98)-(你的填写的空间名如grobid).hf.space"

GROBID_URLS = [
    "https://qingxu98-grobid.hf.space","https://qingxu98-grobid2.hf.space","https://qingxu98-grobid3.hf.space",
    "https://shaocongma-grobid.hf.space","https://FBR123-grobid.hf.space", "https://yeku-grobid.hf.space", 
]

ALLOW_RESET_CONFIG

是否允许通过自然语言描述修改本页的配置,该功能具有一定的危险性,默认关闭
ALLOW_RESET_CONFIG = False