Files
higress/plugins/wasm-cpp/extensions/model_router

Function Description

The model-router plugin implements the function of routing based on the model parameter in the LLM protocol.

Configuration Fields

Name Data Type Filling Requirement Default Value Description
modelKey string Optional model The location of the model parameter in the request body
addProviderHeader string Optional - Which request header to place the provider name parsed from the model parameter
modelToHeader string Optional - Which request header to directly place the model parameter
enableOnPathSuffix array of string Optional ["/v1/chat/completions"] Only effective for requests with these specific path suffixes

Runtime Attributes

Plugin execution phase: Authentication phase Plugin execution priority: 900

Effect Description

Routing Based on the model Parameter

The following configuration is required:

modelToHeader: x-higress-llm-model

The plugin will extract the model parameter from the request and set it in the x-higress-llm-model request header, which can be used for subsequent routing. For example, the original LLM request body:

{
    "model": "qwen-long",
    "frequency_penalty": 0,
    "max_tokens": 800,
    "stream": false,
    "messages": [{
        "role": "user",
        "content": "What is the GitHub address of the main repository for the higress project"
    }],
    "presence_penalty": 0,
    "temperature": 0.7,
    "top_p": 0.95
}

After processing by this plugin, the following request header (which can be used for route matching) will be added:

x-higress-llm-model: qwen-long

Extracting the provider Field from the model Parameter for Routing

Note that this mode requires the client to specify the provider using a / separator in the model parameter.

The following configuration is required:

addProviderHeader: x-higress-llm-provider

The plugin will extract the provider part (if present) from the model parameter in the request and set it in the x-higress-llm-provider request header, which can be used for subsequent routing, and rewrite the model parameter to the model name part. For example, the original LLM request body:

{
    "model": "dashscope/qwen-long",
    "frequency_penalty": 0,
    "max_tokens": 800,
    "stream": false,
    "messages": [{
        "role": "user",
        "content": "What is the GitHub address of the main repository for the higress project"
    }],
    "presence_penalty": 0,
    "temperature": 0.7,
    "top_p": 0.95
}

After processing by this plugin, the following request header (which can be used for route matching) will be added:

x-higress-llm-provider: dashscope

The original LLM request body will be changed to:

{
    "model": "qwen-long",
    "frequency_penalty": 0,
    "max_tokens": 800,
    "stream": false,
    "messages": [{
        "role": "user",
        "content": "What is the GitHub address of the main repository for the higress project"
    }],
    "presence_penalty": 0,
    "temperature": 0.7,
    "top_p": 0.95
}