1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GPT-3 APIの出力結果に、予期しない改行が挿入されている場合の対処法

Last updated at Posted at 2023-01-03

課題

 GPT-3 APIを使用したサービスを作っているときに、出力結果に予期しない改行が挿入される問題が発生しました。
 GPT-3 API 出力結果 改行 いらない」などで検索しても、解決方法がすぐに出なかったため、ここで共有させていただきます。
 予期しない場合に改行が発生したケースは、以下のような場合です。出力結果の先頭に、改行が2回されています。
Chill_Guys 2023_01_03 20_55_38.png

結論

結果の文字列に対して、改行を""(空文字列)に置換する。

具体的なコード(GASを使用している場合)

結果の文字列は、json["choices"][0]["text"]です。

変更前
      return json["choices"][0]["text"];
変更後
      //結果の文字列をpre_resultsに入れる
      pre_results = json["choices"][0]["text"];
      //デフォルトで入っているすべての改行を、""(空文字)と置き換える
      results = pre_results.replace(/\n/g, "");
      return results;

正規表現の \n は、改行を表す特殊文字です。g オプションを指定することで、文字列中のすべての改行を置き換えることができます。

上記のコードを実行すると、results変数に、改行が空文字列に置き換えられた文字列が格納されます!

具体的なコード(Pythonを使用している場合)

response['choices'][0]['text']に、結果の文字列が入ってます。

変更前のviews.py
results = response['choices'][0]['text']
変更後のviews.py
# GPT-3 APIからの結果を、文字列として取得
pre_results = response['choices'][0]['text']
# デフォルトで入っている'/n'を、"”(空文字列)と置き換える
results = pre_results.replace("\n", "").replace("\r", "")

基本的に改行は\nで表現するので、.replace("\n", "")としています。
しかしWindows の場合は、改行には \r\n が使われることがあるため、上記のように .replace("\n", "").replace("\r", "")とすることで、\r も空文字列に置き換えるようにしています。

最後に

 今回は、GPT-3 APIを使用するサービスで、予期しない改行が挿入された場合の対処法を紹介しました。
 主に、GASとPythonでGPT-3 APIを使用しているので、この2つの場合の例を示しましたが、「結果の文字列に対して、改行を""(空文字列)に置換する」という基本的な方針はほかの言語でも使用できると思われます。ぜひ試してみてください!
 最後までお読みいただき、ありがとうございました!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?