課題
GPT-3 APIを使用したサービスを作っているときに、出力結果に予期しない改行が挿入される問題が発生しました。
GPT-3 API 出力結果 改行 いらない」などで検索しても、解決方法がすぐに出なかったため、ここで共有させていただきます。
予期しない場合に改行が発生したケースは、以下のような場合です。出力結果の先頭に、改行が2回されています。
結論
結果の文字列に対して、改行を""(空文字列)に置換する。
具体的なコード(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']
に、結果の文字列が入ってます。
results = response['choices'][0]['text']
# 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つの場合の例を示しましたが、「結果の文字列に対して、改行を""(空文字列)に置換する」という基本的な方針はほかの言語でも使用できると思われます。ぜひ試してみてください!
最後までお読みいただき、ありがとうございました!