😎

[API構築6] line-chatbotにChatGPT APIを組み込む

2023/07/19に公開

概要

LINEチャットbotを作成するで作ったbotに、ChatGPTでの返答機能を追加する。

SDK導入

前回調査で一番公式に近いと判断したgo用のOpenAI API用ライブラリであるsashabaranov/go-openaiを導入する。

go get github.com/sashabaranov/go-openai

コーディング

botサーバ自体は以下を利用している。
https://zenn.dev/tofucode/articles/504bfdd232a0d2

今回返答を行う箇所を以下のように修正した。

func getResMessage(message string) (string, error) {
	client := openai.NewClient(os.Getenv("OPENAI_API_KEY"))
	resp, err := client.CreateChatCompletion(
		context.Background(),
		openai.ChatCompletionRequest{
			Model: openai.GPT3Dot5Turbo,
			Messages: []openai.ChatCompletionMessage{
				{
					Role:    openai.ChatMessageRoleUser,
					Content: message,
				},
			},
		},
	)

	if err != nil {
		return "", err
	}

	return resp.Choices[0].Message.Content, nil
}

参考
https://github.com/sashabaranov/go-openai#chatgpt-example-usage

API key

以下を参考に取得し上記の環境変数OPENAI_API_KEYにセットする。
https://zenn.dev/tofucode/articles/14d8226807c30e#api-keys

実行

botサーバの実行は以下の通り。
https://zenn.dev/tofucode/articles/504bfdd232a0d2

AIの返答がLINE上で確認できた。

料金は?(OpenAIマイページ確認)

上記の1メッセージで料金が発生している。0.000689ドル。日本円で0.098円。

前回調査では1リプライで0.2円計算だったが、近い数字になっている。前回調査の計算などは大体当たっているようだ。

感想

ここまではとってもお手軽だけど、ここからのプロンプトエンジニアリングが長そうという印象。
どう使いたいかをもっと煮詰めたい。

参考

今回利用したSDKのサンプル
https://github.com/sashabaranov/go-openai/blob/master/examples/chatbot/main.go

GitHubで編集を提案

Discussion