2023 年 6 月 13 日、OpenAI は、ステアビリティの強化、関数呼び出し機能の向上、コンテキスト ウィンドウの拡張、価格の引き下げなど、一連の言語モデルに対するさまざまな更新を発表しました。 InstructGPT の兄弟モデルであり、指示に従い詳細な応答を提供するようにトレーニングされた ChatGPT は、2022 年 11 月 30 日の発売以来、わずか 6 か月で急速に世界中で人気を集めました。このアップデートは 6 つの主要領域をカバーしております。
- Chat Completions APIに関数の呼び出し(Function Call)機能を新規に追加しました。
- コントロール性がより良い
gpt-4
とgpt-3.5-turbo
をリリースしました。 gpt-3.5-turbo
の新しい16kコンテキストバージョン を公表しました。- V2 埋め込みモデルの価格を75%下げました。
gpt-3.5-turbo
の入力tokenの価格を25%下げました。- モデル
gpt-3.5-turbo-0301
とgpt-4-0314
の破棄予定表を公表しました。
其中,更具体的更新信息详情如下:
関数の呼び出し(Function calling)
現在、開発者は gpt-4-0613
と gpt-3.5-turbo-0613
モデルに関数を入力して、モデルにこれらの関数を含むJSONオブジェクトをアウトプットさせることができるようになります。これは、GPTの能力を外部ツールのAPIに連携させるより良い方法だと思います。
これらのモデルはすでに微調整(fine-tuned)され、関数の呼び出しのタイミング(ユーザーが入力した内容によるもの)を検出でき、関数の署名に従えるJSONレスポンスを返します。関数の呼び出しを使うことで、開発者はより効率的にモデルから構造化されたデータを抽出できます。例えば、開発者は次のようなことを実現できます:
外部ツール(ChatGPTプラグインなど)を呼び出して問題に回答
クエリを関数呼び出しに変換することもできます。例えば、「Anyaにメールを送信して、来週の金曜日はコピーを飲むかを聞いてください。」をsend_email(to: string, body: string)
に変換できます。また、「東京の天気はどうですか?」を get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')
に変換することができます。
自然言語をAPIの呼び出し/データベースのクエリに変換
「今月の上位10名のお客様は誰ですか?」を内部APIの呼び出しに変換する場合、get_customers_by_revenue(start_date: string, end_date: string, limit: int)
になり、「先月、Acme, Inc.からの注文はいくつありますか?」をSQLクエリに変換する場合、sql_query(query: string)
になります。
结构化数据テキストを構造化データに変換
extract_people_data(people: [{name: string, birthday: string, location: string}])
の関数を定義すると、ウィキペディアの記事中の人物を抽出できます。
これらのケースも、 OPenAIの/v1/chat/completions
エンドポイントの新しいAPIパラメータであるfunctions
とfunction_call
によって実現されています。これらの機能を利用することで、開発者がJSONデータを使用して関数を定義したり、特定の関数を呼び出したりすることができます。また、関数の呼び出し機能を改善することができると思っている場合、OPenAIの開発者向けドキュメントと evalsの追加をご覧ください。
関数呼び出しの例(Function calling example)
问题:
ただいま、東京の天気はどうですか?
ステップ⒈OpenAI API
関数とテキストを利用してモデルを呼び出します。
Request:
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "ただいま、東京港区の天気はどうですか?"}
],
"functions": [
{
"name": "get_current_weather",
"description": "送信した場所の現在の天気を取得します。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "都市名、例えば:港区、東京都"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
Response:
{
"id": "chatcmpl-123",
...
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"function_call": {
"name": "get_current_weather",
"arguments": "{ \"location\": \"港区, 東京都\"}"
}
},
"finish_reason": "function_call"
}]
}
ステップ⒉サードパーティのAPI
モデルのレスポンスを使用してAPIを呼び出します。
Request:
curl https://weatherapi.com/...
Response:
{ "temperature": 22, "unit": "celsius", "description": "Sunny" }
ステップ⒊OpenAI API
レスポンスをモデルに送信してまとめます。
Request:
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "ただいま、東京港区の天気はどうですか?"},
{"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"港区, 東京都\"}"}},
{"role": "function", "name": "get_current_weather", "content": "{\"temperature\": "22", \"unit\": \"celsius\", \"description\": \"Sunny\"}"}
],
"functions": [
{
"name": "get_current_weather",
"description": "送信した場所の現在の天気を取得します。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "都市名、例えば:港区、東京都"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
Response:
{
"id": "chatcmpl-123",
...
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "東京都港区の天気は晴れで、気温は22摂氏度です。",
},
"finish_reason": "stop"
}]
}
エクスポートの結果は次のとおり:
東京都港区の天気は晴れで、気温は22摂氏度です。
ChatGPTのプラグインのalphaバージョンがリリースされて以来、OPenAIは、外部ツールと言語モデルがどのように安全に協同作業させかを習得しましたが、未解決の問題もあります。
例えば:概念検証(proof-of-concept)のバグです。外部ツールからの信頼できないデータはモデルを意外の操作を実行させます。OPenAIは、これらの問題やリスクの解決に取り組んでいます。
開発者は、信頼できるツールからのみ情報を取得して、現実に影響を及ぼす操作(メールの送信、注文、リリースなど)をする前に、ユーザーの確認を含んでアプリケーションを保護します。
OpenAI APIのオンラインで直接に呼び出し可能に!
API管理ツールのApidogを利用して、オンラインでも直接にOpenAI APIをオンラインで呼び出してテストすることができるようになります。Apidogは、非常に便利で直感的な方式でOpenAI APIをテストすることができるので、開発者はこのツールを利用してOpenAI APIを簡単に最適化し、その安定性と信頼性を確保することができます。
Apidogには、OpenAI APIプロジェクトがあります。このプロジェクトでは、OpenAIが提供する全てのAPIを網羅しています。そこで、OpenAIが提供している各APIを確認したい場合、次のページにアクセスしてください。
https://apidog.com/apidoc/project-370474
OpenAI APIをオンラインで呼び出してテストする方法
ApidogのOpenAI APIプロジェクトにアクセスすると、次の操作手順を参照して、簡単にOpenAIのAPIをテストすることができます、
ステップ⒈OpenAI APIのプロジェクトページにアクセスすると、左側のメニューから、利用したいAPIを選択して、右側パネルで「Try it out」ボタンをクリックします。
ステップ⒉APIの利用には、OpenAIへのアクセス権限が必要であり、APIキーを取得する必要があるので、ここでOpenAI API_KEYを記入することが必要です。
ご案内:YOUR_ API_KEYという環境変数は、ローカルで保存されるので、サーバーに同期することがありませんので、ご安心ください。
ステップ⒊「Send」ボタンをクリックして、リクエストをOpenAIのサーバーに送信して、レスポンスを取得できます。
また、リクエストをより自由にカスタマイズすることを必要とする場合、「Run in Apidog」ボタンをクリックして、API管理ツールを呼び出して、そこでリクエストを思い通りにカスタマイズすることができます。
新しいモデル:GPT-4とGPT-3.5 Turbo
GPT-4
gpt-4-0613
には、更新・改善された関数呼び出しモデルが含まれています。
gpt-4-32k-0613
は、gpt-4-0613
と同じような改善点を含む以外、より長いコンテキストの長さに対応することで、より複雑なテキストをよりよく理解できます。
これらのアップデータを通じて、OpenAIは未来の数週間内に一部のユーザーに試用のチャンスを提供し、近い未来に、一般大衆にも公開する予定です。
GPT-3.5 Turbo
GPT-3.5 Turboは、GPT-4と同じな関数呼び出し機能やシステムメッセージのより高信頼性の操作性のおかげで、より効果的にモデルに適切なレスポンスを返させることが可能です。
GPT-3.5 Turbo-16kバージョンが対応できるテキストの長さは、GPT-3.5 Turboの4 倍になりますが、その価格はただ2倍になります。1000個の入力tokenにつき、0.003米ドルで、1000個の出力tokenは0.004米ドルになります。16kバージョンが対応できるコンテキストの長さは、20ページのテキストに相当します。
モデルの廃棄
OPenAIは、3月に公表されたGPT-4とGPT-3.5 Turboの初期バージョンのアップデートと廃棄を始めています。モデル名(GPT-3.5 Turbo、GPT-4 や GPT-4-32k)を採用するアプリケーションは、 6 月 27 日に自動的に上述のモデルにアップグレードします。異なるバージョンのモデルのパフォーマンスを比較するため、OPenAIのEvalsライブラリーは、パブリックとプライベートで評価することで、モデルの変化は利用にどのような影響があるかを示すことをサポートします。
より多くの時間が必要である開発者は、APIのリクエストのModelパラメータで「GPT-3.5 Turbo-0301」、「GPT-4-0314」、「GPT-4-32k-0314」を指定して、以前と同じように古いモデルを使い続けることができます。ただし、これらの古いモデルは、 9 月 13 日の前に利用可能です。それ以降のリクエストが失敗されます。OPenAIモデルの廃棄ページで最新情報を手に入れることができます。
今回は、これらのモデルの一番目のアップデートなので、OpenAIは開発者からのフィードバックを期待しています。
より低価格
OPenAIは、価格を下げ続けます。GPT-3.5 Turbo-16kの対応テキストの長さは、GPT-3.5 Turboの4 倍になりますが、価格はただ2倍になります。OpenAIは、価格を下げることでより多くの開発者がOpenAIのAPIを使用して面白いアプリを解決できると期待しています。
埋め込み(Embeddings)
text-embedding-ada-002
は、 OPenAIの最も人気のある埋め込みモデルです。OPenAIは今回のアップデートで、その価格を75%下げてしまい、1000個の tokensにつき、ただ0.0001米ドルが必要です。
GPT-3.5 Turbo
gpt-3.5-turbo
はOPenAIの最も人気のあるチャットモデルで、数百マンのユーザーにChatGPTサービスを提供しています。今回のアップデートにより、OPenAIはgpt-3.5-turboの入力tokensを25%下げました。つまり、開発者は1000個の入力 tokenごとにただ0.0015米ドルを払い、1000個の出力tokenごとにただ0.002米ドルを払う必要があります。1米ドルにつき、700ページ相当のテキストを取得できます。
gpt-3.5-turbo-16k
の価格は0.003 米ドル/1000個の入力token、0.004米ドル/1000個の出力tokensです。
まとめ
今回、OpenAIのアップグレードは、生成式AIの競争力を大幅に向上しました。それだけではなく、OpenAIの価格を下げることで、他のIT会社がAIモデルを利用するコストも抑えることができるので、未来のAIエコシステムがより豊かになるのでしょう。