watsonx.ai
Maven 依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-watsonx</artifactId>
<version>1.18.1-beta28</version>
</dependency>
认证
Watsonx.ai 通过 Authenticator 接口支持认证。
这使你可以根据部署方式使用不同的认证机制:
- IBMCloudAuthenticator – 使用 API 密钥认证 IBM Cloud。这是最简单的方式,在提供
apiKey(...)构建器方法时使用。 - CP4DAuthenticator – 认证 Cloud Pak for Data 部署。
- 自定义认证器 – 可以使用任何
Authenticator接口的实现。
WatsonxEmbeddingModel 及其他服务构建器既接受通过 .apiKey(...) 的快捷方式,也接受通过 .authenticator(...) 传入完整的 Authenticator 实例。
示例
WatsonxEmbeddingModel.builder()
.baseUrl(CloudRegion.FRANKFURT)
.apiKey("your-api-key") // Simple IBM Cloud authentication
.projectId("your-project-id")
.modelName("ibm/granite-embedding-278m-multilingual")
.build();
WatsonxEmbeddingModel.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("ibm/granite-embedding-278m-multilingual")
.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 证书验证,可以使用 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 密钥
你可以在 https://cloud.ibm.com/iam/apikeys 点击 Create + 创建 API 密钥。
如何查找你的 Project ID
- 访问 https://dataplatform.cloud.ibm.com/projects/?context=wx
- 打开你的项目
- 进入 Manage 选项卡
- 从 Details 部分复制 Project ID
WatsonxEmbeddingModel
WatsonxEmbeddingModel 使你能够使用 IBM watsonx.ai 生成 embedding,并将其与 LangChain4j 基于向量的操作集成,例如搜索、检索增强生成(RAG)和相似度比较。
它实现了 LangChain4j 的 EmbeddingModel 接口。
EmbeddingModel embeddingModel = WatsonxEmbeddingModel.builder()
.baseUrl(CloudRegion.FRANKFURT)
.apiKey("your-api-key")
.projectId("your-project-id")
.modelName("ibm/granite-embedding-278m-multilingual")
.build();
System.out.println(embeddingModel.embed("Hello from watsonx.ai"));