neondaniel commited on
Commit
f1a3e74
1 Parent(s): d9f8b28

Add `huggingface_text` and `allowed_domains_override` configuration

Browse files
Files changed (1) hide show
  1. app.py +15 -7
app.py CHANGED
@@ -51,7 +51,10 @@ def init_config():
51
  global clients
52
  global llm_host_names
53
  config = json.loads(os.environ['CONFIG'])
 
54
  for name in config:
 
 
55
  model_personas = config[name].get("personas", {})
56
  client = Client(
57
  api_url=os.environ.get(config[name]['api_url'],
@@ -66,16 +69,21 @@ def init_config():
66
 
67
  def get_allowed_models(user_domain: str) -> List[str]:
68
  """
69
- Get a list of allowed endpoints for a specified user domain
 
 
70
  :param user_domain: User domain (i.e. neon.ai, google.com, guest)
71
  :return: List of allowed endpoints from configuration
72
  """
 
73
  allowed_endpoints = []
74
  for client in clients:
75
- if clients[client].config.inference.allowed_domains is None:
 
 
76
  # Allowed domains not specified; model is public
77
  allowed_endpoints.append(client)
78
- elif user_domain in clients[client].config.inference.allowed_domains:
79
  # User domain is in the allowed domain list
80
  allowed_endpoints.append(client)
81
  return allowed_endpoints
@@ -278,12 +286,12 @@ def init_gradio() -> gr.Blocks:
278
  return clean_state, *clean_state
279
 
280
  # Compile
281
- # TODO: Define a configuration structure for this information
282
- accordion_info = config.get("accordian_info") or \
283
  "Persona and LLM Options - Choose one:"
284
- version = config.get("version") or \
285
  f"v{datetime.now().strftime('%Y-%m-%d')}"
286
- title = config.get("title") or \
287
  f"Neon AI BrainForge Personas and Large Language Models ({version})"
288
 
289
  with gr.Accordion(label=accordion_info, open=True,
 
51
  global clients
52
  global llm_host_names
53
  config = json.loads(os.environ['CONFIG'])
54
+ reserved_keys = ("huggingface_text", "allowed_domains_override")
55
  for name in config:
56
+ if name in reserved_keys:
57
+ continue
58
  model_personas = config[name].get("personas", {})
59
  client = Client(
60
  api_url=os.environ.get(config[name]['api_url'],
 
69
 
70
  def get_allowed_models(user_domain: str) -> List[str]:
71
  """
72
+ Get a list of allowed endpoints for a specified user domain. Allowed domains
73
+ are configured in each model's configuration and may optionally be overridden
74
+ in the Gradio demo configuration.
75
  :param user_domain: User domain (i.e. neon.ai, google.com, guest)
76
  :return: List of allowed endpoints from configuration
77
  """
78
+ overrides = config.get("allowed_domains_override", {})
79
  allowed_endpoints = []
80
  for client in clients:
81
+ allowed_domains = overrides.get(client,
82
+ clients[client].config.inference.allowed_domains)
83
+ if allowed_domains is None:
84
  # Allowed domains not specified; model is public
85
  allowed_endpoints.append(client)
86
+ elif user_domain in allowed_domains:
87
  # User domain is in the allowed domain list
88
  allowed_endpoints.append(client)
89
  return allowed_endpoints
 
286
  return clean_state, *clean_state
287
 
288
  # Compile
289
+ hf_config = config.get("huggingface_text") or dict()
290
+ accordion_info = hf_config.get("accordian_info") or \
291
  "Persona and LLM Options - Choose one:"
292
+ version = hf_config.get("version") or \
293
  f"v{datetime.now().strftime('%Y-%m-%d')}"
294
+ title = hf_config.get("title") or \
295
  f"Neon AI BrainForge Personas and Large Language Models ({version})"
296
 
297
  with gr.Accordion(label=accordion_info, open=True,