feat: Add IBM watsonx.ai rerank support#21303
feat: Add IBM watsonx.ai rerank support#2130313 commits merged intoBerriAI:litellm_oss_staging_02_17_2026from
Conversation
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR adds IBM watsonx.ai rerank support to LiteLLM by implementing a new
Issues found:
Confidence Score: 3/5
|
| Filename | Overview |
|---|---|
| litellm/llms/watsonx/rerank/transformation.py | New watsonx rerank transformation config. Correctly implements BaseRerankConfig with watsonx-specific parameter mapping and response transformation. Uses type: ignore[override] for validate_environment signature mismatch with IBMWatsonXMixin. |
| litellm/rerank_api/main.py | Adds watsonx provider branch to rerank handler. Contains an inline import (violates CLAUDE.md style guide) and does not add "watsonx" to the Literal type hint for custom_llm_provider in the function signatures. |
| litellm/utils.py | Adds watsonx provider mapping in ProviderConfigManager.get_provider_rerank_config. Clean 2-line change following existing patterns. |
| litellm/init.py | Adds IBMWatsonXRerankConfig import. Follows existing pattern. |
| litellm/_lazy_imports_registry.py | Registers IBMWatsonXRerankConfig in lazy import registry. Follows existing pattern. |
| litellm/types/llms/watsonx.py | Adds RERANK endpoint to WatsonXAIEndpoint enum. Simple, correct change. |
| tests/test_litellm/llms/watsonx/rerank/test_watsonx_rerank.py | Mock-based tests covering URL generation, param mapping, request/response transformation, and error handling. All tests use mocks (no real network calls). Test uses full "watsonx/" prefixed model name which wouldn't match production behavior after get_llm_provider strips the prefix. |
Sequence Diagram
sequenceDiagram
participant User
participant rerank_api as rerank_api/main.py
participant ProviderConfigMgr as ProviderConfigManager
participant IBMWatsonXMixin as IBMWatsonXMixin
participant IBMWatsonXRerank as IBMWatsonXRerankConfig
participant HTTPHandler as BaseLLMHTTPHandler
participant WatsonXAPI as watsonx.ai API
User->>rerank_api: rerank(model="watsonx/...", query, documents)
rerank_api->>ProviderConfigMgr: get_provider_rerank_config(provider=WATSONX)
ProviderConfigMgr-->>rerank_api: IBMWatsonXRerankConfig()
rerank_api->>IBMWatsonXMixin: get_watsonx_credentials(optional_params, api_key, api_base)
IBMWatsonXMixin-->>rerank_api: WatsonXCredentials(api_key, api_base, token)
rerank_api->>HTTPHandler: rerank(model, provider_config, optional_rerank_params, ...)
HTTPHandler->>IBMWatsonXRerank: validate_environment(headers, model, api_key, optional_params)
IBMWatsonXRerank-->>HTTPHandler: auth headers
HTTPHandler->>IBMWatsonXRerank: get_complete_url(api_base, model)
IBMWatsonXRerank-->>HTTPHandler: /ml/v1/text/rerank?version=...
HTTPHandler->>IBMWatsonXRerank: transform_rerank_request(model, params, headers)
IBMWatsonXRerank-->>HTTPHandler: watsonx-formatted request body
HTTPHandler->>WatsonXAPI: POST /ml/v1/text/rerank
WatsonXAPI-->>HTTPHandler: JSON response
HTTPHandler->>IBMWatsonXRerank: transform_rerank_response(model, raw_response, ...)
IBMWatsonXRerank-->>HTTPHandler: RerankResponse
HTTPHandler-->>rerank_api: RerankResponse
rerank_api-->>User: RerankResponse
Last reviewed commit: 1cf1dc6
Additional Comments (1)
|
Greptile SummaryThis PR adds IBM watsonx.ai rerank support to LiteLLM, following the established provider pattern with a transformation config class (
Confidence Score: 4/5
|
| Filename | Overview |
|---|---|
| litellm/llms/watsonx/rerank/transformation.py | Core rerank transformation logic for watsonx.ai; correctly implements BaseRerankConfig and IBMWatsonXMixin, maps Cohere-format params to watsonx format, and transforms responses. |
| litellm/rerank_api/main.py | Adds watsonx provider branch to the rerank() function with credential handling; import moved to top-level per prior feedback. Structure follows existing provider pattern. |
| tests/test_litellm/llms/watsonx/rerank/test_watsonx_rerank.py | Tests cover URL generation, param mapping, request/response transformation, and error cases. However, test_transform_rerank_request passes raw Cohere-format params instead of mapped watsonx-format params, not reflecting production behavior. |
| litellm/init.py | Adds IBMWatsonXRerankConfig to the TYPE_CHECKING lazy imports, consistent with other rerank provider entries. |
| litellm/_lazy_imports_registry.py | Registers IBMWatsonXRerankConfig in both config names and import map, consistent with existing entries. |
| litellm/utils.py | Adds watsonx to ProviderConfigManager.get_provider_rerank_config(), returning IBMWatsonXRerankConfig for WATSONX provider. |
| litellm/types/llms/watsonx.py | Adds RERANK endpoint to WatsonXAIEndpoint enum. |
Sequence Diagram
sequenceDiagram
participant User
participant RerankAPI as rerank_api/main.py
participant Mixin as IBMWatsonXMixin
participant Handler as BaseLLMHTTPHandler
participant Config as IBMWatsonXRerankConfig
participant WatsonX as watsonx.ai API
User->>RerankAPI: rerank(model="watsonx/...", query, documents)
RerankAPI->>RerankAPI: get_llm_provider() → strips prefix
RerankAPI->>Config: map_cohere_rerank_params()
Note over Config: documents → inputs<br/>top_n → parameters.return_options.top_n<br/>return_documents → parameters.return_options.inputs
RerankAPI->>Mixin: get_watsonx_credentials()
Mixin-->>RerankAPI: api_key, api_base, token
RerankAPI->>Handler: rerank(model, params, credentials)
Handler->>Config: validate_environment(headers, api_key)
Note over Config: Resolves auth: Bearer token,<br/>ZenApiKey, or IAM token
Config-->>Handler: headers with Authorization
Handler->>Config: get_complete_url(api_base, model)
Config-->>Handler: url + /ml/v1/text/rerank?version=...
Handler->>Config: transform_rerank_request(model, params)
Note over Config: _get_api_params() resolves project_id/space_id<br/>_prepare_payload() sets model_id
Config-->>Handler: watsonx request body
Handler->>WatsonX: POST /ml/v1/text/rerank
WatsonX-->>Handler: response JSON
Handler->>Config: transform_rerank_response()
Note over Config: Maps results[].score → relevance_score<br/>Maps input → document<br/>Extracts input_token_count
Config-->>Handler: RerankResponse
Handler-->>User: RerankResponse
Last reviewed commit: 8b1d937
|
All failed test are not related with this PR |
|
@krrishdholakia @Sameerlite Could you please review my PR and merge if possible? PR Confidence Score: 4/5 |
Greptile SummaryThis PR adds IBM watsonx.ai rerank support to LiteLLM, following the established provider integration pattern. The core transformation logic in
Confidence Score: 4/5
|
| Filename | Overview |
|---|---|
| litellm/llms/watsonx/rerank/transformation.py | New file: Core transformation logic for watsonx rerank. Properly extends IBMWatsonXMixin and BaseRerankConfig. Maps Cohere params to watsonx format, handles auth, and transforms responses correctly. |
| litellm/rerank_api/main.py | Adds watsonx provider branch to rerank flow. Follows existing pattern (Voyage, Fireworks). Import moved to top of file per style guide. Credentials flow via IBMWatsonXMixin is correct. |
| litellm/types/llms/watsonx.py | Adds RERANK endpoint enum value to WatsonXAIEndpoint. Minimal, correct change. |
| litellm/utils.py | Adds watsonx case to ProviderConfigManager.get_provider_rerank_config(). Follows exact same pattern as other providers. |
| litellm/init.py | Registers IBMWatsonXRerankConfig for TYPE_CHECKING imports. Standard registration pattern. |
| litellm/_lazy_imports_registry.py | Adds IBMWatsonXRerankConfig to lazy imports registry. Standard registration pattern. |
| tests/test_litellm/llms/watsonx/rerank/test_watsonx_rerank.py | New file: 8 test cases covering URL generation, param mapping, request/response transformation, error handling. All mock-based, no network calls. Good coverage of core transformation logic. |
| docs/my-website/docs/providers/watsonx/rerank.md | New documentation for watsonx rerank with SDK and Proxy usage examples. |
| docs/my-website/docs/rerank.md | Adds watsonx.ai to the supported providers list and reformats table alignment. No functional changes. |
Sequence Diagram
sequenceDiagram
participant User
participant rerank as rerank_api/main.py
participant Mixin as IBMWatsonXMixin
participant Config as IBMWatsonXRerankConfig
participant Handler as BaseLLMHTTPHandler
participant WatsonX as watsonx.ai API
User->>rerank: rerank(model="watsonx/...", query, documents, project_id)
rerank->>rerank: get_llm_provider() → strips "watsonx/" prefix
rerank->>Config: map_cohere_rerank_params()
Note over Config: documents → inputs<br/>top_n → parameters.return_options.top_n<br/>return_documents → parameters.return_options.inputs
rerank->>Mixin: get_watsonx_credentials()
Mixin-->>rerank: api_key, api_base, token
rerank->>Handler: rerank(model, provider_config, optional_rerank_params)
Handler->>Config: validate_environment(headers, api_key, optional_params)
Note over Config: Sets Bearer/ZenApiKey auth header<br/>Pops token from params
Handler->>Config: get_complete_url(api_base, model)
Note over Config: {api_base}/ml/v1/text/rerank?version=...
Handler->>Config: transform_rerank_request(model, params)
Note over Config: _get_api_params() extracts project_id<br/>_prepare_payload() adds model_id
Handler->>WatsonX: POST /ml/v1/text/rerank
WatsonX-->>Handler: JSON response
Handler->>Config: transform_rerank_response()
Note over Config: Maps score → relevance_score<br/>input → document<br/>input_token_count → meta.tokens
Config-->>User: RerankResponse
Last reviewed commit: 8b1d937
72af441
into
BerriAI:litellm_oss_staging_02_17_2026
Title
Add IBM watsonx.ai rerank support
Relevant issues
Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
tests/litellm/directory, Adding at least 1 test is a hard requirement - see detailsmake test-unit@greptileaiand received a Confidence Score of at least 4/5 before requesting a maintainer reviewCI (LiteLLM team)
Branch creation CI run
Link:
CI run for the last commit
Link:
Merge / cherry-pick CI run
Links:
Type
🆕 New Feature
✅ Test
Changes