レガシーAPI

Text Completions APIはレガシーAPIです。将来のモデルと機能ではMessages APIの使用が必要となり、可能な限り早期の移行を推奨します。

Anthropic APIは、プロンプトがClaudeに適した形式で整形されていることを確保するため、基本的なプロンプトのサニタイゼーションと検証を実行します。

Text Completionsを作成する際、プロンプトが指定された形式でない場合、APIはまず軽微なサニタイゼーション(例:末尾のスペースの削除)を試行します。この正確な動作は変更される可能性があり、推奨される\n\nHuman:\n\nAssistant:の交互のターンでプロンプトを形式化することを強く推奨します。

その後、APIは以下の条件でプロンプトを検証します:

  • プロンプトの最初の会話ターンは\n\nHuman:ターンでなければなりません
  • プロンプトの最後の会話ターンは\n\nAssistant:ターンでなければなりません
  • プロンプトの長さは100,000 - 1トークン未満でなければなりません。

以下のプロンプトはAPIエラーを引き起こします:

Python
# "\n\nHuman:"と"\n\nAssistant:"ターンが不足
prompt = "Hello, world"

# "\n\nHuman:"ターンが不足
prompt = "Hello, world\n\nAssistant:"

# "\n\nAssistant:"ターンが不足
prompt = "\n\nHuman: Hello, Claude"

# "\n\nHuman:"ターンが最初でない
prompt = "\n\nAssistant: Hello, world\n\nHuman: Hello, Claude\n\nAssistant:"

# "\n\nAssistant:"ターンが最後でない
prompt = "\n\nHuman: Hello, Claude\n\nAssistant: Hello, world\n\nHuman: How many toes do dogs have?"

# "\n\nAssistant:"に"\n"が1つしかない
prompt = "\n\nHuman: Hello, Claude \nAssistant:"

以下は現在APIによって受け入れられ、自動的にサニタイゼーションされますが、この動作は将来変更される可能性があるため、依存すべきではありません:

Python
# "\n\nHuman:"の先頭に"\n\n"がない
prompt = "Human: Hello, Claude\n\nAssistant:"

# "\n\nAssistant:"の後に末尾スペース
prompt = "\n\nHuman: Hello, Claude:\n\nAssistant: "