Spaces:
Sleeping
Sleeping
Merge pull request #544 from yuxiaoyuan0406/suburl
Browse files- config.py +3 -0
- main.py +10 -7
- toolbox.py +31 -0
config.py
CHANGED
@@ -60,3 +60,6 @@ AUTHENTICATION = []
|
|
60 |
# 重新URL重新定向,实现更换API_URL的作用(常规情况下,不要修改!!)
|
61 |
# 格式 {"https://api.openai.com/v1/chat/completions": "重定向的URL"}
|
62 |
API_URL_REDIRECT = {}
|
|
|
|
|
|
|
|
60 |
# 重新URL重新定向,实现更换API_URL的作用(常规情况下,不要修改!!)
|
61 |
# 格式 {"https://api.openai.com/v1/chat/completions": "重定向的URL"}
|
62 |
API_URL_REDIRECT = {}
|
63 |
+
|
64 |
+
# 如果你需要把网址放在二级地址下(常规情况下,不要修改!!)
|
65 |
+
CUSTOM_PATH = "/"
|
main.py
CHANGED
@@ -3,10 +3,10 @@ import os; os.environ['no_proxy'] = '*' # 避免代理网络产生意外污染
|
|
3 |
def main():
|
4 |
import gradio as gr
|
5 |
from request_llm.bridge_all import predict
|
6 |
-
from toolbox import format_io, find_free_port, on_file_uploaded, on_report_generated, get_conf, ArgsGeneralWrapper, DummyWith
|
7 |
# 建议您复制一个config_private.py放自己的秘密, 如API和代理网址, 避免不小心传github被别人看到
|
8 |
-
proxies, WEB_PORT, LLM_MODEL, CONCURRENT_COUNT, AUTHENTICATION, CHATBOT_HEIGHT, LAYOUT, API_KEY, AVAIL_LLM_MODELS = \
|
9 |
-
get_conf('proxies', 'WEB_PORT', 'LLM_MODEL', 'CONCURRENT_COUNT', 'AUTHENTICATION', 'CHATBOT_HEIGHT', 'LAYOUT', 'API_KEY', 'AVAIL_LLM_MODELS')
|
10 |
|
11 |
# 如果WEB_PORT是-1, 则随机选取WEB端口
|
12 |
PORT = find_free_port() if WEB_PORT <= 0 else WEB_PORT
|
@@ -176,17 +176,20 @@ def main():
|
|
176 |
def auto_opentab_delay():
|
177 |
import threading, webbrowser, time
|
178 |
print(f"如果浏览器没有自动打开,请复制并转到以下URL:")
|
179 |
-
print(f"\t(亮色主题): http://localhost:{PORT}")
|
180 |
-
print(f"\t(暗色主题): http://localhost:{PORT}/?__dark-theme=true")
|
181 |
def open():
|
182 |
time.sleep(2) # 打开浏览器
|
183 |
-
webbrowser.open_new_tab(f"http://localhost:{PORT}/?__dark-theme=true")
|
184 |
threading.Thread(target=open, name="open-browser", daemon=True).start()
|
185 |
threading.Thread(target=auto_update, name="self-upgrade", daemon=True).start()
|
186 |
threading.Thread(target=warm_up_modules, name="warm-up", daemon=True).start()
|
187 |
|
188 |
auto_opentab_delay()
|
189 |
-
demo.queue(concurrency_count=CONCURRENT_COUNT)
|
|
|
190 |
|
191 |
if __name__ == "__main__":
|
192 |
main()
|
|
|
|
|
|
3 |
def main():
|
4 |
import gradio as gr
|
5 |
from request_llm.bridge_all import predict
|
6 |
+
from toolbox import format_io, find_free_port, on_file_uploaded, on_report_generated, get_conf, ArgsGeneralWrapper, run_gradio, DummyWith
|
7 |
# 建议您复制一个config_private.py放自己的秘密, 如API和代理网址, 避免不小心传github被别人看到
|
8 |
+
proxies, WEB_PORT, LLM_MODEL, CONCURRENT_COUNT, AUTHENTICATION, CHATBOT_HEIGHT, LAYOUT, API_KEY, AVAIL_LLM_MODELS, CUSTOM_PATH = \
|
9 |
+
get_conf('proxies', 'WEB_PORT', 'LLM_MODEL', 'CONCURRENT_COUNT', 'AUTHENTICATION', 'CHATBOT_HEIGHT', 'LAYOUT', 'API_KEY', 'AVAIL_LLM_MODELS', 'CUSTOM_PATH')
|
10 |
|
11 |
# 如果WEB_PORT是-1, 则随机选取WEB端口
|
12 |
PORT = find_free_port() if WEB_PORT <= 0 else WEB_PORT
|
|
|
176 |
def auto_opentab_delay():
|
177 |
import threading, webbrowser, time
|
178 |
print(f"如果浏览器没有自动打开,请复制并转到以下URL:")
|
179 |
+
print(f"\t(亮色主题): http://localhost:{PORT}" + f"{CUSTOM_PATH}".replace('//','/'))
|
180 |
+
print(f"\t(暗色主题): http://localhost:{PORT}" + f"{CUSTOM_PATH}/?__dark-theme=true".replace('//','/'))
|
181 |
def open():
|
182 |
time.sleep(2) # 打开浏览器
|
183 |
+
webbrowser.open_new_tab(f"http://localhost:{PORT}" + f"{CUSTOM_PATH}/?__dark-theme=true".replace('//','/'))
|
184 |
threading.Thread(target=open, name="open-browser", daemon=True).start()
|
185 |
threading.Thread(target=auto_update, name="self-upgrade", daemon=True).start()
|
186 |
threading.Thread(target=warm_up_modules, name="warm-up", daemon=True).start()
|
187 |
|
188 |
auto_opentab_delay()
|
189 |
+
demo.queue(concurrency_count=CONCURRENT_COUNT)
|
190 |
+
run_gradio(demo, auth=AUTHENTICATION, port=PORT, custom_path=CUSTOM_PATH)
|
191 |
|
192 |
if __name__ == "__main__":
|
193 |
main()
|
194 |
+
|
195 |
+
|
toolbox.py
CHANGED
@@ -520,3 +520,34 @@ class DummyWith():
|
|
520 |
|
521 |
def __exit__(self, exc_type, exc_value, traceback):
|
522 |
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
520 |
|
521 |
def __exit__(self, exc_type, exc_value, traceback):
|
522 |
return
|
523 |
+
|
524 |
+
def run_gradio(demo, auth, port, custom_path):
|
525 |
+
def is_path_legal(path: str)->bool:
|
526 |
+
'''
|
527 |
+
check path for sub url
|
528 |
+
path: path to check
|
529 |
+
return value: do sub url wrap
|
530 |
+
'''
|
531 |
+
if path == "/": return True
|
532 |
+
if len(path) == 0:
|
533 |
+
print("ilegal custom path: {}\npath must not be empty\ndeploy on root url".format(path))
|
534 |
+
return False
|
535 |
+
if path[0] == '/':
|
536 |
+
if path[1] != '/':
|
537 |
+
print("deploy on sub-path {}".format(path))
|
538 |
+
return True
|
539 |
+
return False
|
540 |
+
print("ilegal custom path: {}\npath should begin with \'/\'\ndeploy on root url".format(path))
|
541 |
+
return False
|
542 |
+
|
543 |
+
if not is_path_legal(custom_path): raise RuntimeError('Ilegal custom path')
|
544 |
+
import uvicorn
|
545 |
+
import gradio as gr
|
546 |
+
from fastapi import FastAPI
|
547 |
+
app = FastAPI()
|
548 |
+
if custom_path != "/":
|
549 |
+
@app.get("/")
|
550 |
+
def read_main():
|
551 |
+
return {"message": f"Gradio is running at: {custom_path}"}
|
552 |
+
app = gr.mount_gradio_app(app, demo, path=custom_path)
|
553 |
+
uvicorn.run(app, host="0.0.0.0", port=port) # , auth=auth
|