はじめに
昨日から話題沸騰中のChatGPT API、みなさんはもうお試ししましたか?
以前からAPIの提供は期待されていて、OpenAIも予定はしていると言っていたものの実際にいつ発表になるのかは具体的には明言されていませんでした。
そして、ここに来て満を持してのChatGPT APIの登場です。
これは、ひとりの個人開発者としてワクワクが止まりません。
ただ、ChatGPT APIと言われても、プログラミングを始めたばかりの方や、わざわざREST APIを呼び出してレスポンスを取得して〜までの処理を書くのが面倒な方にとっては後で触ろう思ってしまうかもしれません。
僕的には、この機会の損失は本当にもったいないと思いました。
なので、今回TypeScript
からprompt()
を呼び出すだけで余計な設定いらずでChat GPT APIを使うことができるライブラリ、ts-chatgpt
をリリースいたしました!!!
CommonJSでビルドされているので、Node.jsが動く既存のプロジェクトでもすぐに採用できると思います。(もちろんNode.jsのバージョンについては適宜ご確認をお願いいたします。ちなみに推奨バージョンは
14
以降です。)
インストール
インストールは簡単です。npm install ts-chatgpt
を実行して、既存のプロジェクト、もしくは新しいプロジェクトに追加してください。
npm install ts-chatgpt
yarn
をお使いの方はこちら。
yarn add ts-chatgpt
OPENAI_API_KEY環境変数の準備
このライブラリは、OpenAIから提供されているAPIキーを使ってChatGPT APIを呼び出しています。
なので、ライブラリを実際に使用する前に、必ずこのAPIキーを取得して、OPENAI_API_KEY
環境変数として設定してからご使用ください。
まずはこちらのページにアクセスします。アカウントを未作成の方は、最初にアカウントを作成する必要がありますのでご注意ください。
アクセスしたら、右上のアカウントをクリックします。
表示されるメニューからView API Keysを選択します。
API Keysのページにアクセスしたら、画面中央にあるCreate new secret keyをクリックします。
モーダルと共にシークレットキーが表示されますので、コピーしておきます。このキーはとても大事なキーなので他人には絶対に教えないようにお気をつけください。
これで必要な準備は整いましたので、コピーしたシークレットキーを.env
ファイルに貼り付けます。
OPENAI_API_KEY="xxx-xxx-xxx"
さっそく使ってみる
使い方はとっても簡単です。
まず、prompt()
をts-chatgpt
からインポートします。
import { prompt } from "ts-chatgpt";
そして、非同期関数の中で必要な引数を与えて呼び出します。
async function main() {
const response = await prompt({
model: "gpt-3.5-turbo-0301",
messages: [
{
role: "user",
content: "Hello, I'm a user",
},
],
});
}
これで完了です!!!
受け取ったレスポンスには次のような内容が保存されています。
{
id: 'xxx',
object: 'chat.completion',
created: 1677777177,
model: 'gpt-3.5-turbo-0301',
usage: { prompt_tokens: 13, completion_tokens: 11, total_tokens: 24 },
choices: [ { message: [{
role: 'assistant',
content: 'Hello there! How can I assist you today?'
}], finish_reason: 'stop', index: 0 } ]
}
このレスポンスの型はChatGPTResponse
としてts-chatgpt
から公開されていますので、必要に応じてご活用ください。
引数の詳細
prompt()
を呼び出す際に渡したmodel
には、現在次の2つの値を渡せるようになっています。
Model | Description | Available |
---|---|---|
gpt-3.5-turbo |
The default model. | ✅ |
gpt-3.5-turbo-0301 |
- | ✅ |
これらのモデルは、いわゆるChatGPT APIのエンジンに相当するもので、現在のChatGPT製品に採用されているものと同じモデルとなっています。
またmessages
配列の要素としてMessage
型の値を渡すことができます。
Role
としてはsystem
、assistant
、そしてuser
の3つを設定することが可能となっています。
実際にChatGPTに対して入力するテキストはcontent
として渡します。
export type Role = "system" | "assistant" | "user";
export interface Message {
role: Role;
content: string;
}
messages
配列という形で、複数のMessage
を設定できるようになっている理由は会話上の文脈を維持するためです。これをカスタマイズすることで、より開発者にとって自然な文脈に沿った応答を得ることができるようになっています。
まとめ
今回、ChatGPT APIをラップしたライブラリを開発するにあたって、より使いやすく余計な設定などを意識しなくても使いこなせるものを目指しました。
なので、クラスはあえて採用せず、関数の呼び出しのみでChatGPT APIを呼び出すことができるようになっています。
環境変数OPENAI_API_KEY
に関しても、開発者がそのためだけにdotenv
をインストールしなくても自動的に読み取れるようになっておりますので、安心してご活用ください。
このライブラリを活用して、個人開発者のみなさまが世界をあっと驚かせるアプリケーションを公開する日が来ることをとても楽しみにしております。
参考にした記事