Allow configuration of backend parameters from environment

This commit is contained in:
Jeff Epler 2023-09-24 14:50:09 -05:00
parent 4a963fe23b
commit d7ad89f411
No known key found for this signature in database
GPG key ID: D5BF15AB975AB4DE

View file

@ -5,6 +5,7 @@
import datetime
import importlib
import os
import pathlib
import pkgutil
import subprocess
@ -35,8 +36,28 @@ def new_session_path(opt_path=None):
)
def configure_api_from_environment(api_name, api):
if not hasattr(api, "parameters"):
return
for field in fields(api.parameters):
envvar = f"CHAP_{api_name.upper()}_{field.name.upper()}"
value = os.environ.get(envvar)
if value is None:
continue
try:
tv = field.type(value)
except ValueError as e:
raise click.BadParameter(
f"Invalid value for {field.name} with value {value}: {e}"
) from e
setattr(api.parameters, field.name, tv)
def get_api(name="openai_chatgpt"):
return importlib.import_module(f"{__package__}.backends.{name}").factory()
result = importlib.import_module(f"{__package__}.backends.{name}").factory()
configure_api_from_environment(name, result)
return result
def ask(*args, **kw):