@@ -2,7 +2,6 @@ package remote
2
2
3
3
import (
4
4
"context"
5
- "errors"
6
5
"fmt"
7
6
"net/url"
8
7
"os"
@@ -16,6 +15,7 @@ import (
16
15
env2 "github.com/gptscript-ai/gptscript/pkg/env"
17
16
"github.com/gptscript-ai/gptscript/pkg/loader"
18
17
"github.com/gptscript-ai/gptscript/pkg/openai"
18
+ "github.com/gptscript-ai/gptscript/pkg/prompt"
19
19
"github.com/gptscript-ai/gptscript/pkg/runner"
20
20
"github.com/gptscript-ai/gptscript/pkg/types"
21
21
)
@@ -63,21 +63,7 @@ func (c *Client) ListModels(ctx context.Context, providers ...string) (result []
63
63
}
64
64
models , err := client .ListModels (ctx , "" )
65
65
if err != nil {
66
- // If we got back an InvalidAuthError, then we know it came from the OpenAI client, and we can
67
- // try to get the credential from the cred store.
68
- if errors .Is (err , openai.InvalidAuthError {}) {
69
- if err := client .RetrieveAPIKey (); err != nil {
70
- return nil , err
71
- }
72
-
73
- // Now that the API key has been retrieved, try to list models again.
74
- models , err = client .ListModels (ctx , "" )
75
- if err != nil {
76
- return nil , err
77
- }
78
- } else {
79
- return nil , err
80
- }
66
+ return nil , err
81
67
}
82
68
for _ , model := range models {
83
69
result = append (result , model + " from " + provider )
@@ -121,6 +107,16 @@ func (c *Client) clientFromURL(apiURL string) (*openai.Client, error) {
121
107
return nil , err
122
108
}
123
109
env := "GPTSCRIPT_PROVIDER_" + env2 .ToEnvLike (parsed .Hostname ()) + "_API_KEY"
110
+ key := os .Getenv (env )
111
+
112
+ if key == "" {
113
+ var err error
114
+ key , err = c .retrieveAPIKey (env , apiURL )
115
+ if err != nil {
116
+ return nil , err
117
+ }
118
+ }
119
+
124
120
return openai .NewClient (c .cliCfg , c .credCtx , openai.Options {
125
121
BaseURL : apiURL ,
126
122
Cache : c .cache ,
@@ -180,3 +176,7 @@ func (c *Client) load(ctx context.Context, toolName string) (*openai.Client, err
180
176
c .clients [toolName ] = client
181
177
return client , nil
182
178
}
179
+
180
+ func (c * Client ) retrieveAPIKey (env , url string ) (string , error ) {
181
+ return prompt .GetModelProviderCredential (url , env , fmt .Sprintf ("Please provide your API key for %s" , url ), c .credCtx , c .cliCfg )
182
+ }
0 commit comments