QianFan チャット
Spring AI は、QianFan のさまざまな AI 言語モデルをサポートしています。QianFan 言語モデルと対話し、QianFan モデルに基づいて多言語会話アシスタントを作成できます。
前提条件
QianFan 言語モデルにアクセスするには、QianFan を使用して API を作成する必要があります。
QianFan 登録ページ (英語) でアカウントを作成し、API キーページ (英語) でトークンを生成します。Spring AI プロジェクトは、spring.ai.qianfan.api-key
および spring.ai.qianfan.secret-key
という名前の構成プロパティを定義します。API キーページ (英語) から取得した API Key
および Secret Key
の値に設定する必要があります。環境変数をエクスポートすることは、その構成プロパティを設定する 1 つの方法です。
export SPRING_AI_QIANFAN_API_KEY=<INSERT KEY HERE>
自動構成
Spring AI は、Azure QianFan 埋め込みクライアント用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml
ファイルに次の依存関係を追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-qianfan-spring-boot-starter</artifactId>
</dependency>
または、Gradle build.gradle
ビルドファイルに保存します。
dependencies {
implementation 'org.springframework.ai:spring-ai-qianfan-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
埋め込みプロパティ
再試行プロパティ
プレフィックス spring.ai.retry
は、QianFan 埋め込みクライアントの再試行メカニズムを構成できるプロパティプレフィックスとして使用されます。
プロパティ | 説明 | デフォルト |
---|---|---|
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.qianfan
は、QianFan への接続を可能にするプロパティ接頭辞として使用されます。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.qianfan.base-url | 接続先の URL | |
spring.ai.qianfan.api-key | API キー | - |
spring.ai.qianfan.secret-key | 秘密の鍵 | - |
プロパティの構成
プレフィックス spring.ai.qianfan.embedding
は、QianFan の EmbeddingClient
実装を構成するプロパティプレフィックスです。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.qianfan.embedding.enabled | QianFan 埋め込みクライアントを有効にします。 | true |
spring.ai.qianfan.embedding.base-url | オプションで spring.ai.qianfan.base-url をオーバーライドして、埋め込み固有の URL を提供します | - |
spring.ai.qianfan.embedding.api-key | オプションで spring.ai.qianfan.api-key をオーバーライドして、埋め込み固有の API キーを提供します | - |
spring.ai.qianfan.embedding.secret-key | オプションで spring.ai.qianfan.secret-key をオーバーライドして、特定の秘密鍵を埋め込む | - |
spring.ai.qianfan.embedding.options.model | 使用するモデル | bge_large_zh |
ChatClient および EmbeddingClient 実装の共通 spring.ai.qianfan.base-url 、spring.ai.qianfan.embedding.api-key 、spring.ai.qianfan.embedding.secret-key をオーバーライドできます。spring.ai.qianfan.embedding.base-url 、spring.ai.qianfan.embedding.api-key 、spring.ai.qianfan.embedding.secret-key プロパティが設定されている場合は、共通プロパティよりも優先されます。同様に、spring.ai.qianfan.embedding.base-url 、spring.ai.qianfan.embedding.api-key 、spring.ai.qianfan.embedding.secret-key プロパティが設定されている場合は、共通プロパティよりも優先されます。これは、異なるモデルや異なるモデルエンドポイントに異なる QianFan アカウントを使用する場合に便利です。 |
spring.ai.qianfan.embedding.options というプレフィックスが付いたすべてのプロパティは、リクエスト固有のランタイムオプションを EmbeddingRequest 呼び出しに追加することで実行時にオーバーライドできます。 |
ランタイムオプション
QianFanEmbeddingOptions.java [GitHub] (英語) は、使用するモデルなどの QianFan 構成を提供します。
デフォルトのオプションは、spring.ai.qianfan.embedding.options
プロパティを使用して構成することもできます。
開始時に、QianFanEmbeddingModel
コンストラクターを使用して、すべての埋め込みリクエストに使用されるデフォルトのオプションを設定します。実行時に、QianFanEmbeddingOptions
インスタンスを EmbeddingRequest
の一部として使用して、デフォルトのオプションをオーバーライドできます。
たとえば、特定のリクエストのデフォルトのモデル名をオーバーライドするには、次のようにします。
EmbeddingResponse embeddingResponse = embeddingClient.call(
new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
QianFanEmbeddingOptions.builder()
.withModel("Different-Embedding-Model-Deployment-Name")
.build()));
サンプルコントローラー
これにより、クラスに注入できる EmbeddingClient
実装が作成されます。以下は、EmbeddingClient
実装を使用する単純な @Controller
クラスの例です。
spring.ai.qianfan.api-key=YOUR_API_KEY
spring.ai.qianfan.secret-key=YOUR_SECRET_KEY
spring.ai.qianfan.embedding.options.model=tao_8k
@RestController
public class EmbeddingController {
private final EmbeddingClient embeddingClient;
@Autowired
public EmbeddingController(EmbeddingClient embeddingClient) {
this.embeddingClient = embeddingClient;
}
@GetMapping("/ai/embedding")
public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
EmbeddingResponse embeddingResponse = this.embeddingClient.embedForResponse(List.of(message));
return Map.of("embedding", embeddingResponse);
}
}
手動構成
Spring Boot を使用していない場合は、QianFan 埋め込みクライアントを手動で構成できます。これを行うには、プロジェクトの Maven pom.xml
ファイルに spring-ai-qianfan
依存関係を追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-qianfan</artifactId>
</dependency>
または、Gradle build.gradle
ビルドファイルに保存します。
dependencies {
implementation 'org.springframework.ai:spring-ai-qianfan'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
spring-ai-qianfan 依存関係により、QianFanChatModel へのアクセスも提供されます。QianFanChatModel の詳細については、QianFan チャットクライアントセクションを参照してください。 |
次に、QianFanEmbeddingModel
インスタンスを作成し、それを使用して 2 つの入力テキスト間の類似性を計算します。
var qianFanApi = new QianFanApi(System.getenv("MINIMAX_API_KEY"), System.getenv("QIANFAN_SECRET_KEY"));
var embeddingClient = new QianFanEmbeddingModel(qianFanApi)
.withDefaultOptions(QianFanChatOptions.build()
.withModel("bge_large_en")
.build());
EmbeddingResponse embeddingResponse = embeddingClient
.embedForResponse(List.of("Hello World", "World is big and salvation is near"));
QianFanEmbeddingOptions
は、埋め込みリクエストの構成情報を提供します。オプションクラスは、オプションを簡単に作成できる builder()
を提供します。