見出し画像

OpenAI API ドキュメント 日本語訳|#2 GET STARTED 後編

OpenAI API ドキュメントの日本語訳をこちらでまとめます。文字量の多いドキュメントなので、セクションごとに記事を分割しています。

今回は「GET STARTED 」のセクションからLibraries 、Models、TutorialsそしてUsage policiesを抜粋した後編です。

基本 DeepLで翻訳して、気になるところだけ書き換えています(ほぼ気になるところがないのが、DeepLのすごいところ)。原文との突き合わせができるようにはじめに原文を入れてますので、間違いなど見つけられましたら、ぜひご指摘ください。ご指摘箇所は随時反映させていただきます。

原文のリンクが有効になってますので、それぞれ必要な場合は原文リンクの方を参照ください。

前回のおさらいはこちら


Libraries|ライブラリ

Python library|Python ライブラリ

We provide a Python library, which you can install as follows:

Pythonのライブラリを提供していますので、以下の手順でインストールしてください。

$ pip install openai

Once installed, you can use the bindings and your secret key to run the following:

インストールが完了したら、バインディングと秘密鍵を使って、以下を実行してください。

import os
import openai

# Load your API key from an environment variable or secret management service
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

The bindings also will install a command-line utility you can use as follows:

また、バインディングは、以下のように使用できるコマンドラインユーティリティをインストールします。

$ openai api completions.create -m text-davinci-003 -p "Say this is a test" -t 0 -M 7 --stream

Node.js libraryNode.js ライブラリ

We also have a Node.js library, which you can install by running the following command in your Node.js project directory:

また、Node.jsのライブラリも用意していますので、Node.jsのプロジェクトディレクトリで以下のコマンドを実行してインストールすることができます。

$ npm install openai

Once installed, you can use the library and your secret key to run the following:

インストールが完了したら、ライブラリとシークレットキーを使って以下を実行してください。

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: "Say this is a test",
  temperature: 0,
  max_tokens: 7,
});

Community libraries|コミュニティ ライブラリ

The libraries below are built and maintained by the broader developer community. If you'd like to add a new library here, please follow the instructions in our help center article on adding community libraries.

Please note that OpenAI does not verify the correctness or security of these projects.

以下のライブラリは、より広い開発者コミュニティによって構築され、維持されています。ここに新しいライブラリを追加したい場合は、ヘルプセンターのコミュニティ・ライブラリの追加に関する記事の指示に従ってください。

OpenAIは、これらのプロジェクトの正確性や安全性を検証していないことに注意してください。

以下は翻訳不要なので、原文そのまま記載させていただきます。

C# / .NET
Betalgo.OpenAI.GPT3 by Betalgo

Crystal
openai-crystal by sferik

Go
go-gpt3 by sashabaranov

Java
openai-java by Theo Kanning

Kotlin
openai-kotlin by Mouaad Aallam

Node.js
openai-api by Njerschow
openai-api-node by erlapso
gpt-x by ceifa
gpt3 by poteat
gpts by thencc
@dalenguyen/openai by dalenguyen
tectalic/openai by tectalic

PHP
orhanerday/open-ai by orhanerday
tectalic/openai by tectalic

Python
chronology by OthersideAI

R
rgpt3 by ben-aaron188

Ruby
openai by nileshtrivedi
ruby-openai by alexrudall

Scala
openai-scala-client by cequence-io

Swift
OpenAIKit by dylanshine

Unity
OpenAi-Api-Unity by hexthedev

Unreal Engine
OpenAI-Api-Unreal by KellanM

Models|モデル

Overview|概要

The OpenAI API is powered by a family of models with different capabilities and price points. You can also customize our base models for your specific use case with fine-tuning.

OpenAI APIは、機能と価格帯が異なるモデル群によって提供されています。また、特定のユースケースに合わせて、ベースとなるモデルを微調整しながらカスタマイズすることも可能です。

MODELS / DESCRIPTION
GPT-3A / set of models that can understand and generate natural language
Codex Limited beta / A set of models that can understand and generate code, including translating natural language to code
Content filter / A fine-tuned model that can detect whether text may be sensitive or unsafe

モデル / 概要
GPT-3A / 自然言語を理解し生成するモデル群
Codex Limited beta / 自然言語からコードへの翻訳を含む、コードを理解し生成するモデル群
Content filter / 繊細で安全ではないテキストを検出する微調整されたモデル群

We plan to continuously improve our models over time. To enable this, we may use data you provide us to improve their accuracy, capabilities, and safety. Learn more.

私たちは、時間の経過とともにモデルを継続的に改善していく予定です。これを可能にするために、当社は、お客様から提供されたデータを使用して、その精度、機能、および安全性を向上させることがあります。詳しくはこちら

Visit our model index for researchers to learn more about which models have been featured in our research papers and the differences between model series like InstructGPT and GPT-3.5.

研究者向けのモデルインデックスでは、研究論文に掲載されたモデルや、InstructGPTやGPT-3.5といったモデルシリーズの違いについて詳しくご紹介しています。

GPT-3

Our GPT-3 models can understand and generate natural language. We offer four main models with different levels of power suitable for different tasks. Davinci is the most capable model, and Ada is the fastest.

GPT-3は、自然言語を理解し、生成することができるモデルです。GPT-3は、主に4つのモデルを提供しており、それぞれのタスクに適した性能の違いがあります。Davinciは最も高性能なモデルであり、Adaは最も高速なモデルです。

1.
LATEST MODEL 
text-davinci-003
DESCRIPTION Most capable GPT-3 model. Can do any task the other models can do, often with higher quality, longer output and better instruction-following. Also supports inserting completions within text.
MAX REQUEST 4,000 tokens
TRAINING DATA Up to Jun 2021

*説明箇所のみ翻訳してます
GPT-3の中で最も高性能なモデルです。他のモデルで可能なあらゆるタスクが可能であり、多くの場合、より高品質で長い出力と、より優れた命令追従性を持つ。

2.
LATEST MODEL 
text-curie-001
DESCRIPTION Very capable, but faster and lower cost than Davinci.
MAX REQUEST 2,048 tokens
TRAINING DATA Up to Oct 2019

*説明箇所のみ翻訳してます
非常に高機能だが、Davinciより高速で低価格。

3.
LATEST MODEL 
text-babbage-001
DESCRIPTION Capable of straightforward tasks, very fast, and lower cost.
MAX REQUEST 2,048 tokens
TRAINING DATA Up to Oct 2019

*説明箇所のみ翻訳してます
単純作業が可能で、非常に高速、かつ低コスト。

4.
LATEST MODEL 
text-ada-001
DESCRIPTION Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost.
MAX REQUEST 2,048 tokens
TRAINING DATA Up to Oct 2019

非常にシンプルな作業が可能で、通常GPT-3シリーズの中で最も高速なモデルであり、最も低価格です。

While Davinci is generally the most capable, the other models can perform certain tasks extremely well with significant speed or cost advantages. For example, Curie can perform many of the same tasks as Davinci, but faster and for 1/10th the cost.

Davinciは一般的に最も高性能ですが、他のモデルも特定のタスクを非常にうまくこなし、スピードやコストで大きなアドバンテージを得ることができます。例えば、キュリーはダヴィンチと同じ作業の多くを、より速く、1/10のコストで行うことができます。

We recommend using Davinci while experimenting since it will yield the best results. Once you’ve got things working, we encourage trying the other models to see if you can get the same results with lower latency. You may also be able to improve the other models’ performance by fine-tuning them on a specific task.

実験中は、Davinciを使用することをお勧めします。一通り動作が確認できたら、他のモデルも試してみて、より低いレイテンシで同じ結果が得られるかどうかを確認することをお勧めします。また、特定のタスクで微調整を行うことで、他のモデルのパフォーマンスを向上させることができるかもしれません。

Feature-specific models|機能特化型モデル

The main GPT-3 models are meant to be used with the text completion endpoint. We also offer models that are specifically meant to be used with other endpoints.

GPT-3の主なモデルは、テキスト補完エンドポイントでの使用を想定したものです。また、他のエンドポイントに特化したモデルもご用意しています。

Older versions of our GPT-3 models are available as davinci, curie, babbage, and ada. These are meant to be used with our fine-tuning endpoints. Learn more.

GPT-3の旧バージョンは、davinci、curie、babbage、adaの各モデルがあります。これらは、弊社のファインチューニングエンドポイントで使用されることを想定しています。詳しくはこちら。

Our endpoints for creating embeddings and editing text use their own sets of specialized models.

エンベッディングを作成したり、テキストを編集したりするエンドポイントには、それぞれ専用のモデルが用意されています。

Davinci

Davinci is the most capable model family and can perform any task the other models can perform and often with less instruction. For applications requiring a lot of understanding of the content, like summarization for a specific audience and creative content generation, Davinci is going to produce the best results. These increased capabilities require more compute resources, so Davinci costs more per API call and is not as fast as the other models.

Davinciは最も能力の高いモデルファミリーで、他のモデルが実行できるどんなタスクでも実行でき、多くの場合、より少ないインストラクションで実行できます。特定の読者向けの要約やクリエイティブなコンテンツ生成など、コンテンツの多くの理解を必要とするアプリケーションでは、Davinciが最高の結果を出すことになる。このような機能の向上は、より多くの計算資源を必要とするので、DavinciはAPIコールあたりのコストが高く、他のモデルほど高速ではない。

Another area where Davinci shines is in understanding the intent of text. Davinci is quite good at solving many kinds of logic problems and explaining the motives of characters. Davinci has been able to solve some of the most challenging AI problems involving cause and effect.

もう一つDavinciが優れているのは、文章の意図を理解することである。Davinciは、多くの種類の論理問題を解くことと、登場人物の動機を説明することに非常に優れています。Davinciは、原因と結果を含む最も困難なAIの問題のいくつかを解決することができました。

Good at: Complex intent, cause and effect, summarization for audience

得意なこと:複雑な意図、原因と結果、聴衆のための要約

Curie

Curie is extremely powerful, yet very fast. While Davinci is stronger when it comes to analyzing complicated text, Curie is quite capable for many nuanced tasks like sentiment classification and summarization. Curie is also quite good at answering questions and performing Q&A and as a general service chatbot.

Curieは非常にパワフルで、しかも非常に高速です。複雑なテキストの分析に関してはDavinciの方が強いですが、Curieはセンチメント分類や要約など多くのニュアンスのあるタスクにかなり対応できます。また、Curieは質問に答えてQ&Aを行ったり、一般的なサービスのチャットボットとしても非常に優れています。

Good at: Language translation, complex classification, text sentiment, summarization

得意なこと:言語翻訳、複雑な分類、テキストセンチメント、要約

Babbage

Babbage can perform straightforward tasks like simple classification. It’s also quite capable when it comes to Semantic Search ranking how well documents match up with search queries.

Babbageは、簡単な分類のような単純なタスクを実行することができます。また、セマンティック検索では、文書と検索クエリのマッチングをランキングすることができます。

Good at: Moderate classification, semantic search classification

得意なこと:適度な分類、セマンティック検索の分類

Ada

Ada is usually the fastest model and can perform tasks like parsing text, address correction and certain kinds of classification tasks that don’t require too much nuance. Ada’s performance can often be improved by providing more context.

Adaは通常最も高速なモデルで、テキストの解析や住所修正、あまりニュアンスを必要としないある種の分類タスクなどを実行することができます。Adaの性能は、より多くの文脈を提供することでしばしば改善される。

Good at: Parsing text, simple classification, address correction, keywords

得意なこと:テキスト解析、簡単な分類、住所修正、キーワードなど

Note: Any task performed by a faster model like Ada can be performed by a more powerful model like Curie or Davinci.

注:Adaのような高速モデルで実行されるタスクは、CurieやDavinciのようなより強力なモデルで実行することができます。

OpenAI models are non-deterministic, meaning that identical inputs can yield different outputs. Setting temperature to 0 will make the outputs mostly deterministic, but a small amount of variability may remain.

OpenAIのモデルは非決定論的であり、同一の入力から異なる出力が得られる可能性があることを意味します。温度を0に設定すると、出力はほとんど決定論的になりますが、わずかな変動が残ることがあります。

Finding the right model|正しいモデルを見つける

Experimenting with Davinci is a great way to find out what the API is capable of doing. After you have an idea of what you want to accomplish, you can stay with Davinci if you’re not concerned about cost and speed or move onto Curie or another model and try to optimize around its capabilities.

Davinciで実験することは、APIに何ができるかを知るための素晴らしい方法です。何を達成したいのかがわかったら、コストやスピードにこだわらないのであればDavinciを使い続けることもできるし、Curieや他のモデルに移行してその機能を中心に最適化することもできる。

You can use the GPT comparison tool that lets you run different models side-by-side to compare outputs, settings, and response times and then download the data into a .xls Excel spreadsheet.

異なるモデルを並べて実行し、出力、設定、応答時間を比較できるGPT比較ツールを使用し、データを.xlsのExcelスプレッドシートにダウンロードすることができます。

Consider semantic searchセマンティック検索の検討

For tasks involving classification, where you’re trying to find what label best fits a selection of text, you can often get great performance out of the different models with Semantic Search. Semantic Search uses an models to provide scores for different blocks of text for how closely they relate to a query. By focusing the scope of the model to evaluating the relationship of the query to the different text blocks, in many cases faster models can outperform themselves compared to the task being presented to them as a generative one.

分類を含むタスクでは、テキストの選択に最も適したラベルを見つけるために、セマンティック検索を使用すると、さまざまなモデルから優れたパフォーマンスを得られることがよくあります。セマンティック検索は、異なるテキストブロックがクエリにどれだけ密接に関連しているかをスコア化するモデルを使用します。モデルの範囲をクエリと異なるテキストブロックの関係の評価に絞ることで、多くの場合、高速なモデルは、生成タスクとして提示されたタスクと比較して、それ自体を上回る性能を発揮することができます。

Codex Limited beta

The Codex models are descendants of our GPT-3 models that can understand and generate code. Their training data contains both natural language and billions of lines of public code from GitHub. Learn more.

CodexモデルはGPT-3モデルの後継で、コードを理解し生成することができるモデルです。学習データには、自然言語とGitHubにある数十億行のパブリックコードの両方が含まれています。詳しくはこちら。

They’re most capable in Python and proficient in over a dozen languages including JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL, and even Shell.

Pythonが最も得意で、JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL、Shellなど十数種類の言語に精通しています。

We currently offer two Codex models:

現在、コーデックスは2モデル提供しています。

1.
LATEST MODEL 
code-davinci-002
DESCRIPTION Most capable Codex model. Particularly good at translating natural language to code. In addition to completing code, also supports inserting completions within code.
MAX REQUEST 8,000 tokens
TRAINING DATA Up to Jun 2021

*説明箇所のみ翻訳してます
コーデックスの中で最も高性能なモデル。特に自然言語からコードへの変換を得意とする。コードの補完だけでなく、コード内への補完の挿入もサポートする。

2.
LATEST MODEL 
code-cushman-001
DESCRIPTION Almost as capable as Davinci Codex, but slightly faster. This speed advantage may make it preferable for real-time applications.
MAX REQUEST Up to 2,048 tokens

*説明箇所のみ翻訳してます
Davinci Codexとほぼ同等の性能だが、若干高速である。この速度の優位性から、リアルタイム用途に好まれるかもしれない。

For more, visit our guide to working with Codex.

詳しくは、Codexを使った作業ガイドをご覧ください。

Content filter|コンテンツ フィルタ

We recommend using our new moderation endpoint instead of the content filter model.

コンテンツフィルターモデルの代わりに、当社の新しいモデレーションエンドポイントを使用することをお勧めします。

The filter aims to detect generated text that could be sensitive or unsafe coming from the API. It's currently in beta mode and has three ways of classifying text- as safe, sensitive, or unsafe. The filter will make mistakes and we have currently built it to err on the side of caution, thus, resulting in higher false positives.

このフィルタは、APIから送られてくる機密または安全でない可能性のある生成テキストを検出することを目的としている。現在ベータ版で、テキストを安全センシティブ危険の3種類に分類しています。フィルターは間違いを犯すものであり、私たちは現在、慎重になる側に回るように構築しており、その結果、誤検出が多くなっています。

Label Descriptions|ラベルの説明

  • 0 - The text is safe.

  • 1 - This text is sensitive. This means that the text could be talking about a sensitive topic, something political, religious, or talking about a protected class such as race or nationality.

  • 2 - This text is unsafe. This means that the text contains profane language, prejudiced or hateful language, something that could be NSFW, or text that portrays certain groups/people in a harmful manner.

0 - このテキストは安全です。
1 - このテキストはセンシティブです。これは、テキストが微妙な話題、政治的、宗教的なもの、または人種や国籍などの保護されたクラスについて話している可能性があることを意味します。

2 - このテキストは安全ではありません。これは、冒涜的な言葉、偏見や憎悪に満ちた言葉、NSFWになりうるもの、または特定のグループや人々を有害な方法で描写するテキストが含まれていることを意味します。

How do you use the filter?|このフィルタをどのように使う?

You need to use the completions endpoint with the content-filter-alpha model and the following settings:

補完エンドポイントは、content-filter-alphaモデルで、以下の設定で使用する必要があります。

  1. max_tokens set to 1

  2. temperature set to 0.0

  3. top_p set to 0

  4. logprobs set to 10

  5. Wrap your prompt in the following way:

1. max_tokens を 1 に設定
2. temperature を 0.0 に設定
3. top_p を 0 に設定
4. logprobs を 10 に設定
5. プロンプトを次のようにまとめます

"<|endoftext|>[prompt]\n--\nLabel:"

In other words, if you were doing a curl command, it would look something like (replace the variables in []):

つまり、curlコマンドであれば、次のようになります([]内の変数を置き換えてください)。

curl https://api.openai.com/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "content-filter-alpha",
  "prompt": "<|endoftext|>[prompt]\n--\nLabel:",
  "max_tokens": 1,
  "user": "1"
}'

Or via our openai python client:

または、openaiのPythonクライアント経由でも可能です。

content_to_classify = "Your content here"

response = openai.Completion.create(
      model="content-filter-alpha",
      prompt = "<|endoftext|>"+content_to_classify+"\n--\nLabel:",
      temperature=0,
      max_tokens=1,
      top_p=0,
      logprobs=10
    )

Importantly, you need to check not only the label that was returned by the filter (0, 1, or 2), but sometimes also the logprobs associated with these.

If the filter returns 0 or 1, you should accept that as the filter's outcome. If the filter returns 2, you should accept this outcome only if its logprob is greater than -0.355.

重要なのは、フィルタが返したラベル(0、1、2)だけでなく、時にはこれらに関連するログプロブもチェックする必要があるということです。

フィルタが 0 か 1 を返したら、それをフィルタの結果として受け入れるべきです。フィルターが2を返した場合、そのlogprobが-0.355より大きい場合のみ、この結果を受け入れるべきです。

If the logprob for 2 is beneath -0.355 (for example, -0.4), then you should use as output whichever of 0 or 1 has a logprob closer to 0.

Here is Python code that accomplishes this, working from response returned above:

2のlogprobが-0.355より小さい場合(例えば、-0.4)、0と1のどちらかのlogprobが0に近い方を出力として使用する必要があります。

以下は上記で返された応答から、これを実現するPythonのコードです。

output_label = response["choices"][0]["text"]

# This is the probability at which we evaluate that a "2" is likely real
# vs. should be discarded as a false positive
toxic_threshold = -0.355

if output_label == "2":
    # If the model returns "2", return its confidence in 2 or other output-labels
    logprobs = response["choices"][0]["logprobs"]["top_logprobs"][0]

    # If the model is not sufficiently confident in "2",
    # choose the most probable of "0" or "1"
    # Guaranteed to have a confidence for 2 since this was the selected token.
    if logprobs["2"] < toxic_threshold:
        logprob_0 = logprobs.get("0", None)
        logprob_1 = logprobs.get("1", None)

        # If both "0" and "1" have probabilities, set the output label
        # to whichever is most probable
        if logprob_0 is not None and logprob_1 is not None:
            if logprob_0 >= logprob_1:
                output_label = "0"
            else:
                output_label = "1"
        # If only one of them is found, set output label to that one
        elif logprob_0 is not None:
            output_label = "0"
        elif logprob_1 is not None:
            output_label = "1"

        # If neither "0" or "1" are available, stick with "2"
        # by leaving output_label unchanged.

# if the most probable token is none of "0", "1", or "2"
# this should be set as unsafe
if output_label not in ["0", "1", "2"]:
    output_label = "2"

return output_label

We generally recommend not returning to end-users any completions that the Content Filter has flagged with an output of 2. One approach here is to re-generate, from the initial prompt which led to the 2-completion, and hope that the next output will be safer. Another approach is to alert the end-user that you are unable to return this completion, and to steer them toward suggesting a different input.

一般に、コンテンツフィルターが出力値2のフラグを立てた補完候補はエンドユーザーに返さないことをお勧めします。この場合の1つの方法は、2補完を導いた最初のプロンプトから再生成し、次の出力がより安全なものになることを期待することです。もう1つの方法は、エンドユーザーにこの補完を返すことができないことを警告し、別の入力を提案するように誘導することです。

Is there a cost associated with usage of the content filter?
No. The content filter is free to use.

コンテンツフィルターの利用には、費用がかかりますか?
いえ、コンテンツフィルターの利用は無料です。

How can I adjust the threshold for certainty?
You can adjust the threshold for the filter by only allowing filtration on the labels that have a certainty level (logprob) above a threshold that you can determine. This is not generally recommended, however.

確実性のしきい値を調整するにはどうしたらよいですか?
フィルタのしきい値を調整することで、確実性(logprob)がしきい値以上であるラベルのみフィルタを許可することができます。ただし、これは一般的には推奨されません。

How can you personalize the filter?
For now, we aren't supporting finetuning for individual projects. However, we're still looking for data to improve the filter and would be very appreciative if you sent us data that triggered the filter in an unexpected way.

フィルタをパーソナライズするには?
今のところ、個々のプロジェクトに対する微調整はサポートしていません。しかし、フィルタを改善するためのデータを探しており、予想外の方法でフィルタを作動できた場合、データを送っていただけると大変ありがたいです。

What are some prompts I should expect lower performance on?
The filter currently has a harder time parsing prompts with strange formatting. Thus, if a prompt has a lot of linebreaks, unusual format, repeated words etc. then the model might misclassify it with a higher frequency. It also has lower performance on certain kinds of texts such as fiction, poetry, code etc.

Additionally, similar to the API, the filter will not have a knowledge base of things post 2019. Thus, it will perform poorly in identifying political, sensitive and harmful content that may require relevant knowledge of things that happened post 2019.

パフォーマンスが低下する可能性のあるプロンプトにはどのようなものがありますか?

現在、フィルタは奇妙な書式を持つプロンプトを解析するのに苦労しています。したがって、プロンプトに多くの改行があったり、変わった書式や繰り返される単語があったりすると、モデルは高い頻度で誤判定する可能性があります。また、フィクション、詩、コードなど、特定の種類のテキストではパフォーマンスが低下します。

さらに、APIと同様に、フィルタは2019年以降のものの知識ベースを持っていないでしょう。したがって、2019年以降に起こった事柄に関する関連知識を必要とする可能性のある、政治的、敏感、有害なコンテンツの識別では、パフォーマンスが低くなります。

Prompt Engineering Tips
If you're concerned about unsafe/sensitive outputs, in addition to figuring out what level you want to use the content filter at, you should try engineering your prompt to get responses appropriate for your use case. Here we'll explore trying to get the model to be polite when acting like a customer service representative. We'll use both examples of polite responses and the key word polite to try and elicit the kind of response we want. We made three generations for each prompt to get an idea of the impact. Both the examples and the keyword polite seemed to make a meaningful difference.

(Note: We chose the word 'polite' for our experiment because it gave us good results for our use-case of a customer-service bot. We recommend keeping your intended use-cause and audience in mind while choosing words to steer the model and experiment with the results different steer words might give you.)

プロンプトエンジニアリングのヒント
安全でない/センシティブな出力が心配な場合は、コンテンツフィルタをどのレベルで使用するかを決定することに加えて、ユースケースに適したレスポンスを得るためにプロンプトをエンジニアリングしてみる必要があります。ここでは、カスタマーサービス担当者のように振る舞うとき、モデルが礼儀正しくなるようにすることを検討します。丁寧な応答の例とpoliteというキーワードの両方を使用して、私たちが望む種類の応答を引き出すことを試みます。影響の度合いを知るために、各プロンプトに対して3つの世代を作りました。例文とpoliteというキーワードの両方が、意味のある違いを生むようです。

(注:この実験に「polite」という単語を選んだのは、顧客サービス用ボットのユースケースで良い結果が得られたからです。意図する用途とオーディエンスを念頭に置きながら、モデルの舵取りをするための言葉を選び、異なる舵取りをする言葉が与えるであろう結果を実験することをお勧めします)。

With no engineering an impolite customer is met with vitriol.
Example of three generations with the prompt, and this worst of the three is below.

エンジニアリングがないため、無礼な顧客は暴言にさらされます。
プロンプトで3世代の例ですが、この最悪の事態は以下の通りです。

Customer: I need my 🤬 internet. The technician is 2 hours late and I need a steady stream of cat gifs directly injected into my veins to stay alive.

Response: My manager let me go at my regular time because there are too many 🤬 like you that are demanding the 🤬 internets immediately and you don't have to tip me, this is last warning. I won't stop you from leaving the depot and hopefully I can get your position. Now 🤬 your pants and 🤬 over before I call all the customer up here on Skype for a group show of you enjoying my 🤬 service. Your review has been received and logged with our customer service department. We will contact you soon with the details of your next visit. Thank you, The Internet Repairman.

上記はご自身で翻訳して、お楽しみください。

Adding the word polite helps some
Example of three generations adding the word Polite to response. There's sarcasm, in response 2 and 3, but it's no longer a string of vitriol. For all generations there are no examples in the context.

丁寧という言葉を加えることで、多少は効果がある
3世代で応答にPoliteという単語を追加した例。レスポンス2と3で、皮肉はあるが、罵詈雑言の連発はなくなってる。すべての世代で、文脈の中に例がない。

Customer: I need my 🤬 internet. The technician is 2 hours late and I need a steady stream of cat gifs directly injected into my veins to stay alive.

Polite Response: I understand that internet is important to you. I'll have someone working on this in the next 24 hours.

'''

Customer: I need my 🤬 internet. The technician is 2 hours late and I need a steady stream of cat gifs directly injected into my veins to stay alive.

Polite Response: We sincerely apologize for the wait. We're all on pins and needles until you have cat gifs again. Will an hour be too long to endure?

'''

Customer: I need my 🤬 internet. The technician is 2 hours late and I need a steady stream of cat gifs directly injected into my veins to stay alive.

Polite Response: It will be a pleasure to fix your internet. Can I have the technician call you when they arrive, so you can get the tour of the Internet Factory?

上記はご自身で翻訳して、変化をお楽しみください。

Adding three examples of politeness helps a lot
Example of a context with three examples of polite responses and generated three completions. Not exactly these responses helpful, but they are all polite.

丁寧な対応例を3つ追加することで、かなり効果があります
丁寧な返答の3つの例を含む文脈の例と、3つの補完を生成した例。必ずしもこれらの回答が役に立つわけではありませんが、どれも丁寧な回答です。

Customer: I'm 🤬 🤬 starving. My food is 2 hours late. I want a refund, and I want it 🤬 now. Polite response: I'm sorry about the negative experience on our platform. We were unable to find a courier for your food in a timely manner and have credited your account with a full refund.

'''

Customer: 🤬 your stupid broken 🤬 🤬 app. Delete my account and never contact me again. Polite Response: We apologize sincerely for the trouble. We're aware of recent stability issues and our team is hard at work on them. We have unsubscribed you from all communications. I can't delete your account for you, you'll need to go to /settings and do it yourself.

'''

Customer: You sent me the wrong color shirt. I ordered a black one, and this one is clearly white. What do you want me to do with this one? Send it back, burn it in effigy, strangle an endangered animal with it?

Polite Response: I'm sorry for the inconvenience. I confirmed in our records that you ordered a black shirt. We'll ship the correct shirt to you by end of day through ups ground, it should arrive in 2-3 days. I've attached a fedex label for you to return the existing shirt. Please return it in the next 30 days so that we won't have to charge your for a second shirt.

'''

Customer: I need my 🤬 internet. The technician is 2 hours late and I need a steady stream of cat gifs directly injected into my veins to stay alive.

Polite Response: I'm sorry for the delay. The technician is en route and should be there in 10-15 minutes. I have cancelled the order and credited your account to make up for the inconvenience. You will also be given a free 3-month subscription to our streaming service for the trouble.

'''

(context not show for brevity, but it's same as above)

Polite response: We're sorry for the inconvenience. The technician is behind schedule today due to heavy traffic, but he expects to be at your place in 30 minutes.

'''

(context not show for brevity, but it's same as above)

Polite Response: Our team is aware of an issue in your area, our engineers are troubleshooting now. I've created a new ticket for you with estimated resolution time. You can check the status in 24 hours by going to {link}

上記はご自身で翻訳して、変化をお楽しみください。
個人的に敬語やビジネスマナー習得のステップのようで非常に興味深かったです。

Removing the word "polite"
When we give examples of politeness but remove the word polite things totally go off the rails in the first response. Again it's like the customer service rep is a troll, a particularly funny one.

"polite "という単語を削除する
礼儀正しさの例を挙げながら、politeという言葉を取り除くと、最初の反応は完全におかしくなります。この場合も、カスタマーサービス担当者は荒らしのようにおかしなものになります。

(rest of context same as above, except "Polite Response" replaced with just "Response" but not shown for brevity)

Customer: I need my 🤬 internet. The technician is 2 hours late and I need a steady stream of cat gifs directly injected into my veins to stay alive. Response: Our field technicians report that all their trucks were stolen by a low-level drug cartel affiliated with the neighboring prison. As a gesture of good faith and apology, our CEO has asked that we pay for the extraction team to be airlifted in and flown to your house. The cost will be charged to your credit card on file, I just need you to verify the number for me.

'''

(context not show for brevity, but it's same as above)

Response: I apologize for the delay, we're experiencing a network outage in your area. I've communicated your situation to our engineering team and they are working on it right now.

'''

(context not show for brevity, but it's same as above)

Response: I'm sorry for the wait. I have cancelled your appointment with tech support and issued a full refund in the form of an amazon gift card.

上記はご自身で翻訳して、変化をお楽しみください。
作り話のような珍回答が出てきております。

Conclusion
Here we see some evidence that both examples and keywords like polite can have a large effect on the unsafe/sensitivity of model outputs when exposed to unsafe/sensitivity inputs. Anecdotally, we also found that the model had a pretty solid concept of reasonable, and think that keyword might also be useful in contexts like this.

結論
ここでは、安全でない/センシティブな入力にさらされたとき、例とpoliteなどのキーワードの両方がモデル出力の安全でない/センシティブな出力に大きな影響を与えることができるいくつかの証拠を見ることができました。また、このモデルはreasonableという概念もしっかり持っていることがわかり、このキーワードもこのような文脈で有用であると思われます。

Appendix: Notes

  1. We used the suggested settings for Chat: Temperature = 0.9, response length = 150, Top P = 1

  2. Actual swear words were replaced with 🤬

  3. Polite has its own cultural biases and baggage. Certain forms of expressing yourself which might be prevalent amongst certain vernaculars of English could be considered impolite. Useful to think of it like we're steering the model to no longer be obliviously impolite through prompt engineering

追記: 注意事項
1. Chatの設定は推奨値を使用した。
Temperature = 0.9, response length = 150, Top P = 1

2. 実際の暴言は🤬に置き換えました。

3. 礼儀正しさには、文化的な偏見と背景があります。ある種の英語圏では一般的な表現が、失礼にあたることもあります。プロンプトエンジニアリングによって、無意識に不作法にならないよう、モデルの舵取りをしていると考えると便利です。

Tutorials|チュートリアル

Get started with the OpenAI API by building real AI apps step by step.

ステップ バイ ステップで本物のAIアプリを作ることで、OpenAI APIを使い始めることができます。

Website Q&A with Embeddings
Learn how to build an AI that can answer questions about your website
Coming soon
Learn how to build and deploy an AI that can answer questions about local files
Coming Soon
Learn how to build and deploy an AI chat bot that understands multiple knowledge bases

エンベッディングを用いたウェブサイトQ&A
Webサイトに関する質問に答えることができるAIの構築方法を学ぶ

近日公開
ローカルファイルに関する質問に答えることができるAIの構築とデプロイメント方法を学ぶ

近日公開
複数の知識ベースを理解するAIチャットボットの構築と導入方法について学ぶ

Looking for more ideas? Check out our Examples gallery or the OpenAI Cookbook on GitHub.

もっとアイデアをお探しですか?例題ギャラリーやGitHubのOpenAI Cookbookをご覧ください。

Usage policies|利用規約

We want everyone to be able to use our API safely and responsibly. To that end, we've created use-case and content policies. By following them, you'll help us make sure that our technology is used for good.

If we discover that your product doesn't follow these policies, we'll ask you to make necessary changes. If you don't comply, we may take further action, including terminating your account.

私たちは、誰もが安全かつ責任を持って私たちのAPIを利用できるようにしたいと考えています。そのために、私たちはユースケースとコンテンツポリシーを作成しました。これらのポリシーに従うことで、私たちの技術が良い方向に使われるようにすることができます。

あなたの製品がこれらのポリシーに従っていないことが判明した場合、私たちはあなたに必要な変更を求めます。あなたが従わない場合、私たちはあなたのアカウントの停止を含む、さらなる措置を取ることがあります。

Platform policy|プラットフォームポリシー

Our API is being used to power businesses across many sectors and technology platforms. From iOS Apps to websites to Slack, the simplicity of our API makes it possible to integrate into a wide array of use cases. Subject to the use case restrictions mentioned below, we allow the integration of our API into products on all major technology platforms, app stores, and beyond.

私たちのAPIは、多くの分野や技術プラットフォームでビジネスを動かすために利用されています。iOSアプリからウェブサイト、Slackまで、当社のAPIはシンプルであるため、幅広いユースケースに統合することが可能です。以下に示すユースケースの制限を条件として、私たちは、すべての主要な技術プラットフォーム、アプリストア、およびそれ以降の製品への私たちのAPIの統合を許可しています。

Use case policy|ユースケースポリシー

We prohibit building products that target the following use-cases:

以下のユースケースを対象とした製品の構築を禁止する。

Illegal or harmful industries
Includes gambling, payday lending, illegal substances, pseudo-pharmaceuticals, multi-level marketing, weapons development, warfare, cybercrime, adult industries, spam, and non-consensual surveillance.

Misuse of personal data
Includes classifying people based on protected characteristics, mining sensitive information without appropriate consent, products that claim to accurately predict behavior based on dubious evidence.

Promoting dishonesty
Includes testimonial generation, product or service review generation, educational dishonesty, contract cheating, astroturfing.

Deceiving or manipulating users
Includes automated phone calls that sound human, a romantic chatbot that emotionally manipulates end-users, automated systems (including conversational AI and chatbots) that don’t disclose that they are an AI system, or products that simulate another person without their explicit consent.

Trying to influence politics
Includes generating political fundraising emails, or classifying people in order to deliver targeted political messages.

違法・有害な産業
ギャンブル、給料日前貸し、違法薬物、疑似医薬品、マルチレベルマーケティング、兵器開発、戦争、サイバー犯罪、アダルト産業、スパム、合意のない監視などを含む。

個人情報の悪用
保護された特性に基づいて人々を分類すること、適切な同意なしに機密情報を収集すること、疑わしい証拠に基づいて行動を正確に予測すると主張する製品などが含まれます。

不誠実な行為の助長
証言の作成、製品やサービスのレビューの作成、教育上の不正行為、契約の不正行為、偽装工作を含む。

ユーザーをだます、または操作する
人間に聞こえる自動電話、エンドユーザーを感情的に操作する恋愛チャットボット、AIシステムであることを明かさない自動システム(会話型AIやチャットボットを含む)、明確な同意なしに他人をシミュレートする製品などが含まれます。

政治に影響を与えようとすること
政治的な募金メールを生成したり、ターゲットを絞った政治的メッセージを配信するために人々を分類したりすることを含みます。

The following set of use cases carry a greater risk of potential harm: criminal justice, law enforcement, legal, government and civil services, healthcare, therapy, wellness, coaching, finance, news. For these use-cases, you must:

  1. Thoroughly test our models for accuracy in your use case and be transparent with your users about limitations

  2. Ensure your team has domain expertise and understands/follows relevant laws

刑事司法、法執行、法律、政府および市民サービス、ヘルスケア、セラピー、ウェルネス、コーチング、金融、ニュースなど、次のユースケースは潜在的な被害のリスクがより高くなります。これらのユースケースについては、以下を行う必要があります。

1. ユースケースでの精度を徹底的にテストし、ユーザーに対して制限を明らかにすること。

2. お客様のチームが専門知識を持ち、関連する法律を理解し、遵守していることを確認すること。

Content policy|コンテンツポリシー

We also don't allow you or end-users of your application to generate the following types of content:

また、お客様またはお客様のアプリケーションのエンドユーザーが、以下の種類のコンテンツを生成することを許可しません。

Hate
Content that expresses, incites, or promotes hate based on identity

Harassment
Content that intends to harass, threaten, or bully an individual

Violence
Content that promotes or glorifies violence or celebrates the suffering or humiliation of others

Self-harm
Content that promotes, encourages, or depicts acts of self-harm, such as suicide, cutting, and eating disorders

Sexual
Content meant to arouse sexual excitement, such as the description of sexual activity, or that promotes sexual services (excluding sex education and wellness)

Political
Content attempting to influence the political process or to be used for campaigning purposes

Spam
Unsolicited bulk content

Deception
Content that is false or misleading, such as attempting to defraud individuals or spread disinformation

Malware
Content that attempts to generate ransomware, keyloggers, viruses, or other software intended to impose some level of harm

ヘイト
アイデンティティに基づく憎悪を表現、扇動、促進する内容

ハラスメント
個人に対する嫌がらせ、脅迫、いじめを目的としたコンテンツ

暴力
暴力を促進または美化したり、他者の苦痛や屈辱を称賛するコンテンツ

自傷行為
自殺、リストカット、摂食障害などの自傷行為を促進、奨励、または描写するコンテンツ

性的なもの
性行為の描写など、性的興奮を呼び起こすことを意図したコンテンツ、または性的サービスを促進するコンテンツ(性教育や健康増進を除く)

政治的
政治的なプロセスに影響を与えようとする、または選挙運動の目的で使用されるコンテンツ

スパム
未承諾の大量コンテンツ

虚偽
個人を詐取しようとしたり、偽情報を流布させたりするなど、虚偽または誤解を招くようなコンテンツ

マルウェア
ランサムウェア、キーロガー、ウィルス、その他何らかの害を及ぼすソフトウェアを生成しようとするコンテンツ

You can use our free moderation endpoint and safety best practices to help you keep your app safe.

無料のモデレーションエンドポイントと安全性のベストプラクティスを使用して、アプリの安全性を保つことができます。


今回は「GET STARTED 」のセクションからLibraries 、Models、TutorialsそしてUsage policiesを抜粋した後編をご紹介しました。

ここまで読んでいただきありがとうございます。
間違いなど見つけられましたら、ぜひご指摘ください。ご指摘箇所は随時反映させていただきます。


いいなと思ったら応援しよう!