forked from gptscript-ai/py-gptscript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopts.py
101 lines (93 loc) · 3.73 KB
/
opts.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import os
from typing import Mapping, Self
class GlobalOptions:
def __init__(
self,
apiKey: str = "",
baseURL: str = "",
defaultModelProvider: str = "",
defaultModel: str = "",
cacheDir: str = "",
env: Mapping[str, str] = None,
):
self.APIKey = apiKey
self.BaseURL = baseURL
self.DefaultModel = defaultModel
self.DefaultModelProvider = defaultModelProvider
self.CacheDir = cacheDir
if env is None:
env = os.environ
env_list = [f"{k}={v}" for k, v in env.items()]
self.Env = env_list
def merge(self, other: Self) -> Self:
cp = self.__class__()
if other is None:
return cp
cp.APIKey = other.APIKey if other.APIKey != "" else self.APIKey
cp.BaseURL = other.BaseURL if other.BaseURL != "" else self.BaseURL
cp.DefaultModel = other.DefaultModel if other.DefaultModel != "" else self.DefaultModel
cp.DefaultModelProvider = other.DefaultModelProvider if other.DefaultModelProvider != "" else self.DefaultModelProvider
cp.CacheDir = other.CacheDir if other.CacheDir != "" else self.CacheDir
cp.Env = (other.Env or []).extend(self.Env or [])
return cp
def toEnv(self):
if self.Env is None:
self.Env = [f"{k}={v}" for k, v in os.environ.items()]
if self.APIKey != "":
self.Env.append(f"OPENAI_API_KEY={self.APIKey}")
if self.BaseURL != "":
self.Env.append(f"OPENAI_BASE_URL={self.BaseURL}")
if self.DefaultModel != "":
self.Env.append(f"GPTSCRIPT_SDKSERVER_DEFAULT_MODEL={self.DefaultModel}")
if self.DefaultModelProvider != "":
self.Env.append(f"GPTSCRIPT_SDKSERVER_DEFAULT_MODEL_PROVIDER={self.DefaultModelProvider}")
class Options(GlobalOptions):
def __init__(self,
input: str = "",
disableCache: bool = False,
subTool: str = "",
workspace: str = "",
chatState: str = "",
confirm: bool = False,
prompt: bool = False,
credentialOverrides: list[str] = None,
credentialContexts: list[str] = None,
location: str = "",
env: list[str] = None,
forceSequential: bool = False,
apiKey: str = "",
baseURL: str = "",
defaultModelProvider: str = "",
defaultModel: str = "",
cacheDir: str = "",
):
super().__init__(apiKey, baseURL, defaultModelProvider, defaultModel, cacheDir)
self.input = input
self.disableCache = disableCache
self.subTool = subTool
self.workspace = workspace
self.chatState = chatState
self.confirm = confirm
self.prompt = prompt
self.credentialOverrides = credentialOverrides
self.credentialContexts = credentialContexts
self.location = location
self.env = env
self.forceSequential = forceSequential
def merge_global_opts(self, other: GlobalOptions) -> Self:
cp = super().merge(other)
if other is None:
return cp
cp.input = self.input
cp.disableCache = self.disableCache
cp.subTool = self.subTool
cp.workspace = self.workspace
cp.chatState = self.chatState
cp.confirm = self.confirm
cp.prompt = self.prompt
cp.credentialOverrides = self.credentialOverrides
cp.credentialContexts = self.credentialContexts
cp.location = self.location
cp.env = self.env
cp.forceSequential = self.forceSequential
return cp