Perplexity チャット
Perplexity AI (英語) は、言語モデルとリアルタイム検索機能を統合した独自の AI サービスを提供します。さまざまなモデルを提供し、会話型 AI のストリーミングレスポンスをサポートします。
Spring AI は、既存の OpenAI クライアントを再利用して Perplexity AI と統合します。開始するには、Perplexity API キー (英語) を取得し、ベース URL を構成し、サポートされているモデル (英語) の 1 つを選択する必要があります。
Perplexity API は OpenAI API と完全に互換性がありません。Perplexity はリアルタイムの Web 検索結果と言語モデルのレスポンスを組み合わせます。OpenAI とは異なり、Perplexity は toolCalls - function call メカニズムを公開しません。また、現在 Perplexity はマルチモーダルメッセージをサポートしていません。 |
Spring AI で Perplexity を使用する例については、PerplexityWithOpenAiChatModelIT.java [GitHub] (英語) テストを確認してください。
前提条件
API キーを作成する : API キーを作成するには、ここを参照してください。Spring AI プロジェクトの
spring.ai.openai.api-key
プロパティを使用して設定します。Perplexity ベース URL を設定する :
spring.ai.openai.base-url
プロパティをapi.perplexity.ai (英語)
に設定します。Perplexity モデルを選択 : モデルを指定するには、
spring.ai.openai.chat.model=<model name>
プロパティを使用します。使用可能なオプションについては、対応モデル (英語) を参照してください。チャット補完パスを設定する :
spring.ai.openai.chat.completions-path
を/chat/completions
に設定します。詳細については、チャット補完 API (英語) を参照してください。
環境変数の設定例:
export SPRING_AI_OPENAI_API_KEY=<INSERT PERPLEXITY API KEY HERE>
export SPRING_AI_OPENAI_BASE_URL=https://api.perplexity.ai
export SPRING_AI_OPENAI_CHAT_MODEL=llama-3.1-sonar-small-128k-online
自動構成
Spring AI は、OpenAI チャットクライアント用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml
または Gradle build.gradle
ビルドファイルに次の依存関係を追加します。
Maven
Gradle
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
dependencies {
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
チャットのプロパティ
再試行プロパティ
プレフィックス spring.ai.retry
は、OpenAI チャットモデルの再試行メカニズムを構成できるプロパティプレフィックスとして使用されます。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.retry.max-attempts | 再試行の最大回数。 | 10 |
spring.ai.retry.backoff.initial-interval | 指数関数的バックオフポリシーの初期スリープ期間。 | 2 秒 |
spring.ai.retry.backoff.multiplier | バックオフ間隔の乗数。 | 5 |
spring.ai.retry.backoff.max-interval | 最大バックオフ期間。 | 3 分 |
spring.ai.retry.on-client-errors | false の場合、NonTransientAiException をスローし、 | false |
spring.ai.retry.exclude-on-http-codes | 再試行をトリガーすべきではない HTTP ステータスコードのリスト (NonTransientAiException をスローするなど)。 | 空 |
spring.ai.retry.on-http-codes | 再試行をトリガーする必要がある HTTP ステータスコードのリスト (例: TransientAiException をスローする)。 | 空 |
接続プロパティ
接頭辞 spring.ai.openai
は、OpenAI への接続を可能にするプロパティ接頭辞として使用されます。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.openai.base-url | 接続先の URL。 | - |
spring.ai.openai.chat.api-key | Perplexity API キー | - |
プロパティの構成
プレフィックス spring.ai.openai.chat
は、OpenAI のチャットモデル実装を構成できるプロパティプレフィックスです。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.openai.chat.model | サポートされている Perplexity モデル (英語) の 1 つ。例: | - |
spring.ai.openai.chat.base-url | オプションで spring.ai.openai.base-url をオーバーライドしてチャット固有の URL を提供します。 | - |
spring.ai.openai.chat.completions-path |
|
|
spring.ai.openai.chat.options.temperature | レスポンスのランダム性の量。値は 0 以上 2 以下です。値が高いほどランダム性が高くなり、値が低いほど決定論的になります。必要な範囲: | 0.2 |
spring.ai.openai.chat.options.frequencyPenalty | 0 より大きい乗法ペナルティ。1.0 より大きい値は、これまでのテキスト内の既存の頻度に基づいて新しいトークンにペナルティを課し、モデルが同じ行を逐語的に繰り返す可能性を減らします。1.0 の値はペナルティがないことを意味します。presence_penalty とは互換性がありません。必要な範囲: | 1 |
spring.ai.openai.chat.options.maxTokens | API によって返される完了トークンの最大数。max_tokens でリクエストされたトークンの合計数とメッセージで送信されたプロンプトトークンの数の合計は、リクエストされたモデルのコンテキストウィンドウトークン制限を超えてはなりません。指定しない場合は、モデルは停止トークンに到達するかコンテキストウィンドウの終わりに達するまでトークンを生成します。 | - |
spring.ai.openai.chat.options.presencePenalty | -2.0 から 2.0 までの値。正の値は、新しいトークンがこれまでのテキストに出現したかどうかに基づいてペナルティを課し、モデルが新しいトピックについて話す可能性を高めます。 | 0 |
spring.ai.openai.chat.options.topP | 核サンプリングしきい値。0 から 1 までの値です。後続の各トークンについて、モデルは top_p 確率質量を持つトークンの結果を考慮します。top_k または top_p のいずれかを変更することを推奨しますが、両方を変更することは推奨しません。必要な範囲: | 0.9 |
spring.ai.openai.chat.options.stream-usage | (ストリーミングのみ) リクエスト全体のトークン使用統計を含む追加のチャンクを追加するように設定します。このチャンクの | false |
spring.ai.openai.chat.options というプレフィックスが付いたすべてのプロパティは、リクエスト固有のランタイムオプションを Prompt 呼び出しに追加することで実行時にオーバーライドできます。 |
ランタイムオプション
OpenAiChatOptions.java [GitHub] (英語) は、使用するモデル、温度、周波数ペナルティなどのモデル構成を提供します。
起動時に、OpenAiChatModel(api, options)
コンストラクターまたは spring.ai.openai.chat.options.*
プロパティを使用してデフォルトのオプションを構成できます。
実行時に、新しいリクエスト固有のオプションを Prompt
呼び出しに追加することで、デフォルトのオプションをオーバーライドできます。たとえば、特定のリクエストのデフォルトのモデルと温度をオーバーライドするには、次のようにします。
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
OpenAiChatOptions.builder()
.withModel("llama-3.1-sonar-large-128k-online")
.withTemperature(0.4)
.build()
));
モデル固有の OpenAiChatOptions [GitHub] (英語) に加えて、ChatOptionsBuilder#builder() [GitHub] (英語) で作成されたポータブル ChatOptions [GitHub] (英語) インスタンスを使用できます。 |
サンプルコントローラー
新しい Spring Boot プロジェクトを作成し、spring-ai-openai-spring-boot-starter
を pom (または gradle) の依存関係に追加します。
src/main/resources
ディレクトリに application.properties
ファイルを追加して、OpenAi チャットモデルを有効にして構成します。
spring.ai.openai.api-key=<PERPLEXITY_API_KEY>
spring.ai.openai.base-url=https://api.perplexity.ai
spring.ai.openai.chat.completions-path=/chat/completions
spring.ai.openai.chat.options.model=llama-3.1-sonar-small-128k-online
spring.ai.openai.chat.options.temperature=0.7
# The Perplexity API doesn't support embeddings, so we need to disable it.
spring.ai.openai.embedding.enabled=false
api-key を Perplexity Api キーに置き換えます。 |
これにより、クラスに挿入できる OpenAiChatModel
実装が作成されます。以下は、テキスト生成にチャットモデルを使用する単純な @Controller
クラスの例です。
@RestController
public class ChatController {
private final OpenAiChatModel chatModel;
@Autowired
public ChatController(OpenAiChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", this.chatModel.call(message));
}
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return this.chatModel.stream(prompt);
}
}
対応モデル
Perplexity は、検索強化型会話型 AI 向けに最適化されたいくつかのモデルをサポートしています。詳細については、対応モデル (英語) を参照してください。