binary-husky commited on
Commit
206f413
2 Parent(s): ae24fab f123493

Merge pull request #544 from yuxiaoyuan0406/suburl

Browse files
Files changed (3) hide show
  1. config.py +3 -0
  2. main.py +10 -7
  3. 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).launch(server_name="0.0.0.0", server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")
 
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