@@ -2,7 +2,6 @@ package remote
22
33import (
44 "context"
5- "errors"
65 "fmt"
76 "net/url"
87 "os"
@@ -16,6 +15,7 @@ import (
1615 env2 "github.com/gptscript-ai/gptscript/pkg/env"
1716 "github.com/gptscript-ai/gptscript/pkg/loader"
1817 "github.com/gptscript-ai/gptscript/pkg/openai"
18+ "github.com/gptscript-ai/gptscript/pkg/prompt"
1919 "github.com/gptscript-ai/gptscript/pkg/runner"
2020 "github.com/gptscript-ai/gptscript/pkg/types"
2121)
@@ -63,21 +63,7 @@ func (c *Client) ListModels(ctx context.Context, providers ...string) (result []
6363 }
6464 models , err := client .ListModels (ctx , "" )
6565 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
8167 }
8268 for _ , model := range models {
8369 result = append (result , model + " from " + provider )
@@ -121,6 +107,16 @@ func (c *Client) clientFromURL(apiURL string) (*openai.Client, error) {
121107 return nil , err
122108 }
123109 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+
124120 return openai .NewClient (c .cliCfg , c .credCtx , openai.Options {
125121 BaseURL : apiURL ,
126122 Cache : c .cache ,
@@ -180,3 +176,7 @@ func (c *Client) load(ctx context.Context, toolName string) (*openai.Client, err
180176 c .clients [toolName ] = client
181177 return client , nil
182178}
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