テキスト補完からの移行
テキスト補完からメッセージへの移行
テキスト補完からメッセージに移行する際は、以下の変更点を考慮してください。
入力と出力
テキスト補完とメッセージの最大の違いは、モデルへの入力の指定方法と、モデルからの出力の受け取り方です。
テキスト補完では、入力は生の文字列です:
メッセージでは、生のプロンプトの代わりに入力メッセージのリストを指定します:
各入力メッセージにはrole
とcontent
があります。
ロール名
テキスト補完APIは\n\nHuman:
と\n\nAssistant:
の交互のターンを想定していますが、メッセージAPIはuser
とassistant
のロールを想定しています。ドキュメントで「human」または「user」のターンについて言及されているのを目にするかもしれません。これらは同じロールを指し、今後は「user」となります。
テキスト補完では、モデルが生成したテキストはレスポンスのcompletion
値で返されます:
メッセージでは、レスポンスはcontent
値で、これはコンテンツブロックのリストです:
Claudeの発言を事前に設定する
テキスト補完では、Claudeの応答の一部を事前に設定できます:
メッセージでは、最後の入力メッセージをassistant
ロールにすることで同じ結果を得られます:
この場合、レスポンスのcontent
は最後の入力メッセージのcontent
から続きます:
システムプロンプト
テキスト補完では、システムプロンプトは最初の\n\nHuman:
ターンの前にテキストを追加することで指定します:
メッセージでは、system
パラメータでシステムプロンプトを指定します:
モデル名
メッセージAPIでは、完全なモデルバージョン(例:claude-3-opus-20240229
)を指定する必要があります。
以前は、メジャーバージョン番号のみ(例:claude-2
)を指定することをサポートしており、これによりマイナーバージョンへの自動アップグレードが行われていました。しかし、この統合パターンは推奨されなくなり、メッセージではサポートされていません。
停止理由
テキスト補完では、常に以下のいずれかのstop_reason
があります:
"stop_sequence"
:モデルが自然にターンを終了したか、カスタム停止シーケンスの1つが生成された場合"max_tokens"
:モデルが指定されたmax_tokens
のコンテンツを生成したか、絶対最大値に達した場合
メッセージでは、stop_reason
は以下のいずれかの値になります:
"end_turn"
:会話のターンが自然に終了した場合"stop_sequence"
:指定されたカスタム停止シーケンスの1つが生成された場合"max_tokens"
:(変更なし)
最大トークンの指定
- テキスト補完:
max_tokens_to_sample
パラメータ。バリデーションはありませんが、モデルごとに上限値があります。 - メッセージ:
max_tokens
パラメータ。モデルがサポートする値より高い値を渡すと、バリデーションエラーが返されます。
ストリーミング形式
テキスト補完で"stream": true
を使用する場合、レスポンスにはcompletion
、ping
、error
のサーバー送信イベントが含まれます。詳細はテキスト補完ストリーミングを参照してください。
メッセージには様々なタイプの複数のコンテンツブロックが含まれる可能性があるため、そのストリーミング形式はやや複雑です。詳細はメッセージストリーミングを参照してください。