Azure OpenAI から PaLM API に移行する

このページでは、Microsoft Azure OpenAI から Vertex AI PaLM API に移行するために必要な手順について説明します。

目標

PaLM API は、Google Cloud コンソールを使用して生成モデルを作成、トレーニングできるクラウドベースのフルマネージド サービスです。大規模言語モデル(LLM)にアクセスして、chatbot、コンテンツ生成ツール、クリエイティブ ツールなど、さまざまなアプリケーションを作成できます。

前提条件

OpenAI サービスを Microsoft Azure Open AI から Vertex AI PaLM API に移行するには、まず Google Cloud プロジェクトと開発環境を作成する必要があります。詳細については、Google Cloud プロジェクトと開発環境を設定するをご覧ください。

PaLM API に移行する

Microsoft Azure の OpenAI プロジェクトから PaLM API に移行する方法については、次のトピックをご覧ください。

同等の PaLM API パラメータを使用する

一般的な Azure OpenAI パラメータと、PaLM API の同等のパラメータを次に示します。

OpenAI パラメータ PaLM API パラメータ 説明 有効な値
prompt prompt プロンプトとは、レスポンスを受け取るために言語モデルに送信される自然言語リクエストです。プロンプトには、モデルを完了または続行するための質問、手順、コンテキスト情報、例、テキストを含めることができます。 テキスト
temperature temperature 温度は、レスポンス生成時のサンプリングに使用されます。レスポンスの生成は、topPtopK が適用された場合に行われます。温度は、トークン選択のランダム性の度合いを制御します。温度が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度が 0 の場合、確率が最も高いトークンが常に選択されます。この場合、特定のプロンプトに対するレスポンスはほとんど確定的ですが、わずかに変動する可能性は残ります。

モデルが返すレスポンスが一般的すぎたり、短すぎたり、フォールバック(代替)レスポンスが返ってきたりする場合は、Temperature を高くしてみてください。

0.01.0

max_tokens maxOutputTokens レスポンスで生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンは約 60~80 語に相当します。

レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。

1-8192(OpenAI)

18192(PaLM API)

利用不可 topK トップ K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから次のトークン選択されることになります(温度を使用します)。

トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンは Top-P に基づいてさらにフィルタリングされ、最終的なトークンは温度サンプリングを用いて選択されます。

ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

140

top_p topP トップ P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いもの(Top-K を参照)から低いものへと選択されます。たとえば、トークン A、B、C の確率が 0.3、0.2、0.1 であり、Top-P 値が 0.5 であるとします。この場合、モデルは温度を使用して A または B を次のトークンとして選択し、C は候補から除外します。

ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

0.01.0

同等の PaLM API モデルを使用する

次の表に、使用可能な基盤モデルを示します。

説明 OpenAI エンドポイント PaLM API LLM エンドポイント
テキスト 自然言語による指示に対応できるようファインチューニングされていて、さまざまな言語タスクに適しています。 gpt-3.5-turbo または gpt-4 text-bison@002
チャット マルチターンの会話向けにファインチューニングされています。 gpt-3.5-turbo または gpt-4 chat-bison@002
エンベディング テキスト入力に対してモデルのエンベディングを返すようにファインチューニングされています。 text-embedding-ada-002 textembedding-gecko@003

Vertex AI での生成 AI のインストール、インポート、認証

Vertex AI SDK for Python を使用して、Vertex AI で生成 AI のインストール、インポート、認証を行います。以下に、Vertex AI SDK for Python のメソッドと Azure OpenAI のメソッドの対応表を示します。

Vertex AI PaLM API をインストールする

Azure OpenAI

$ pip install --upgrade openai

Vertex AI PaLM API

$ pip install google-cloud-aiplatform

Vertex AI PaLM API をインポートする

Azure OpenAI

import openai

Vertex AI PaLM API

from vertexai.preview.language_models import TextGenerationModel

Vertex AI PaLM API を認証する

Azure OpenAI

openai.api_key = os.getenv("OPENAI_API_KEY")

Vertex AI PaLM API

from google.colab import auth as google_auth
google_auth.authenticate_user()

Vertex AI PaLM API と Azure の比較とサンプルコード

Vertex AI SDK for Python を使用してテキストを生成する

Azure OpenAI

from openai import OpenAI

client = OpenAI()

response = client.completions.create(prompt="Hello",
    max_tokens=256,
    temperature=0.3,
    model="gpt-4")

print(f"Response from Model: {response['choices'][0]['text']}")

Vertex AI PaLM API

from vertexai.preview.language_models import TextGenerationModel

model = TextGenerationModel.from_pretrained("text-bison@002")

response = model.predict(
    "Hello",
    max_output_tokens=256,
    temperature=0.3,)

print(f"Response from Model: {response.text}")

Vertex AI SDK for Python でチャット補完を使用する

Azure OpenAI

from openai import OpenAI

client = OpenAI()

parameters = {
    "model":"gpt-4",
    "temperature": 0.2,
    "max_tokens": 256,
    "top_p": 0.95}

chat = client.chat.completions.create(
    messages=[
      {"role": "system", "content": "My name is Miles. You are an astronomer, knowledgeable about the solar system."},
      {"role": "user", "name":"example_user", "content": "How many planets are there in the solar system?"}
      ],
    **parameters)

response = chat['choices'][0]
print(f"Response from Azure OpenAI Model: {response.text}")

Vertex AI PaLM API

from vertexai.preview.language_models import ChatModel

chat_model = ChatModel.from_pretrained("chat-bison@002")

parameters = {
    "temperature": 0.2,
    "max_output_tokens": 256,
    "top_p": 0.95}

chat = chat_model.start_chat(context="My name is Miles. You are an astronomer, knowledgeable about the solar system.")

response = chat.send_message(
    "How many planets are there in the solar system?",
    **parameters)

print(f"Response from Google GenAI Model: {response.text}")

Vertex AI SDK for Python でテキスト エンベディングを使用する

Azure OpenAI

import openai

embeddings = openai.Embedding.create(
  deployment_id="text-embedding-ada-002",
  #engine="text-embedding-ada-002",
  input="What is life?"
)["data"][0]["embedding"]

print(f'Length of Embedding Vector: {len(embeddings)}')

Vertex AI PaLM API

from vertexai.preview.language_models import TextEmbeddingModel

model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
embeddings = model.get_embeddings(["What is life?"])

for embedding in embeddings:
  vector = embedding.values

print(f'Length of Embedding Vector: {len(vector)}')

次のステップ