跳到主要内容

watsonx.ai

Maven依存関係​

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-watsonx</artifactId>
<version>1.23.0-beta33</version>
</dependency>

認証​

Watsonx.ai は Authenticator インターフェースによる認証をサポートしています。

これにより、デプロイ環境に応じて異なる認証メカニズムを使用できます:

  • IBMCloudAuthenticator – API キーを使用して IBM Cloud で認証します。最もシンプルな方法で、ビルダーメソッド apiKey(...) を指定した場合に使用されます。
  • CP4DAuthenticator – Cloud Pak for Data のデプロイメントで認証します。
  • カスタム認証子 – Authenticator インターフェースの任意の実装を使用できます。

WatsonxScoringModel やその他のサービスビルダーは、.apiKey(...) によるショートカット、または .authenticator(...) による完全な Authenticator インスタンスのいずれかを受け付けます。

例​

WatsonxScoringModel.builder()
.baseUrl(CloudRegion.FRANKFURT)
.apiKey("your-api-key") // Simple IBM Cloud authentication
.projectId("your-project-id")
.modelName("cross-encoder/ms-marco-minilm-l-12-v2")
.build();

WatsonxScoringModel.builder()
.baseUrl("https://my-instance-url")
.authenticator( // For Cloud Pak for Data deployments
CP4DAuthenticator.builder()
.baseUrl("https://my-instance-url")
.username("username")
.apiKey("api-key")
.build()
)
.projectId("my-project-id")
.modelName("cross-encoder/ms-marco-minilm-l-12-v2")
.build();

カスタム HttpClient と SSL 設定​

カスタム HttpClient の使用​

すべてのサービスと認証子は、ビルダーパターンを通じてカスタムの HttpClient インスタンスをサポートしています。これは特に Cloud Pak for Data 環境で便利で、カスタムの TLS/SSL 設定、プロキシ設定、その他の HTTP クライアントのプロパティを構成する必要がある場合があります。

HttpClient httpClient = HttpClient.newBuilder()
.sslContext(createCustomSSLContext())
.executor(ExecutorProvider.ioExecutor())
.build();

EmbeddingModel embeddingModel = WatsonxEmbeddingModel.builder()
.baseUrl("https://my-instance-url")
.modelName("ibm/granite-embedding-278m-multilingual")
.projectId("project-id")
.httpClient(httpClient) // Custom HttpClient
.authenticator(
CP4DAuthenticator.builder()
.baseUrl("https://my-instance-url")
.username("username")
.apiKey("api-key")
.httpClient(httpClient) // Custom HttpClient
.build()
)
.build();

注意: Cloud Pak for Data でカスタムの HttpClient を使用する場合は、すべてのリクエストで一貫した HTTP の動作を確保するために、サービスビルダーと認証子ビルダーの両方に設定してください。

SSL 検証の無効化​

SSL 証明書の検証だけを無効にしたい場合は、カスタムの HttpClient を指定する代わりに verifySsl(false) オプションを使用できます:

EmbeddingModel embeddingModel = WatsonxEmbeddingModel.builder()
.baseUrl("https://my-instance-url")
.modelName("ibm/granite-embedding-278m-multilingual")
.projectId("project-id")
.verifySsl(false) // Disable SSL verification
.authenticator(
CP4DAuthenticator.builder()
.baseUrl("https://my-instance-url")
.username("username")
.apiKey("api-key")
.verifySsl(false) // Disable SSL verification
.build()
)
.build();

IBM Cloud API キーの作成方法​

https://cloud.ibm.com/iam/apikeys で Create + をクリックすると、API キーを作成できます。

プロジェクト ID の確認方法​

  1. https://dataplatform.cloud.ibm.com/projects/?context=wx にアクセスします
  2. プロジェクトを開きます
  3. Manage タブに移動します
  4. Details セクションから Project ID をコピーします

WatsonxScoringModel​

WatsonxScoringModel は、IBM watsonx.ai モデルを使用した LangChain4j の ScoringModel の実装を提供します。

ユーザーのクエリとの関連性に基づいて、ドキュメント(またはテキストセグメント)のリストをランク付けする場合に特に便利です。

例​

ScoringModel scoringModel = WatsonxScoringModel.builder()
.baseUrl(CloudRegion.FRANKFURT)
.apiKey("your-api-key")
.projectId("your-project-id")
.modelName("cross-encoder/ms-marco-minilm-l-12-v2")
.build();

var scores = scoringModel.scoreAll(
List.of(
TextSegment.from("Example_1"),
TextSegment.from("Example_2")
),
"Hello from watsonx.ai"
);

System.out.println(scores);

🔗 利用可能な rerank モデル ID を表示

オブザーバビリティ​

WatsonxScoringModel.builder().listeners(...) でリスナーをアタッチして、 リクエスト、レスポンス、エラーを監視します。

例​