Skip to content
LangChain4j 文档版本 1.22.0 源快照 8aff92b0 更新于 2026-10-14

watsonx.ai

Maven 依赖

xml
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-watsonx</artifactId>
    <version>1.22.0-beta32</version>
</dependency>

身份认证

Watsonx.ai 支持通过 Authenticator 接口进行身份验证。

这使你可以根据部署方式使用不同的认证机制:

  • IBMCloudAuthenticator —— 使用 API 密钥向 IBM Cloud 认证。这是最简单的方式,在你提供 apiKey(...) builder 方法时使用。
  • CP4DAuthenticator —— 向 Cloud Pak for Data 部署认证。
  • 自定义认证器 —— 可使用 Authenticator 接口的任意实现。

WatsonxScoringModel 及其他服务 builder 既接受通过 .apiKey(...) 的快捷方式,也接受通过 .authenticator(...) 的完整 Authenticator 实例。

Example

java
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 客户端属性。

java
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:

java
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

  1. 访问 https://dataplatform.cloud.ibm.com/projects/?context=wx
  2. 打开你的项目
  3. 进入 Manage 标签
  4. 从 Details 部分复制 Project ID

WatsonxScoringModel

WatsonxScoringModel 提供了基于 IBM watsonx.ai 模型的 ScoringModel 的 LangChain4j 实现。

它非常适合根据与用户查询的相关性对一组文档(或文本片段)进行排序。

Example

java
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);

🔗 查看可用的重排序模型 ID

示例

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。