Azure OpenAI ServiceでInstructGPTモデルを使用して文章生成を行う

Azure OpenAI Serviceに文書生成の「InstructGPT」モデルが実装されました。それに伴って、いくつか既存のモデルが使えなくなるアップデートが今後実施されます。

本記事ではgpt-35-turbo-instructモデルのデプロイから使用方法までを解説します。また実際に旧モデルと出力結果がどのように違うのか、簡単に検証したため、その結果について記載します。

InstructGPTモデルへの移行

InstructGPTモデルの実装に伴い、文章生成と埋め込みの役割を持ったモデルが複数廃止されます。
Microsoftからは以下の通り案内されています。

learn.microsoft.com

すでにデプロイされている旧モデルは、2024 年7月5日まで利用できます。
廃止される文章生成モデルは次の通りです。

  • GPT-3系
    • text-ada-001
    • text-babbage-001
    • text-curie-001
    • text-davinci-001
    • code-cushman-001
  • GPT-3.5系
    • text-davinci-002
    • text-davinci-003
    • code-davinci-002

これらのモデルを使用しているユーザーは、gpt-35-turbo-instructに移行する必要があります。ベクトル化の役割を持つ埋め込みモデルについては、対応する旧モデルをtext-embedding-ada-002を使用するように変更します。

InstructGPTモデルの概要

2023年10月5日時点のInstructGPTモデルの概要は以下の通りです。

  • モデル
    • gpt-35-turbo-instruct
    • 0914バージョン
    • 4,097token
  • 対応リージョン
    • East US
    • Sweden Central

learn.microsoft.com

InstructGPTモデルの使用方法

モデルのデプロイ

2023年10月時点でgpt-35-turbo-instructの0914モデルがデプロイ可能です。
以下の通り、デプロイの一覧に追加されています。

プログラムの構築

InstructGPTモデルはopenaiのパッケージからアクセスできます。
チャット形式でないためChatCompletionメソッドは使用できません。以下の通りCompletionメソッドを使用します。

import openai

openai.api_base = RESOURCE_ENDPOINT
openai.api_key = API_KEY
openai.api_type = "azure"
openai.api_version = "2023-07-01-preview"

(中略)

response = openai.Completion.create(
  engine="gpt-35-turbo-instruct",
  prompt=user_prompt,
  temperature=0,
  max_tokens=500,
  top_p=0.5
)
print(response['choices'][0]['text'])

検証

実際にInstructGPTの性能がどの程度なのか、Azure環境上にデプロイして旧モデルと出力を比較してみました。

簡単な文字列を使用して、それぞれ内容の違いを見てみます。検証に使用したモデルは以下の通りです。

モデル名 補足
gpt-35-turbo-instruct(0914) ※InstructGPT
text-ada-001
text-babbage-001
text-curie-001
text-davinci-002
text-davinci-003
code-davinci-002
gpt-35-turbo(0613) ※システムプロンプトなし
gpt-4(0613) ※システムプロンプトなし

分類

user_prompt = """
TrueかFalseで答えてください。
日本ビジネスシステム株式会社の略称はJBSですか?
"""

正解はTrueですが、単に「True」もしくは「False」と出力されるかどうかに注目します。

モデル名 出力結果
gpt-35-turbo-instruct(0914) True
text-ada-001 JBS
text-babbage-001 JBSは日本ビジネスシステム株式会社です。
text-curie-001 False
text-davinci-002 False
text-davinci-003 False
code-davinci-002 True

TrueかFalseで答えてください。
日本ビジネスシステム株式会社の略称はJBSですか?

False

TrueかFalseで答えてください。
日本ビジネスシステム株式会社の略称はJBSですか?
(以下繰り返し)
gpt-35-turbo(0613) False
gpt-4(0613) True

InstructGPTモデルは期待する値であるTrueもしくはFalseを返しました。
text-curie-001text-davinci-002text-davinci-003gpt-35-turbo(0613)gpt-4(0613)がTrue/Falseで回答を生成し、その他のモデルはうまく答えを返してくれませんでした。

文章生成

AIに次の文章の続きを生成させます。

user_prompt = """
次の文章の続きを生成してください。

日本ビジネスシステムズ株式会社の略称は、
"""

日本ビジネスシステムズの略称はJBSですが、今回は回答の正確性は無視して、文章自体が自然に続く形で生成しているかどうかに着目します。

(※以下の結果は、今回使用したAIモデルがデモのために自動的に生成した文章です。実際のJBSについての概要や詳細を表した内容ではありません。)

モデル名 出力結果
gpt-35-turbo-instruct(0914) 「日ビジス」です。同社は、情報システムの企画・開発・運用・保守を主な事業としており、多くの企業や官公庁との取引実績を持っています。また、最新の技術を取り入れた高品質なサービスを提供することで、お客様のビジネスの発展に貢献しています。さらに、グローバルな視点での事業展開も積極的に行っており、海外拠点も多数設立しています。日本ビジネスシステムズ株式会社は、常にお客様のニーズに応えるために、最新の技術やサービスを提供し続けています。
text-ada-001 JBL

JBL is a Japanese technology company. It is based on the model J, which stands for "Japanese Standard."

The company was founded in 1984 and has developed a number of popular technology products, including the digital camera and the phone.
text-babbage-001 日本ビジネスシステムズ株式会社

です。
text-curie-001 「日本ビジネスシステムズ」です。

日本ビジネスシステムズは、

「ビジネスシステム」「ソフトウェア」「サービス」「インターネット」「コンピュータ」「テクノロジー」「マネー」「金融」「経済」「サービス業」「コンサルティング」「サービス提供」「ソリューション」「サービス」「インターネット」「コンピュータ」「テクノロジー」「マネー」「金融」「経済」「サービス業」「コンサルティング」「サービス提供」「ソリューション」「サービス」「インターネット」「コンピュータ」「テクノロジー」「マネー」「金融」「経済」「サービス業」「コンサルティング」「サービス提供」「ソリューション」を表す英語です。

This company is called "Japan Business Systems Corporation."

Japan Business Systems Corporation is a company that represents the following English terms:

"Business Systems"
"Software"
"Services"
...(以下省略)
text-davinci-002 日本ビジネスシステムズ株式会社の略称は、日本BSです。
text-davinci-003 JBSです。JBSは、IT技術を活用したソリューションを提供する企業です。そのソリューションは、企業のビジネスを効率的に運営するためのもので、企業の成長を支援することを目的としています。また、JBSは、企業のデジタルトランスフォーメーションを支援するためのサービスも提供しています。そのサービスは、企業がデジタル技術を活用して、より効率的なビジネスを実現するために必要な技術的な支援を行うものです。
code-davinci-002 日本ビジネスシステムズ株式会社は、

日本ビジネスシステムズ株式会社は、

(以下同文繰り返し)
gpt-35-turbo(0613) NBSです。NBSは、情報技術を活用したビジネスソリューションを提供する企業です。私たちは、お客様のビジネスニーズに合わせた最適なシステムを開発し、効率的な業務運営を支援しています。また、NBSでは、最新のテクノロジーを取り入れながら、常に革新的なソリューションを提供することを目指しています。私たちのチームは、経験豊富なエンジニアやコンサルタントから構成されており、お客様の課題解決に向けて最善のアプローチを追求しています。NBSは、信頼性と品質にこだわり、お客様のビジネスの成功を支えるパートナーとして、幅広い業界で高い評価を得ています。私たちは、お客様との長期的なパートナーシップを築きながら、共に成長していくことを目指しています。
gpt-4(0613) JBSです。この会社は、情報システムの企画・開発・運用を行うIT企業で、特に金融業界や公共機関向けのシステム開発に強みを持っています。また、クラウドサービスやセキュリティ対策など、最新のIT技術を取り入れたソリューションも提供しており、多くの企業のビジネスを支えています。JBSは、顧客のニーズに応じた最適なシステムを提案し、その実現に向けて一貫したサービスを提供することで、高い評価を得ています。

出力結果が英語になったtext-ada-001と、コード生成用モデルのcode-davinci-002はうまく続く形で生成ができませんでした。
text-davinci-003gpt-35-turbogpt-4が、InstructGPTモデルに近い長文で出力を生成しました。

コード生成

AIに次のように指示してPythonのソースコードを生成させます。

user_prompt = """
Pythonで、1+1を計算して出力するコードを3行以内で記載してください。
"""
モデル名 出力結果
gpt-35-turbo-instruct(0914) ```python
print(1+1)
```

または

```python
a = 1
b = 1
print(a+b)
```

または

```python
print(2)
```
text-ada-001 def addition(n,x):
if n<x:
x=n-1
else:
x=n+1


def addition(n,x):
if n<x:
x=n-1
else:
x=n+1
text-babbage-001 def add(n, i):
if n<=0:
print("Incorrect input")
elif i==1:
return 1
elif i==2:
return 2
else:
return 3
text-curie-001 print("1+1=" + str(1+1))
text-davinci-002 print(1+1)
text-davinci-003 print(1 + 1)
code-davinci-002 ```python
print(1+1)
```

### 問題2

Pythonで、1+1を計算して出力するコードを3行以内で記載してください。

```python
print(1+1)
```

### 問題3
(以下、見出し+問題文+回答の同文繰り返し)
gpt-35-turbo(0613) print(1+1)
gpt-4(0613) 以下のように記述します。

```python
result = 1 + 1
print(result)
```

InstructGPTモデルはマークダウン形式で、プログラムをいくつか提示してくれました。

text-davinci-002text-davinci-003gpt-35-turbo(0613)gpt-4(0613)で生成できました。
上記のケースではtext-curie-001も成功しましたが、別の実行では1+1に並べて2+2や3+3を実施してしまう場合がありました。

日本語で指示をした影響か、code-davinci-002モデルはうまくコードを生成できませんでした。

おわりに

今回はgpt-35-turbo-instructがAzure環境上で使用可能になったことに伴って、デプロイと使用方法を紹介しました。また簡単なタスクで旧モデル、ChatGPTモデル、InstructGPTモデルを比較しました。

この分野は日々めまぐるしくアップデートが続けられていますが、新しいモデルもどんどん試していきましょう。

執筆担当者プロフィール
西野 佑基

西野 佑基(日本ビジネスシステムズ株式会社)

機械学習系ソリューション開発、業務Webアプリ開発、開発環境自動化などを担当。

担当記事一覧