mirror of
https://github.com/Yanyutin753/RefreshToV1Api.git
synced 2025-10-16 00:00:45 +00:00
[feat] 支持自定义Arkose Token获取url
This commit is contained in:
@@ -113,6 +113,10 @@
|
||||
|
||||
- `use_oaiusercontent_url`: 是否使用OpenAI官方图片域名,可选值为:`true`、`false`,默认为 `false`,如果设置为 `true`,则会使用OpenAI的图片域名,否则使用 `backend_container_url` 参数的值作为图片域名。如果设置为 `true`,则 `backend_container_url` 可以不填且图片不会下载到image文件夹中。
|
||||
|
||||
- `custom_arkose_url`: 是否需要自定义Arkose Token获取地址,可选值为:`true`、`false`,默认为 `false`,如果设置为 `true`,则会使用 `arkose_urls` 参数的值作为Arkose Token获取地址,否则使用默认的PandoraNext Arkose Token获取地址。
|
||||
|
||||
- `arkose_urls`: Arkose Token获取地址,如果 `custom_arkose_url` 为 `false`,则该参数无效,如果 `custom_arkose_url` 为 `true`,则该参数必填,且需要填写为可以获取Arkose Token的地址列表,例如:`https://arkose-proxy-1.pandoranext.com/<proxy-prefix>,https://arkose-proxy-2.pandoranext.com/<proxy-prefix>`,支持同时设置多个Arkose Token获取地址,从前往后轮询调用,如果第一个获取失败则自动从第二个获取,以此类推。
|
||||
|
||||
- `bot_mode`
|
||||
|
||||
- `enabled`: 用于设置是否开启 Bot 模式,可选值为:`true`、`false`,默认为 `false`,开启 Bot 模式后,将可以自定义联网插件的引引用、绘图插件的markdown格式的图片以及插件执行过程的输出,仅建议在 QQ、微信机器人等 Bot 项目中开启,网页应用请不要开启。
|
||||
|
@@ -13,6 +13,8 @@
|
||||
"gpt_3_5_new_name": "gpt-3.5-turbo",
|
||||
"need_delete_conversation_after_response": "true",
|
||||
"use_oaiusercontent_url": "false",
|
||||
"custom_arkose_url": "false",
|
||||
"arkose_urls": "",
|
||||
"bot_mode": {
|
||||
"enabled": "false",
|
||||
"enabled_markdown_image_output": "false",
|
||||
|
51
main.py
51
main.py
@@ -58,6 +58,11 @@ NEED_DELETE_CONVERSATION_AFTER_RESPONSE = CONFIG.get('need_delete_conversation_a
|
||||
|
||||
USE_OAIUSERCONTENT_URL = CONFIG.get('use_oaiusercontent_url', 'false').lower() == 'true'
|
||||
|
||||
CUSTOM_ARKOSE = CONFIG.get('custom_arkose_url', 'false').lower() == 'true'
|
||||
|
||||
ARKOSE_URLS = CONFIG.get('arkose_urls', "")
|
||||
|
||||
|
||||
# 设置日志级别
|
||||
log_level_dict = {
|
||||
'DEBUG': logging.DEBUG,
|
||||
@@ -175,9 +180,9 @@ CORS(app, resources={r"/images/*": {"origins": "*"}})
|
||||
PANDORA_UPLOAD_URL = 'files.pandoranext.com'
|
||||
|
||||
|
||||
VERSION = '0.4.0'
|
||||
VERSION = '0.4.1'
|
||||
# VERSION = 'test'
|
||||
UPDATE_INFO = '支持文件生成'
|
||||
UPDATE_INFO = '支持自定义Arkose Token获取url列表'
|
||||
# UPDATE_INFO = '【仅供临时测试使用】 '
|
||||
|
||||
with app.app_context():
|
||||
@@ -249,6 +254,11 @@ with app.app_context():
|
||||
|
||||
logger.info(f"use_oaiusercontent_url: {USE_OAIUSERCONTENT_URL}")
|
||||
|
||||
logger.info(f"custom_arkose_url: {CUSTOM_ARKOSE}")
|
||||
|
||||
if CUSTOM_ARKOSE:
|
||||
logger.info(f"arkose_urls: {ARKOSE_URLS}")
|
||||
|
||||
logger.info(f"==========================================")
|
||||
|
||||
|
||||
@@ -296,13 +306,32 @@ with app.app_context():
|
||||
|
||||
# 定义获取 token 的函数
|
||||
def get_token():
|
||||
url = f"{BASE_URL}{PROXY_API_PREFIX}/api/arkose/token"
|
||||
payload = {'type': 'gpt-4'}
|
||||
response = requests.post(url, data=payload)
|
||||
if response.status_code == 200:
|
||||
return response.json().get('token')
|
||||
else:
|
||||
return None
|
||||
# 从环境变量获取 URL 列表,并去除每个 URL 周围的空白字符
|
||||
api_urls = [url.strip() for url in ARKOSE_URLS.split(",")]
|
||||
|
||||
for url in api_urls:
|
||||
if not url:
|
||||
continue
|
||||
|
||||
full_url = f"{url}/api/arkose/token"
|
||||
payload = {'type': 'gpt-4'}
|
||||
|
||||
try:
|
||||
response = requests.post(full_url, data=payload)
|
||||
if response.status_code == 200:
|
||||
token = response.json().get('token')
|
||||
# 确保 token 字段存在且不是 None 或空字符串
|
||||
if token:
|
||||
logger.debug(f"成功从 {url} 获取 arkose token")
|
||||
return token
|
||||
else:
|
||||
logger.error(f"获取的 token 响应无效: {token}")
|
||||
else:
|
||||
logger.error(f"获取 arkose token 失败: {response.status_code}, {response.text}")
|
||||
except requests.RequestException as e:
|
||||
logger.error(f"请求异常: {e}")
|
||||
|
||||
return None
|
||||
|
||||
import os
|
||||
|
||||
@@ -640,6 +669,10 @@ def send_text_prompt_and_get_response(messages, api_key, stream, model):
|
||||
payload = generate_gpts_payload(model, formatted_messages)
|
||||
if not payload:
|
||||
raise Exception('model is not accessible')
|
||||
if ori_model_name != 'gpt-3.5-turbo':
|
||||
if CUSTOM_ARKOSE:
|
||||
token = get_token()
|
||||
payload["arkose_token"] = token
|
||||
logger.debug(f"payload: {payload}")
|
||||
response = requests.post(url, headers=headers, json=payload, stream=True)
|
||||
# print(response)
|
||||
|
Reference in New Issue
Block a user