28
28
const relativeToBinaryPath = "<me>"
29
29
30
30
type GPTScript struct {
31
- url string
32
- globalEnv [] string
31
+ url string
32
+ globalOpts GlobalOptions
33
33
}
34
34
35
35
func NewGPTScript (opts ... GlobalOptions ) (* GPTScript , error ) {
@@ -40,7 +40,7 @@ func NewGPTScript(opts ...GlobalOptions) (*GPTScript, error) {
40
40
41
41
disableServer := os .Getenv ("GPTSCRIPT_DISABLE_SERVER" ) == "true"
42
42
43
- if serverURL == "" && disableServer {
43
+ if serverURL == "" {
44
44
serverURL = os .Getenv ("GPTSCRIPT_URL" )
45
45
}
46
46
@@ -96,11 +96,8 @@ func NewGPTScript(opts ...GlobalOptions) (*GPTScript, error) {
96
96
serverURL = strings .TrimSpace (serverURL )
97
97
}
98
98
g := & GPTScript {
99
- url : "http://" + serverURL ,
100
- }
101
-
102
- if disableServer {
103
- g .globalEnv = opt .Env [:]
99
+ url : "http://" + serverURL ,
100
+ globalOpts : opt ,
104
101
}
105
102
106
103
return g , nil
@@ -132,7 +129,7 @@ func (g *GPTScript) Close() {
132
129
}
133
130
134
131
func (g * GPTScript ) Evaluate (ctx context.Context , opts Options , tools ... ToolDef ) (* Run , error ) {
135
- opts .Env = append (g .globalEnv , opts .Env ... )
132
+ opts .GlobalOptions = completeGlobalOptions (g .globalOpts , opts .GlobalOptions )
136
133
return (& Run {
137
134
url : g .url ,
138
135
requestPath : "evaluate" ,
@@ -143,7 +140,7 @@ func (g *GPTScript) Evaluate(ctx context.Context, opts Options, tools ...ToolDef
143
140
}
144
141
145
142
func (g * GPTScript ) Run (ctx context.Context , toolPath string , opts Options ) (* Run , error ) {
146
- opts .Env = append (g .globalEnv , opts .Env ... )
143
+ opts .GlobalOptions = completeGlobalOptions (g .globalOpts , opts .GlobalOptions )
147
144
return (& Run {
148
145
url : g .url ,
149
146
requestPath : "run" ,
@@ -281,9 +278,28 @@ func (g *GPTScript) ListTools(ctx context.Context) (string, error) {
281
278
return out , nil
282
279
}
283
280
281
+ type ListModelsOptions struct {
282
+ Providers []string
283
+ CredentialOverrides []string
284
+ }
285
+
284
286
// ListModels will list all the available models.
285
- func (g * GPTScript ) ListModels (ctx context.Context ) ([]string , error ) {
286
- out , err := g .runBasicCommand (ctx , "list-models" , nil )
287
+ func (g * GPTScript ) ListModels (ctx context.Context , opts ... ListModelsOptions ) ([]string , error ) {
288
+ var o ListModelsOptions
289
+ for _ , opt := range opts {
290
+ o .Providers = append (o .Providers , opt .Providers ... )
291
+ o .CredentialOverrides = append (o .CredentialOverrides , opt .CredentialOverrides ... )
292
+ }
293
+
294
+ if g .globalOpts .DefaultModelProvider != "" {
295
+ o .Providers = append (o .Providers , g .globalOpts .DefaultModelProvider )
296
+ }
297
+
298
+ out , err := g .runBasicCommand (ctx , "list-models" , map [string ]any {
299
+ "providers" : o .Providers ,
300
+ "env" : g .globalOpts .Env ,
301
+ "credentialOverrides" : o .CredentialOverrides ,
302
+ })
287
303
if err != nil {
288
304
return nil , err
289
305
}
0 commit comments