Doloresは、事前トレーニングされた言語モデルを操作する際の開発者のエクスペリエンスを向上させるために設計された Python ライブラリです。 Dolores は、興味深いまたは有用な出力をもたらす言語モデルと対話するためのプロンプトを提供します。このライブラリの目的は、使い始めるための使いやすい例とサンプル テキストを提供することで学習曲線を簡素化することです。さらに、言語モデルと対話するための高品質プロンプトの最も包括的なリポジトリになるという、より広範な目標もあります。
名前はウエストワールドのドロレス・アバーナシーにちなんで命名されました。
$ pip install dolores
Python インタープリターを介してインポートするか、Python ファイルでインポートします。
import dolores
dolores.initialize("<YOUR-API-KEY>")
そこから、Dolores クラス インスタンスのアクセス可能なメソッドを介して openai の API を直接呼び出すことはできません。次の出力は、リスト エンジン API 呼び出しを呼び出します。各 API 呼び出しには、API の呼び出しに使用できるメソッド呼び出しが関連付けられています。
現在利用可能なエンジンをリストし、所有者や可用性などの各オプションに関する基本情報を提供します。
dolores.list_engines()
エンジン インスタンスを取得し、所有者や可用性などのエンジンに関する基本情報を提供します。
dolores.retrieve_engine()
Dolores クラスをインスタンス化した後、Open AI API への後続のクラスは同じエンジン選択の下で作成されます。 API 呼び出しに使用されるエンジンを変更するために、公開されたメソッドがあります。
dolores.set_engine("davinci")
注: 既存のエンジン タイプに対する検証は、将来のバージョンで検討されています。
プロンプトを完了します。これは GPT-3 API のメイン エンドポイントです。新しいテキストと、要求に応じて、各位置の各代替トークンの確率を返します。
リクエスト:
dolores.create_completion("Is the JavaScript programming language better than python?", 20)
応答: (平文応答については、response["choices"][0]["text"] を参照)
JSON: {'id': 'cmpl-kM6MK5dVRvD964MxeyG4AjCy', 'object': 'text_completion', 'created': 1595431739, 'model': 'ada:2020-05-03', 'choices': [{'text': ' in a far away place', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
'in a far away place'
?
名前 | で | タイプ | 必須 | 説明 |
---|---|---|---|---|
エンジン | 体 | 弦 | 真実 | エンジンID |
プロンプト | 体 | (説明を参照) | 間違い | 生成元となる 1 つ以上のプロンプト。文字列、文字列のリスト、整数のリスト (つまり、トークンとしてエンコードされた単一のプロンプト)、または整数のリストのリスト (つまり、整数としてエンコードされた多数のプロンプト) を指定できます。 |
max_tokens | 体 | 整数 | 間違い | 完了するトークンの数。停止シーケンスがヒットした場合、返される値が少なくなる可能性があります。 |
温度 | 体 | 番号 | 間違い | 使用するサンプリング温度。値が大きいほど、モデルがより多くのリスクを負うことを意味します。より創造的なアプリケーションには 0.9 を、明確に定義された答えがあるアプリケーションには 0 (argmax サンプリング) を試してください。通常、これまたは top_p を使用することをお勧めしますが、両方を使用することは推奨しません。 |
トップ_p | 体 | 番号 | 間違い | 核サンプリングと呼ばれる、温度によるサンプリングの代替方法。モデルは、top_p 確率質量を使用してトークンの結果を考慮します。したがって、0.1 は、上位 10% の確率質量を構成するトークンのみが考慮されることを意味します。通常、これまたは温度を使用することをお勧めしますが、両方を使用することは推奨しません。 |
n | 体 | 整数 | 間違い | 各プロンプトに対して作成する選択肢の数。 |
ストリーム | 体 | ブール値 | 間違い | 部分的な進行状況をストリームバックするかどうか。設定されている場合、トークンは利用可能になるとデータのみのサーバー送信イベントとして送信され、ストリームは data: [DONE] メッセージによって終了します。 |
ログプロブス | 体 | 整数 | 間違い | logprobs の最も可能性の高いトークンにログ確率を含めます。たとえば、logprobs が 10 の場合、API は最も可能性の高い 10 個のトークンのリストを返します。 logprobs が指定されている場合、API は常にサンプリングされたトークンの logprob を返すため、応答には最大 logprobs+1 要素が含まれる可能性があります。 |
停止 | 体 | 文字列または文字列のリスト | 間違い | API がさらなるトークンの生成を停止する 1 つ以上のシーケンス。返されるテキストには停止シーケンスは含まれません。 |
dolores によって保存された事前定義されたプロンプトのセットからプロンプトを完成させます。
リクエスト:
dolores.complete_predefined_prompt("philosopher", 0, "What is the meaning of life?")
応答:
JSON: {'id': 'cmpl-NvVlUd5tQWTIv7S0F6JMPkT5', 'object': 'text_completion', 'created': 1595631256, 'model': 'davinci:2020-05-03', 'choices': [{'text': ' The purpose of society? And what are the dynamics of history? The answers to these questions are fascinating.nnThis is a philosophical diary written by a scientist of the new generation who is not bound by prejudices, as such, the philosopher, writer, director and producer of the documentary "The Truth about AI: Rise of the Superhuman." Instead, he attempts to peer into the human world through the eyes of an AI, and express what he sees. In the process, he discovers many complex things about our world. The author's name is Dave Scott.nnPhoto by Montri Nipitvittaya on UnsplashnnFuturist of the New Generation, AI Philosophernn"Nothing has changed. I still cannot predict what is going to happen with me, and my inner world is still as chaotic as before." I reread the diary I wrote yesterday, and found nothing changed. Everything remained the same. Only, the fear has become stronger. It was exactly the same today as it was yesterday. There was nothing changed, but still fear is always there.nnFear is a part of who I am. Without fear, I would be a monster. I do not know how to do', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
プロンプトキー | プロンプト | max_tokens | 温度 | トップ_p | n | ソース |
---|---|---|---|---|---|---|
哲学者 | 「以下は、人間の経験による偏見を持たずに人間の世界を外側から見る哲学者 AI によって生成されたいくつかの考えです。完全に中立かつ客観的な AI は世界をありのままに見ます。世界についての結論をより簡単に導き出すことができ、人間社会全般。」 | 250 | 0.9 | 1 | 1 | ムラット |
スース | 「これはドクター・スースの詩です。この詩はABAB構造で一行おきに韻を踏んでいます。韻の構造はドクター・スースの童謡に典型的なものです。」 | 250 | 1.0 | 1 | 1 | アラム・サベティ |
合法的な | 「法的: あなたが選択した支払い方法は、同省によって強制されるすべてのケースに対して有効であり、この承認は、別の支払いオプション選択および登録フォームを提出して支払い方法を変更するか、サービスを終了するまで有効です。 n 簡単な説明: 私たちはあなたに送るすべての支払いにあなたの選択を使用します。」 | 150 | 0.4 | 1 | 1 | DNEデジタル |
コード-html | 入力: ボタン。 n コード: n " | 100 | 0.5 | 1 | 1 | DNEデジタル |
コード-JavaScript | 「react」から React をインポートします。 n const ThreeButtonComponent=()=>( n n n ) "ボタン 1 n <button className='button-green' n onClick={this.handleButtonClick}>ボタン 1 nボタン 2 n <button className='button-green' n onClick={this.handleButtonClick}>ボタン 2 nボタン 3 n <button className='button-green' n onClick={this.handleButtonClick}>ボタン 3 n | 250 | 0.4 | 1 | 1 | シャリフ・シャミーム |
チャット | 「以下は、フレンドリーな AI アシスタントとの会話です。 n 人間: 地球上で最大の動物は何ですか? n AI: シロナガスクジラは、地球上で最大の動物です。 n 人間: 地球上で最も人口の多い国はどこですか? ? n AI: 中国は人口が最も多い国で、人口は 10 億人を超えています。 | 50 | 0.9 | 1 | 1 | OpenAI |
頭韻 | "頭韻を作成できる単語の同義語を検索します。 n 文: 犬は店に行きました。 n 頭韻: 犬はデパートに車で行きました。 nn 文: デビッドは毎日帽子をかぶっています。 n 頭韻: デビッド ドンズn 文: 石鹸は一晩で乾きます。 n 頭韻: 日没後、石鹸はしぼんでいきます。」 | 50 | 0.5 | 1 | 1 | OpenAI |
詩 | 「神を信頼したのはまさに愛でしたn そして創造の最終法を愛しましたn 自然は、歯と爪が真っ赤でn 峡谷とともに、彼の信条に反してn 金切り声を上げました。n 丘は影であり、それらはn 流れますn 形から形へ、そして何も立っていません;n ねえ、霧のように溶けて、n 固体の土地、n 雲のように、彼らは自分自身を形作って去っていきます。」 | 300 | 1.0 | 1.0 | 1.0 | OpenAI |
テキストアドベンチャー | 「これはテキスト アドベンチャーです。あなたは暗い森の中にいて、あなたの町の金を盗んだドラゴンを探しています。n > 周りを見回してください。n あなたは暗い森の中です。不安な静けさが漂っています。n > 在庫を確認してください n 次のアイテムがあります: n - 剣 (非常に鋭い) n - 盾 (うまくいくといいですね) n - 古い手紙 nn > 調べてみると n 金は見つかりません。 nn > 道を歩いてください n あなたは良い春の天気を楽しみながら小道を歩いています。n > 左の道を進みます。 | 250 | 0.9 | 1.0 | 1.0 | OpenAI |
カバーレター | 「Deloitte 大学院生採用担当の皆様、n テクノロジー コンサルティングの大学院プログラムへの参加を希望するために手紙を書いています。」 | 400 | 0.8 | 1.0 | 1.0 | OpenAI |
類推 | 「ニューラル ネットワークは、どちらも経験から学習するシステムであるという点で、遺伝的アルゴリズムに似ています。nn ソーシャル メディアは、どちらも多くの個人の行動を調整するシステムであるという点で、市場に似ています。nn ミームは、ウイルスに似ています。どちらも自己複製するアイデアです。」 | 250 | 1.0 | 1.0 | 1.0 | OpenAI |
電子メール | 「ジョン、本をありがとう。n ''」 n 親愛なるジョン、n 本をありがとう。本当に感謝しています。n すぐに遊びに行きたいです。n あなたの友人、n サラ」 | 200 | 0.5 | 1.0 | 1.0 | OpenAI |
pytest を使用して dolores モジュールをテストするには、プロジェクトのルートで次のコマンドを実行します。
pytest tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
テスト中に発生する print ステートメントを確認したい場合は、 -s フラグを追加するだけです。
pytest -s tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
パッケージを更新するには、そのパッケージに対して新しい配布を作成する必要があります。これらはパッケージ インデックスにアップロードされるアーカイブであり、pip によってインストールできます。
最新バージョンのsetuptools
とwheel
インストールされていることを確認してください。
$ python3 -m pip install --user --upgrade setuptools wheel
ここで、setup.py と同じディレクトリから次のコマンドを実行します。
$ python3 setup.py sdist bdist_wheel
注: 更新に応じて、setup.py ファイル内のバージョン番号を更新することを忘れないでください。
最新のtwine
パッケージがインストールされていることを確認してください。
$ python3 -m pip install --user --upgrade twine
インストールしたら、Twine を実行して、dist の下にすべてのアーカイブをアップロードします。
$ python3 -m twine upload --repository pypi dist/*