LoginSignup
8
5

More than 1 year has passed since last update.

ChatGPT API を使用するNode.jsサンプルコードを、ChatGPTに教えてもらった。

Last updated at Posted at 2023-03-19

ChatGPT に、ChatGPT API の使い方を教えてもらいたい

簡単なコードとかなら、ChatGPTが書いてくれる。
閏年を計算したり、日付けをフォーマットするような簡単なのなら、ChatGPTはすぐコードを書いてくれるのは知っている。
なら、ChatGPT APIを使う方法も、聞いてしまえばいいのではと思い立つ。

聞いた

image.png

答えてくれた。まじで。

でも、API キーがいるらしい

あれ、そうなの。それ、どうやって取得するの?
と、ChatGPTに聞いてしまう私。

image.png

まじで。ここまで3分かかってないわよ。こんな簡単でいいんですか。

ちょっとゴソゴソして、APIキーを取得してくる。よっしゃ取れた。

API キーは、.env に保持したい

でも、コードにAPIキー埋め込んでしまうのはイヤよね。
.env とかにそういう値は書いておいて、githubにコミットしないとか、そういう準備はしておきたいわよね。

image.png

おう、そうじゃったそうじゃった。dotenvつかうんじゃった。忘れておった。
てか、先ほどのコードの修正案も提示してくれるのか。
すごいな、便利だな。デキる先輩に質問してるみたいだ。
今日からChatGPT先輩って呼ばせてもらおう。

サンプルコードを実行してみる

じゃぁ先輩!実行してみまーす!

image.png

ChatGPT 先輩も間違える

・・・あれ?なんかイマイチな気がする?
先輩ったらもう、AIなのに完璧じゃないのねー。
サンプルでの質問は「What is the capital of France?」なので、こんなコードの一部みたいな回答はなんかちゃうのでは。
ぶっちゃけ、フランスの首都は?と聞いてるので、ストレートにパリと返して欲しいわよね。(質問文をDeepLで翻訳した)

ChatGPT 先輩、まだ間違える

もっかい実行したけど、ダメだったので、率直に聞いてみた。

image.png

おお、先ほどのAPIキーの対応コミのコードを示してくれた。
ChatGPT先輩やさしいー。

でも、正直言って問題の箇所は、ここだと思うのね。

const message = response.data.choices[0].text.trim();

ChatGPT 先輩、秒で改善する

とりあえず先輩の顔を立てようと思って、コードそのまま実行したけどダメでした。
ChatGPTせんぱぁぁぁぁい!!

image.png

message のところではなく、プロンプトの文字列を改善してくれた。
これが、

        prompt: prompt,

こうなった。

        prompt: `${prompt}\nAnswer:`,

あと、回答を改行で終わらせて、後続するJsonデータを切り分けるようにしたっぽい。

即座にそういう改善が思いつくのね!
スゴイね!やっぱり先輩スゴイネ!

image.png

おお!期待した通りの感じの回答になった!
つい嬉しくて、二回も実行しちゃったわよ!
先輩すごーい!

image.png

あら、先輩かわいいー!
私先輩についていきまーす!

最後に

最後に実行したコードを貼り付けておいてみる。

// Import the required packages
const axios = require('axios');
require('dotenv').config();

// Set your API key from the .env file
const API_KEY = process.env.API_KEY;

// Function to call the ChatGPT API
async function callChatGptApi(prompt) {
  try {
    const response = await axios.post(
      'https://api.openai.com/v1/engines/davinci-codex/completions',
      {
        prompt: `${prompt}\nAnswer:`,
        max_tokens: 50,
        n: 1,
        stop: "\n",
        temperature: 0.5,
      },
      {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${API_KEY}`,
        },
      }
    );

    const message = response.data.choices[0].text.trim();
    console.log(`ChatGPT response: ${message}`);
  } catch (error) {
    console.error(`Error calling ChatGPT API: ${error.message}`);
  }
}

// Example usage
const prompt = 'What is the capital of France?';
callChatGptApi(prompt);

すごいわー、会話でAIと相談しながらコードを書く時代が来ちゃったのねー。
他にも色々、ChatGPT先輩に相談しながら、コード書いてみよっと。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5