Skip to content

Commit 760a3d5

Browse files
authored
chore(openai): Add support for HTTP proxy configuration. (#3)
- Add `net/http` and `net/url` packages to `commit.go` - Add `httpClient` and `proxy` variables to `commit.go` - Add `proxy` flag to `config.go` - Add `httpClient` argument to `New` function in `openai/openai.go` - Add conditional assignment to `cfg.HTTPClient` in `New` function of `openai/openai.go` fix #1
1 parent d49a07e commit 760a3d5

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

cmd/commit.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var commitCmd = &cobra.Command{
4646
viper.GetString("openai.api_key"),
4747
viper.GetString("openai.model"),
4848
viper.GetString("openai.org_id"),
49+
viper.GetString("openai.proxy"),
4950
)
5051
if err != nil {
5152
return err

cmd/config.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@ import (
1010
"github.com/spf13/viper"
1111
)
1212

13-
var availableKeys = []string{"openai.api_key", "openai.model", "openai.org_id", "output.lang"}
13+
var availableKeys = []string{"openai.api_key", "openai.model", "openai.org_id", "openai.proxy", "output.lang"}
1414

1515
func init() {
1616
configCmd.PersistentFlags().StringP("api_key", "k", "", "openai api key")
1717
configCmd.PersistentFlags().StringP("model", "m", "gpt-3.5-turbo", "openai model")
1818
configCmd.PersistentFlags().StringP("lang", "l", "en", "summarizing language uses English by default")
1919
configCmd.PersistentFlags().StringP("org_id", "o", "", "openai requesting organization")
20+
configCmd.PersistentFlags().StringP("proxy", "", "", "http proxy")
2021
_ = viper.BindPFlag("openai.org_id", configCmd.PersistentFlags().Lookup("org_id"))
2122
_ = viper.BindPFlag("openai.api_key", configCmd.PersistentFlags().Lookup("api_key"))
2223
_ = viper.BindPFlag("openai.model", configCmd.PersistentFlags().Lookup("model"))
24+
_ = viper.BindPFlag("openai.proxy", configCmd.PersistentFlags().Lookup("proxy"))
2325
_ = viper.BindPFlag("output.lang", configCmd.PersistentFlags().Lookup("lang"))
2426
}
2527

openai/openai.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package openai
33
import (
44
"context"
55
"errors"
6+
"net/http"
7+
"net/url"
8+
"time"
69

710
openai "github.com/sashabaranov/go-openai"
811
)
@@ -94,7 +97,7 @@ func (c *Client) Completion(
9497
}
9598

9699
// New for initialize OpenAI client interface.
97-
func New(token, model, orgID string) (*Client, error) {
100+
func New(token, model, orgID, proxyURL string) (*Client, error) {
98101
instance := &Client{}
99102
if token == "" {
100103
return nil, errors.New("missing api key")
@@ -110,6 +113,18 @@ func New(token, model, orgID string) (*Client, error) {
110113
if orgID != "" {
111114
cfg.OrgID = orgID
112115
}
116+
117+
if proxyURL != "" {
118+
httpClient := &http.Client{
119+
Timeout: time.Second * 10,
120+
}
121+
proxy, _ := url.Parse(proxyURL)
122+
httpClient.Transport = &http.Transport{
123+
Proxy: http.ProxyURL(proxy),
124+
}
125+
cfg.HTTPClient = httpClient
126+
}
127+
113128
instance.client = openai.NewClientWithConfig(cfg)
114129

115130
return instance, nil

0 commit comments

Comments
 (0)