ChatGPTをCLIから使いたい
Posted: | Categories: ChatGPT | Tags: chat-bot
背景
ChatGPTのAPIをCLIから使いたい。シェルスクリプトやvimから手軽に使えるようにしたい。 簡単なGolangのスクリプトを書いた tin-machine/gpt-cli
※ 2023年後半からclaude, codex, gemini cliなど各社cliを出してきたので情報が古いです
Golangのopenaiライブラリを使った際にタイムアウト設定する時に少しハマった
2024/06/17 NewClientWithConfig()で少しハマった
画像を添付しようとした際にエラーが出た。 応答に時間がかかっている可能性を考えてタイムアウトを伸ばそうと考えた。
// カスタムHTTPクライアントの作成
httpClient := &http.Client{
Timeout: 60 * time.Second, // タイムアウトを60秒に設定
}
// OpenAIクライアントの作成
config := openai.DefaultConfig(os.Getenv("OPENAI_API_KEY"))
config.HTTPClient = httpClient
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: openai.GPT4o, // 必要に応じてモデルを変更
Messages: messages,
},
)
github.com/sashabaranov/go-openai の NewClientWithConfig の使い方を見ると
ClientConfigを渡すらしい。 openai package - github.com/sashabaranov/go-openai - Go Packages のサンプルコードが参考になりそう。結構、複雑な接続設定が可能なようだ。
config := openai.DefaultConfig(os.Getenv("OPENAI_API_KEY"))
port := os.Getenv("OPENAI_PROXY_PORT")
proxyURL, err := url.Parse(fmt.Sprintf("http://localhost:%s", port))
if err != nil {
panic(err)
}
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
}
config.HTTPClient = &http.Client{
Transport: transport,
}
client := openai.NewClientWithConfig(config)
client.CreateChatCompletion( //nolint:errcheck // outside of the scope of this example.
context.Background(),
openai.ChatCompletionRequest{
// etc...
},
)
一旦、configを作りconfig.HTTPClientでオプションを渡すようだ。
Read more...