watsonx.ai
Maven 依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-watsonx</artifactId>
<version>1.13.0-beta23</version>
</dependency>
认证
Watsonx.ai 通过 Authenticator 接口支持多种认证方式,可根据部署环境选择不同机制:
- IBMCloudAuthenticator — 使用 API Key 在 IBM Cloud 上进行认证,是最简单的方式,通过
apiKey(...)构建器方法使用。 - CP4DAuthenticator — 用于 Cloud Pak for Data 部署。
- 自定义认证器 — 可使用任何实现
Authenticator接口的类。
WatsonxChatModel、WatsonxStreamingChatModel 等服务构建器既支持通过 .apiKey(...) 简写配置,也支持通过 .authenticator(...) 传入完整的 Authenticator 实例。
示例
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.watsonx.WatsonxChatModel;
import com.ibm.watsonx.ai.core.auth.cp4d.CP4DAuthenticator;
import com.ibm.watsonx.ai.core.auth.cp4d.AuthMode;
import com.ibm.watsonx.ai.CloudRegion;
WatsonxChatModel.builder()
.baseUrl(CloudRegion.FRANKFURT)
.apiKey("your-api-key") // 简单的 IBM Cloud 认证
.projectId("your-project-id")
.modelName("ibm/granite-4-h-small")
.build();
WatsonxChatModel.builder()
.baseUrl("https://my-instance-url")
.authenticator( // 用于 Cloud Pak for Data 部署
CP4DAuthenticator.builder()
.baseUrl("https://my-instance-url")
.username("username")
.apiKey("api-key")
.authMode(AuthMode.LEGACY)
.build()
)
.projectId("my-project-id")
.modelName("ibm/granite-4-h-small")
.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) // 自定义 HttpClient
.authenticator(
CP4DAuthenticator.builder()
.baseUrl("https://my-instance-url")
.username("username")
.apiKey("api-key")
.httpClient(httpClient) // 自定义 HttpClient
.build()
)
.build();
注意: 在 Cloud Pak for Data 中使用自定义
HttpClient时,请确保在服务构建器和认证器构建器中均设置该实例,以保证所有请求的 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) // 禁用 SSL 验证
.authenticator(
CP4DAuthenticator.builder()
.baseUrl("https://my-instance-url")
.username("username")
.apiKey("api-key")
.verifySsl(false) // 禁用 SSL 验证
.build()
)
.build();
如何创建 IBM Cloud API Key
访问 https://cloud.ibm.com/iam/apikeys,点击 Create + 创建 API Key。