こんにちは。OpenAI から gpt-3.5-turbo-instruct というモデルが発表されました(2023/09/19)。今回発表されたモデルは以前から存在した gpt-3.5-turbo とは別物です。名前が似ているので同じものと思いがちですが、出力は結構異なります。https://platform.openai.com/docs/models/gpt-3-5gpt-3.5-turbo今まで存在していたモデルです。このモデルは ChatGPT の呼び出して使用しますが、会話形式に特化したモデルです。Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. DeepL 翻訳text-davinci-003の1/10のコストでチャットに最適化されたGPT-3.5最高性能モデル。gpt-3.5-turbo-instruct今回登場したモデルです。こちらは会話に特化しておらず、単純にタスクを解くことに重きを置いています。Similar capabilities as text-davinci-003 but compatible with legacy Completions endpoint and not Chat Completions.DeepL 翻訳text-davinci-003 と同様の機能ですが、従来の Completions エンドポイントと互換性があり、Chat Completions とは互換性がありません。なぜ今までは会話以外でも gpt-3.5-turbo を利用することが多かったのか?今まで ChatGPT を使ったことがある方は大体 gpt-3.5-turbo を利用していたと思います。それはなぜか?もともと、会話に特化していないタスクについては text-davinci-003 というモデルがあったのですが、こちらは gpt-3.5-turbo と比較して高価でした。そのため、コスト面で gpt-3.5-turbo を利用するケースが多かったのだと思います。しかし、今回新しく出たモデルは今までの gpt-3.5-turbo と同じ価格感で利用できます。(詳細は公式ページをご確認ください)そのため、会話形式以外の処理ではこちらのモデルを利用する方が良い結果をもたらす可能性があります。比較gpt-3.5-turbo と gpt-3.5-turbo-instruct での出力の違いを確認します。以下は Python で openai を用いた OpenAI API を呼び出す実装ですが、Chat モデルとそうでないもので呼び出し方が異なります。from tenacity import retry, stop_after_attempt, wait_exponential@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, max=3))def chat(input, model="gpt-3.5-turbo-0613"): response = openai.ChatCompletion.create( model=model, temperature=0, messages=[ {"role": "user", "content": input}, ], ) return response["choices"][0]["message"]["content"]@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, max=3))def completion(input, model="gpt-3.5-turbo-instruct"): response = openai.Completion.create( model=model, temperature=0, prompt=input, ) return response["choices"][0]["text"]以下のような質問を投げかけます。question = "アインシュタインの有名な方程式は?"結果promptgpt-3.5-turbogpt-3.5-turbo-instructアインシュタインの有名な方程式は?アインシュタインの有名な方程式は、E=mc^2です。E=mc²会話を続けるような内容ではないので gpt-3.5-turbo-instruct だと非常に簡素な答えですね。質問を変更します。「走れメロス」という作品について簡潔に教えてもらえますか?結果promptgpt-3.5-turbogpt-3.5-turbo-instruct「走れメロス」という作品について教えてもらえますか?「走れメロス」は、太宰治によって書かれた短編小説です。物語は、友人のセリヌンティウスが処刑されることになったと聞いた主人公のメロスが、自らの命を賭してセリヌンティウスを救うために走り出すという内容です。メロスの友情や信念、そして人間の善悪について描かれており、社会的なテーマを含んだ作品として知られています。「走れメロス」は、太宰治が書いた短編小説の一つで、古代ギリシャの詩人であるソフォクレスの悲劇「オイディプス王」をモチーフにしている作品です。主人公のメロスは、友人のセリヌンティウスを救うために自らの身を犠牲にして走り続ける姿を描き、友情や信念、人間の尊厳をテーマにしています。また、メロスの走る姿は、現代社会における個人の抵抗や反抗の象徴ともされています。短い文章でありながら、深いメッセージを含んだ作品として知られています。こういった質問だとあまり変化がありませんね。質問を変えます「走れメロス」という作品には登場人物が100人以上でてきますか?結果promptgpt-3.5-turbogpt-3.5-turbo-instruct「走れメロス」という作品には登場人物が100人以上でてきますか?いいえ、「走れメロス」という作品には登場人物が100人以上出てくることはありません。この作品は太宰治によって書かれた短編小説であり、主要な登場人物はメロスとセリヌンティウスの2人です。他にもいくつかの脇役が登場しますが、全体的には登場人物は比較的少ないです。いいえ、走れメロスには登場人物が100人以上出てくることはありません。主要な登場人物はメロス、セリヌンティウス、セリヌスの王、セリヌスの王妃、セリヌスの王子、セリヌスの王女、セリヌスの市民たちなどがいますが、その他の登場人物は数十人程度です。内容はさほど変化がありませんが幾分 instruct の方が簡素な表現に思えます。短い答えを要求してみます「走れメロス」という作品の主人公は男ですか?結果promptgpt-3.5-turbogpt-3.5-turbo-instruct「走れメロス」という作品の主人公は男ですか?はい、『走れメロス』という作品の主人公は男性です。はい、主人公のメロスは男性です。やはり instruct は簡素ですね。では会話を目的とした質問をしてみましょう。こんにちは結果promptgpt-3.5-turbogpt-3.5-turbo-instructこんにちはこんにちは!何かお手伝いできますか?こんにちは こんにちは、私はAIのアシスタントです。あなたのお手伝いをすることができます。何かお困りのことはありますか?会話に特化していないので、instruct の方はどうにもおかしな返答になりましたね。まとめgpt-3.5-turbo モデルは会話に秀でているので対話をさせるのであればこちらを使う方がよいです。会話以外のタスクの場合だと一問一答のような単純な課題を解くケースでは gpt-3.5-turbo-instruct の方が期待する出力になる可能性があります。用途に応じてモデルを使い分けることになると思いますので、gpt-3.5-turbo でうまく出力が得られない場合は gpt-3.5-turbo-instruct も試してみてください。