これはなに?
このガイドでは、ChatGPT APIの出力における繰り返しを減らす方法について説明する。frequency_penalty
と presence_penalty
は、生成AIが出力する文章のパターンやトピックをコントロールするためのパラメータであり、それぞれ、同じ単語やフレーズの繰り返しを抑えたり、新しいトピックに話題を切り替えたりするのに使う。
- frequency_penalty: 文章内で同じ単語が何度も出てくるのを防ぐためのパラメータ。この値を高くすると、同じ単語が繰り返されにくくなり、文章の繰り返しを抑える。
- presence_penalty: これまで使われていない単語を使うように促すパラメータ。値を高くすると、新しい単語を生成しやすくなり、文章に新鮮さが生まれる。
対象読者
- 生成AIの応答に多様性を持たせたい開発者
- テキスト生成の細かな制御を学びたい人
- 自然な対話や記事生成に関心のあるAIエンジニア
ゴール
-
frequency_penalty
とpresence_penalty
の基本的な仕組みを理解し、どのように応答に影響を与えるかを例を通して把握する。 - テキスト生成において、繰り返しの抑制やトピックの変更を意図的に行う方法を学ぶ。
TL;DR
frequency_penalty
は、生成されたテキストで同じ単語やフレーズが繰り返される頻度を抑えるパラメータ。正の値にすると、繰り返しが減る。
presence_penalty
は、新しいトピックや単語を含むように促すパラメータ。正の値にすると、新しい話題に移行しやすくなる。
frequency_penalty と presence_penalty の使い方
frequency_penalty
用途
同じ単語やフレーズが何度も繰り返されるのを防ぐ。例えば、文章内で同じ単語が頻繁に出てくるのを避けたいときに使える。
数値の範囲
- 値の範囲: -2.0 ~ 2.0
- 0 の場合は繰り返しに対してペナルティがなく、正の値で繰り返しを減らす。負の値にすると逆に繰り返しが増える。
具体例
-
frequency_penalty = 0 の場合:
"I like cats. Cats are cute. Cats are fun." -
frequency_penalty = 2.0 の場合:
"I like cats. They are cute. Felines are fun."
(単語 "cats" が繰り返されず、他の言葉に置き換えられる) -
frequency_penalty = -2.0 の場合:
"I like cats. Cats are cute. Cats are fun. Cats are amazing. Cats are everything!"
(同じ単語 "cats" が非常に多く繰り返される)
presence_penalty
用途
同じ話題にとどまらず、新しいトピックや単語に移る可能性を高める。特定のトピックから脱却したいときに便利。
数値の範囲
- 値の範囲: -2.0 ~ 2.0
- 0 の場合はペナルティがなく、正の値にすると新しいトピックが生成されやすくなる。負の値にすると同じトピックにとどまりやすくなる。
具体例
-
presence_penalty = 0 の場合:
"Let's talk about cats. Cats are lovely animals." -
presence_penalty = 2.0 の場合:
"Let's talk about cats. Speaking of pets, dogs are also amazing."
(話題が猫から犬に移っている) -
presence_penalty = -2.0 の場合:
"Let's talk about cats. Cats are lovely. Cats are great. Cats are my favorite."
(同じ話題、猫にとどまり続ける)