シュッと gpt-3.5-turbo-instruct を流してみる

ちゃっす(/・ω・)/



特に公式発表はなさそう(2023/09/19 時点)???なのですが、OpenAI から gpt-3.5-turbo-instruct というモデルがでたのでシュッと試してみましたの(/・ω・)/



ん?gpt-3.5-turbo は前からあったんちゃうんけ?( ・ω・)



と思うそこのあなた、、、



正解(/・ω・)/



チャット形式で使う用途で gpt-3.5-turbo はあったのでございます

gpt-3.5-turbo

Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with our latest model iteration 2 weeks after it is released.

https://platform.openai.com/docs/models/gpt-3-5


ただまぁ、特に Chat 形式で使わないけど安いから大体これ使っていた方が大半だと思いますの(/・ω・)/



今回でたのはこっち

gpt-3.5-turbo-instruct

Similar capabilities as text-davinci-003 but compatible with legacy Completions endpoint and not Chat Completions.

https://platform.openai.com/docs/models/gpt-3-5



要するに Chat に特化してないでござる(/・ω・)/



シュッと違いをみてみますのよ☆



なんか適当に質問を ChatGPT に作ってもらう(/・ω・)/

questions = [
"太陽系の惑星は何個ありますか?",
"アインシュタインの有名な方程式は?",
"量子コンピューターの基本的な原理は?",
"ピタゴラスの定理とは?",
"DNAの構造を発見したのは誰ですか?",
"フィボナッチ数列の次の数は?",
"シェイクスピアの代表作は?",
-- 略 --
"ダブルスリット実験とは?",
"シュタイナーの木の問題とは?",
"ゴーデルの不完全性定理とは?",
"マンデルブロット集合の計算方法は?",
"ニューラルネットワークのバックプロパゲーションとは?",
"ロジスティックマップのカオス的な振る舞いとは?"
]


gpt-3.5-turbo-0613 と gpt-3.5-turbo-instruct を使うやつを分けて用意する

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,
      max_tokens= 1000
  )

  return response["choices"][0]["text"]


シュッと比較

import csv

file_path = "chat_completion_test.csv"
headers = ["prompt", "chat", "completion"]
with open(file_path, mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(headers)
    for q in questions:
        chat_answer = chat(q)
        completion_answer = completion(q)
        writer.writerow([q, chat_answer, completion_answer])


結果(一部)

Chat モデルと比べて、そうじゃない方は答えをなんとなく簡潔に示してますな(/・ω・)/



会話を続けられるような出力をするわけじゃないので端的なのだ(/・ω・)/



API で使う場合は会話形式でないことが多い(多分)のでそういう場合は今回でた新しいモデルを使う方がよさそうですのよ(/・ω・)/



ということでシュッと書いたのでおしまい。

この記事が気に入ったらサポートをしてみませんか?