dart_openai 5.x : Dart / Flutter SDK for ChatGPT & all OpenAI APIs (1) 基本設定と動作確認
翻訳 : クラスキャット セールスインフォメーション
作成日時 : 04/05/2024
* 本ページは、dart_openai (anasfik/openai) の以下のページを翻訳し、適宜、補足説明したものです :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
dart_openai 5.x : Dart / Flutter SDK for ChatGPT & all OpenAI APIs (1) 基本設定と動作確認
開発者が OpenAI の最先端の AI モデルのパワーを Dart/Fluttr アプリケーションに簡単に統合することを可能にするオープンソースのクライアント・パッケージです。
このライブラリは、GPT-3 言語モデル、DALL-E 画像生成等を含む、OpenAI の様々な API へのリクエストを行うための単純で直感的な方法を提供します。
このパッケージは軽量で簡単に使用できるように設計されていますので、HTTP リクエストの処理で引き起こされる複雑さやエラーについて心配することなく、貴方はアプリケーションの構築にフォーカスできます。
Unofficial
OpenAI does not have any official Dart library.
✨ 主な特徴
- OpenAI ドキュメントを正確に反映した使いやすいメソッド、そして Dart プログラミング言語での使用をより良くする追加機能を備えています。
- 一度だけ認証すれば、アプリケーションのどこでもいつでもそれを利用できます。
- 開発者フレンドリー。
- コンプリーション API & 微調整イベント API 用ストリーミング機能。
- /example フォルダーのパッケージで実装された殆どすべてについてサンプル/スニペットが準備されています。
📜 完全なドキュメント
このライブラリが提供するすべてのメンバーについての完全なドキュメントは、ここを確認してください。
🟢 使用方法
認証
API キー
OpenAI API は認証のために API キーを使用します。アカウントの API キー にアクセスすることで貴方のアカウント API キーを取得できます。
実行時に .env ファイルからシークレットキーをロードすることを強く推奨します、envied パッケージか同じジョブを行う他のパッケージを利用することができます。
// .env
OPEN_AI_API_KEY=<REPLACE WITH YOUR API KEY>
// lib/env/env.dart
import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(path: ".env")
abstract class Env {
@EnviedField(varName: 'OPEN_AI_API_KEY') // the .env variable.
static const apiKey = _Env.apiKey;
}
// lib/main.dart
void main() {
OpenAI.apiKey = Env.apiKey; // Initializes the package with that API key, all methods now are ready for use.
// ..
}
apiKey がセットされずに、OpenAI.instance にアクセスしようとした場合、実際のリクエストを行う前でも MissingApiKeyException が投げられます。
apiKey がセットされていてもリクエストを行うときに無効であれば、RequestFailedException がアプリケーション内で投げられます、詳細は エラー処理 セクションを確認してください。
組織の設定
特定の組織に所属している場合、このようにしてその id を OpenAI.organization に渡すことができます :
OpenAI.organization = "ORGANIZATION ID";
どのような組織にも実際には所属していない場合、このセクションは単に無視できます、あるいは null に設定してください。
デフォルトのリクエストタイムアウトの設定
パッケージは http がリクエストを行う場合に (それを) 使用します、これは 30 秒のデフォルトタイムアウトを持ち、これは 30 秒を超える任意のリクエストはキャンセルされて例外が投げられることを意味します、それを変更するには独自のデフォルトタイムアウトを設定する必要があります :
OpenAI.requestsTimeOut = Duration(seconds: 60); // 60 seconds.
そして今、時間を使うメソッドは例外を投げる前に応答を得るために 60 秒待ちます。
独自のベース URL の設定
パッケージで使用されるベース url を独自のものに変更できます、これは、OpenAI API へのリクエストをプロキシーしたい場合や OpenAI API へのプロキシーとして独自のサーバを使用したい場合に役立ちます。
OpenAI.baseUrl = "https://api.openai.com/v1"; // the default one.
デバッグとロギングの有効化
showLogs を設定することで、パッケージに操作フローとステップをログ出力させることができます :
OpenAI.showLogs = true;
これは、リクエストの開始時と終了時、デコードの開始時… のようなリクエストステップだけをログ出力します。
けれども API から返される生の応答 (JSON, RAW…) をログ出力したい場合には、showResponsesLogs を設定できます :
OpenAI.showResponsesLogs = true;
これは、リクエスト成功時や失敗した時のような、API から返される生の応答をログ記録します。(これはストリーム応答は含みません。)
モデル
モデルのリストアップ
現在利用可能なモデルをリストアップし、所有者や利用可能性のような各モデルについての情報を提供します。
List<OpenAIModelModel> models = await OpenAI.instance.model.list();
OpenAIModelModel firstModel = models.first;
print(firstModel.id); // ...
print(firstModel.permission); // ...
実際に以下のコードで試してみましょう :
import 'package:dart_openai/dart_openai.dart';
import 'package:openai/env/env.dart';
void main(List arguments) async {
OpenAI.apiKey = Env.apiKey;
OpenAI.organization = null;
OpenAI.requestsTimeOut = Duration(seconds: 60); // 60 seconds.
OpenAI.baseUrl = "https://api.openai.com"; // the default one.
OpenAI.showLogs = true;
// OpenAI.showResponsesLogs = true;
// List models.
List models = await OpenAI.instance.model.list();
models.sort((a, b) => a.id.compareTo(b.id));
for (final model in models) {
print(model.id);
}
}
[OpenAI] api key set to ****** [OpenAI] organization id set to null [OpenAI] requests timeout changed to 0:01:00.000000 [OpenAI] base url set to https://api.openai.com [OpenAI] accessing endpoint: /models [OpenAI] starting request to https://api.openai.com/v1/models [OpenAI] request to https://api.openai.com/v1/models finished with status code 200 [OpenAI] starting decoding response body [OpenAI] response body decoded successfully [OpenAI] request finished successfully babbage-002 dall-e-2 dall-e-3 davinci-002 gpt-3.5-turbo gpt-3.5-turbo-0125 gpt-3.5-turbo-0301 gpt-3.5-turbo-0613 gpt-3.5-turbo-1106 gpt-3.5-turbo-16k gpt-3.5-turbo-16k-0613 gpt-3.5-turbo-instruct gpt-3.5-turbo-instruct-0914 gpt-4 gpt-4-0125-preview gpt-4-0613 gpt-4-1106-preview gpt-4-1106-vision-preview gpt-4-turbo-preview gpt-4-vision-preview text-embedding-3-large text-embedding-3-small text-embedding-ada-002 tts-1 tts-1-1106 tts-1-hd tts-1-hd-1106 whisper-1
Great 🐸😄
モデルの取得
id で単一モデルを取得してそれについての追加情報の断片を取得します。
OpenAIModelModel model = await OpenAI.instance.model.retrieve("text-davinci-003");
print(model.ownedBy); // ...
供給したモデル id が存在しないか貴方のアカウントに対して利用可能でない場合、RequestFailedException が投げられます、エラー処理 セクションを確認してください。
微調整済みモデルの削除
OpenAI は 微調整 機能を提供しています、これをこのパッケージで このように 利用できます。
けれども、微調整モデルを削除したい場合は、delete() メソッドを使用できます :
bool isDeleted = await OpenAI.instance.model.delete("fine-tune-id");
print(isDeleted); // ...
以上