feat(ai-security-guard): add Embedding API content detection support (#3895)

Signed-off-by: root <jianwei.wjw@alibaba-inc.com>
This commit is contained in:
JianweiWang
2026-06-02 12:11:00 +08:00
committed by GitHub
parent a45b1dde6c
commit 58ffdae6ba
5 changed files with 818 additions and 2 deletions

View File

@@ -3,6 +3,7 @@ package multi_modal_guard
import (
cfg "github.com/alibaba/higress/plugins/wasm-go/extensions/ai-security-guard/config"
common_text "github.com/alibaba/higress/plugins/wasm-go/extensions/ai-security-guard/lvwang/common/text"
"github.com/alibaba/higress/plugins/wasm-go/extensions/ai-security-guard/lvwang/multi_modal_guard/embedding"
"github.com/alibaba/higress/plugins/wasm-go/extensions/ai-security-guard/lvwang/multi_modal_guard/image"
"github.com/alibaba/higress/plugins/wasm-go/extensions/ai-security-guard/lvwang/multi_modal_guard/mcp"
"github.com/alibaba/higress/plugins/wasm-go/extensions/ai-security-guard/lvwang/multi_modal_guard/text"
@@ -31,6 +32,8 @@ func OnHttpRequestBody(ctx wrapper.HttpContext, config cfg.AISecurityConfig, bod
}
case cfg.ApiMCP:
return mcp.HandleMcpRequestBody(ctx, config, body)
case cfg.ApiEmbedding:
return embedding.HandleEmbeddingRequestBody(ctx, config, body)
default:
log.Errorf("[on request body] multi_modal_guard don't support api: %s", config.ApiType)
return types.ActionContinue
@@ -58,6 +61,8 @@ func OnHttpResponseHeaders(ctx wrapper.HttpContext, config cfg.AISecurityConfig)
ctx.NeedPauseStreamingResponse()
return types.ActionContinue
}
case cfg.ApiEmbedding:
return embedding.HandleEmbeddingResponseHeaders(ctx, config)
default:
log.Errorf("[on response header] multi_modal_guard don't support api: %s", config.ApiType)
return types.ActionContinue
@@ -70,6 +75,10 @@ func OnHttpStreamingResponseBody(ctx wrapper.HttpContext, config cfg.AISecurityC
return common_text.HandleTextGenerationStreamingResponseBody(ctx, config, data, endOfStream)
case cfg.ApiMCP:
return mcp.HandleMcpStreamingResponseBody(ctx, config, data, endOfStream)
case cfg.ApiEmbedding:
// Embedding doesn't support streaming responses; pass through and log warning
log.Warnf("[on streaming response body] embedding api doesn't support streaming, ignoring responseStreamContentJsonPath")
return data
default:
log.Errorf("[on streaming response body] multi_modal_guard don't support api: %s", config.ApiType)
return data
@@ -92,6 +101,8 @@ func OnHttpResponseBody(ctx wrapper.HttpContext, config cfg.AISecurityConfig, bo
}
case cfg.ApiMCP:
return mcp.HandleMcpResponseBody(ctx, config, body)
case cfg.ApiEmbedding:
return embedding.HandleEmbeddingResponseBody(ctx, config, body)
default:
log.Errorf("[on response body] multi_modal_guard don't support api: %s", config.ApiType)
return types.ActionContinue