ChatGPT で遊ぶ
このスクラップについて
Zenn の記事を見ていると ChatGPT を使って要件定義をしたり記事を書いたり皆さん面白そうなことをやっている。
このスクラップでは ChatGPT を使って遊んでみたい。
差し当たり下記の方法について調べてみたい。
- 日本語を使う方法
- API を使用する方法
ChatGPT のページ
日本語に対応しているか聞いてみた
ChatGPT に聞いてみた。
ChatGPT は日本語は分かりますか?
はい、ChatGPTは日本語にも対応しています。どのような質問でもお答えできますので、お気軽にお聞きください。
API を使用する方法
ChatGPT に聞いてみた。
質問
ChatGPT で API を使用したいのですが使い方を教えてください。
回答
はい、ChatGPTでAPIを使用する方法をご説明いたします。
ChatGPTは、OpenAIのAPIを使用しており、APIキーを使用してAPIへのアクセスを認証する必要があります。以下の手順に従って、APIキーを取得し、APIを使用することができます。
-
OpenAIのAPIを申し込む
OpenAI APIを使用するためには、OpenAIのAPIアカウントを作成する必要があります。アカウントを作成するには、OpenAIのWebサイト(https://openai.com/)からAPIを申し込むことができます。 -
APIキーを取得する
APIアカウントを作成したら、OpenAIのWebサイトからAPIキーを取得することができます。APIキーは、APIを使用するために必要な認証情報です。 -
APIキーを使ってAPIにアクセスする
APIキーを取得したら、APIを使用するために必要なパッケージやライブラリをインストールしてください。その後、APIキーを使用してAPIにアクセスすることができます。以下は、Pythonを使用してOpenAI APIにアクセスする例です。
import openai
openai.api_key = "YOUR_API_KEY"
response = openai.Completion.create(
engine="davinci",
prompt="Hello, world!",
max_tokens=5
)
print(response.choices[0].text)
以上のように、OpenAI APIキーを使用してAPIにアクセスし、必要な機能を実行することができます。具体的な使用方法については、OpenAIのドキュメントを参照してください。
TypeScript の例が欲しい
質問
ありがとうございます。TypeScript の場合のコード例を教えてもらえますか?
回答
はい、以下はTypeScriptを使用してOpenAI APIにアクセスする例です。
import openai from "openai";
// OpenAI APIキーを設定する
openai.api_key = "YOUR_API_KEY";
// APIにアクセスしてコンテンツを生成する
async function generateContent(prompt: string): Promise<string> {
const response = await openai.Completion.create({
engine: "davinci",
prompt: prompt,
max_tokens: 5,
});
return response.choices[0].text;
}
// 関数を呼び出す
generateContent("Hello, world!").then((content) => console.log(content));
この例では、OpenAI APIキーを設定し、generateContent関数を使用してAPIにアクセスし、生成されたコンテンツを取得しています。openai.Completion.create()メソッドに渡すオプションは、Pythonの場合と同様です。
OpenAIのTypeScript向けパッケージである @openai/api が提供されているため、それを使用することでインストールなどの手間を省くこともできます。以下が、その例です。
import { OpenAI } from "@openai/api";
// OpenAI APIキーを設定する
const openai = new OpenAI({
apiKey: "YOUR_API_KEY",
});
// APIにアクセスしてコンテンツを生成する
async function generateContent(prompt: string): Promise<string> {
const response = await openai.completions.create({
engine: "davinci",
prompt: prompt,
maxTokens: 5,
});
return response.choices[0].text;
}
// 関数を呼び出す
generateContent("Hello, world!").then((content) => console.log(content));
以上のように、TypeScriptを使用してOpenAI APIにアクセスすることができます。
ChatGPT に聞いたら終わってしまった
後から試してみよう。
プライベートな質問を聞いてみる
長岡市の栃尾でおすすめの飲み屋さんを教えてください。
申し訳ありませんが、ChatGPTは過去の情報のみを持っているため、現在の情報を持っていません。また、私たちは地域のビジネスやサービスを推奨することはできません。そのような情報をお探しの場合は、オンラインのレビューサイトや地元の情報を提供するウェブサイトを検索することをお勧めします。
今日の朝昼晩の献立を提案してもらえますか?なるべく簡単に作れて栄養価が高いと嬉しいです。
朝、昼、晩の献立の提案をします。以下は、簡単に作れて栄養価が高い料理のアイデアです。
【朝食】
スクランブルエッグ、アボカド、トマト、フルーツ、トースト
グリーンスムージー、オートミール、ナッツ、ドライフルーツ、ハニー
納豆と卵の丼、味噌汁、サラダ
【昼食】
クラブハウスサンドイッチ、ポテトサラダ、スープ
鶏胸肉と野菜の炒め物、ご飯、味噌汁
チキンチリ、玄米、サラダ
【夕食】
オーブンで焼いたサーモン、サツマイモ、グリーンビーンズ
トマトパスタ、グリーンサラダ、バケット
鶏肉の唐揚げ、白菜のおかか和え、豆腐の味噌汁、ご飯
これらの献立は、栄養価が高く、準備が簡単な食事を提供します。ただし、個々の栄養状態や好みによっては、適切な食事内容が異なる場合がありますので、ご注意ください。
鶏胸肉と野菜の炒め物の作り方を教えてください。
鶏胸肉と野菜の炒め物の作り方を以下に示します。
【材料】
鶏胸肉 200g
にんじん 1本
玉ねぎ 1/2個
シメジ 1パック
ピーマン 2個
オリーブオイル 大さじ1
しょうゆ 大さじ2
酒 大さじ1
塩 少々
こしょう 少々
【作り方】
鶏胸肉を一口大に切り、塩こしょうで下味をつける。
にんじんは皮をむいて斜めにスライスし、玉ねぎは縦に切ってから薄切りにする。
シメジは根元を切り落として小房に分ける。ピーマンは種を取り除いて斜めにスライスする。
フライパンにオリーブオイルを熱し、鶏肉を炒める。
鶏肉に色がついてきたら、にんじん、玉ねぎ、シメジ、ピーマンの順に加えて炒める。
野菜に火が通ったら、しょうゆと酒を加えて味を調える。
器に盛って完成。
野菜の種類や量はお好みに応じて変えることができます。また、鶏肉以外のお肉や、豆腐などの代替品を使用することもできます。炒め物は、お好みの味付けでアレンジして、バリエーションを楽しんでみてください。
ChatGPT の API の申込み
ChatGPT の API の申込みのページを教えてもらえますか?
ChatGPT API の申込みページは、OpenAI の公式ウェブサイトで行うことができます。以下のURLにアクセスし、必要事項を入力することでAPIの申込みが可能です。
アクセスしてみると 404 Not Found だった。
色々探していたら下記のページが見つかった。
ログインしたらダッシュボードが表示された。
ページ右上の Personal > View API keys を選ぶ。
Create new secret key を押せば良いかな?
無事に API キーが表示されたのでコピーしておく。
ワークスペースの作成
mkdir hello-gpt
cd hello-gpt
npm init -y
npm install --save dotenv @openai/api
npm install --save-dev ts-node @types/node
touch .env main.ts
GPT_API_KEY="sk-xxxx"
@openai/api がインストールできない
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@openai%2fapi - Not found
npm ERR! 404
npm ERR! 404 '@openai/api@*' is not in this registry.
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/susukida/.npm/_logs/2023-03-17T23_48_50_346Z-debug-0.log
普通に公式ドキュメントの Quick Start 読んだ方が良い気がしてきた。
openai パッケージをインストールすれば良い?
npm install --save openai
コーディング
このコードが一番参考になる気がする。
import { Configuration, OpenAIApi } from "openai";
async function main() {
const configuration = new Configuration({
apiKey: process.env.GPT_API_KEY!,
});
const openai = new OpenAIApi(configuration);
const completionResponse = await openai.createCompletion({
model: "text-davinci-003",
prompt:
"openai.createCompletion の model と temprature について教えてください。",
temperature: 0.6,
});
console.log(JSON.stringify(completionResponse.data, null, 2));
}
main().catch((err) => console.error(err));
{
"id": "cmpl-6vEN0f35BEpSVENdid0xZM47WtZYT",
"object": "text_completion",
"created": 1679097954,
"model": "text-davinci-003",
"choices": [
{
"text": "\n\nmodel は GPT-2 が使用され",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 30,
"completion_tokens": 16,
"total_tokens": 46
}
}
レスポンスは返ってきたけど冒頭の部分しか返ってきていない。
finish_reason が length なのであまり長いとダメなのかな?
ChatGPT に聞いてみる
(上記のコードをコピー&ペースト)
これはOpenAIのAPIを使用して、text-davinci-003というモデルにテキストを渡して、そのモデルに基づいてテキストの自動補完を行うNode.jsのサンプルコードです。
ConfigurationとOpenAIApiは、openaiパッケージに含まれるもので、OpenAI APIとの通信を行うために必要です。 process.env.GPT_API_KEY!には、OpenAI APIキーが格納されている必要があります。 createCompletionメソッドは、渡されたテキストに基づいて、モデルが返す自動生成テキストを取得するために使用されます。
この例では、text-davinci-003モデルに対して、"openai.createCompletion の model と temprature について教えてください。"というテキストを渡しています。temperatureオプションは、生成されたテキストの多様性を制御するために使用されます。
最後に、レスポンスデータがJSON形式で出力されます。
注意:このコードを実行するには、事前にopenaiパッケージをnpmでインストールして、APIキーを設定する必要があります。
上記のコードを実行しても回答が全部返ってこないのですが理由はわかりますか?
回答が返ってこない理由はいくつか考えられますが、以下のことを確認してみてください。
-
OpenAI APIキーが正しく設定されているか確認してください。
もしAPIキーが無効であれば、APIリクエストが失敗する可能性があります。正しいAPIキーを設定する必要があります。 -
openai.createCompletion() メソッドで生成されたトークンが期限切れでないことを確認してください。
生成されたトークンは24時間で期限切れになります。 -
テキスト生成に対してのパラメーター設定に問題がないか確認してください。
例えば、prompt が短すぎたり、モデルによって異なるパラメータが必要になる場合があります。試しに別のプロンプトでテストしてみることを検討してください。 -
APIがエラーを返している可能性があります。
APIが利用可能かどうかを確認し、エラーが返ってきていないか確認してください。
createChatCompletion を使えば良い
import { Configuration, OpenAIApi } from "openai";
async function main() {
const configuration = new Configuration({
apiKey: process.env.GPT_API_KEY!,
});
const openai = new OpenAIApi(configuration);
const completionResponse = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "user",
content: "ChatGPT の API はどれくらいまで無料で使えますか?",
},
],
});
console.log(JSON.stringify(completionResponse.data, null, 2));
}
main().catch((err) => console.error(err));
{
"id": "chatcmpl-6vEe5sA9VqSgZfYzpw4rxmMfU3hKv",
"object": "chat.completion",
"created": 1679099013,
"model": "gpt-3.5-turbo-0301",
"usage": {
"prompt_tokens": 28,
"completion_tokens": 87,
"total_tokens": 115
},
"choices": [
{
"message": {
"role": "assistant",
"content": "\n\nChatGPT API は、月間100回のリクエストまで無料で使用することができます。ただし、それ以上の使用量がある場合は、有料プランにアップグレードする必要があります。詳細はChatGPTの公式ウェブサイトを確認してください。"
},
"finish_reason": "stop",
"index": 0
}
]
}
すごいな、ついでに ChatGPT API の無料枠についても教えてくれてありがとう。
でも無料枠の回答は間違っているっぽい
-
Start for free
Start experimenting with $5 in free credit that can be used during your first 3 months. -
Pay as you go
To keep things simple and flexible, pay only for the resources you use. -
Choose your model
Use the right model for the job. We offer a spectrum of capabilities and price points.
さらに
ダッシュボードを見る限りは 6/1 まで $18 分使わせてもらえそう。
助かりました