watsonx.ai
Maven 依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-watsonx</artifactId>
<version>1.18.1-beta28</version>
</dependency>
认证
Watsonx.ai 通过 Authenticator 接口支持认证。
这使你可以根据部署方式使用不同的认证机制:
- IBMCloudAuthenticator – 使用 API key 认证 IBM Cloud。这是最简单的方式,当你提供
apiKey(...)builder 方法时会使用它。 - CP4DAuthenticator – 认证 Cloud Pak for Data 部署。
- 自定义认证器 – 可使用任何
Authenticator接口实现。
WatsonxScoringModel 及其他服务 builder 既接受 .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
所有服务与认证器都通过 builder 模式支持自定义 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时,请确保同时在服务 builder 与认证器 builder 上设置,以保证所有请求的 HTTP 行为一致。
禁用 SSL 校验
若只需要禁用 SSL 证书校验,可使用 verifySsl(false),而无需提供自定义 HttpClient:
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 Key
可在 https://cloud.ibm.com/iam/apikeys 点击 Create + 创建 API key。
如何查找 Project ID
- 访问 https://dataplatform.cloud.ibm.com/projects/?context=wx
- 打开你的项目
- 进入 Manage 标签页
- 从 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);