This is an automated email from the ASF dual-hosted git repository.

shreemaanabhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 25e2e7371 refactor: ai-content-moderation to ai-aws-content-moderation 
(#12010)
25e2e7371 is described below

commit 25e2e73711f6862d336c79710fad79582eade17a
Author: Shreemaan Abhishek <shreemaan.abhis...@gmail.com>
AuthorDate: Thu Mar 6 11:33:43 2025 +0545

    refactor: ai-content-moderation to ai-aws-content-moderation (#12010)
---
 Makefile                                           |  3 -
 apisix/cli/config.lua                              |  2 +-
 ...oderation.lua => ai-aws-content-moderation.lua} | 81 ++++++++--------------
 apisix/plugins/ai/openai.lua                       | 33 ---------
 conf/config.yaml.example                           |  2 +-
 docs/en/latest/config.json                         |  2 +-
 ...-moderation.md => ai-aws-content-moderation.md} | 60 ++++++++--------
 t/admin/plugins.t                                  |  2 +-
 ...crets.t => ai-aws-content-moderation-secrets.t} | 34 ++++-----
 ...nt-moderation.t => ai-aws-content-moderation.t} | 69 ++++++++----------
 ...-moderation2.t => ai-aws-content-moderation2.t} | 16 ++---
 11 files changed, 110 insertions(+), 194 deletions(-)

diff --git a/Makefile b/Makefile
index c288463c9..2c3bb8ddb 100644
--- a/Makefile
+++ b/Makefile
@@ -382,9 +382,6 @@ install: runtime
        $(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai-rag/vector-search
        $(ENV_INSTALL) apisix/plugins/ai-rag/vector-search/*.lua 
$(ENV_INST_LUADIR)/apisix/plugins/ai-rag/vector-search
 
-       # ai-content-moderation plugin
-       $(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai
-       $(ENV_INSTALL) apisix/plugins/ai/*.lua 
$(ENV_INST_LUADIR)/apisix/plugins/ai
 
        $(ENV_INSTALL) bin/apisix $(ENV_INST_BINDIR)/apisix
 
diff --git a/apisix/cli/config.lua b/apisix/cli/config.lua
index 376b5ed15..8760cea73 100644
--- a/apisix/cli/config.lua
+++ b/apisix/cli/config.lua
@@ -217,7 +217,7 @@ local _M = {
     "ai-prompt-template",
     "ai-prompt-decorator",
     "ai-rag",
-    "ai-content-moderation",
+    "ai-aws-content-moderation",
     "proxy-mirror",
     "proxy-rewrite",
     "workflow",
diff --git a/apisix/plugins/ai-content-moderation.lua 
b/apisix/plugins/ai-aws-content-moderation.lua
similarity index 66%
rename from apisix/plugins/ai-content-moderation.lua
rename to apisix/plugins/ai-aws-content-moderation.lua
index f4958f321..c7b54ed4e 100644
--- a/apisix/plugins/ai-content-moderation.lua
+++ b/apisix/plugins/ai-aws-content-moderation.lua
@@ -19,48 +19,34 @@ local aws_instance = require("resty.aws")()
 local http = require("resty.http")
 local fetch_secrets = require("apisix.secret").fetch_secrets
 
-local next = next
 local pairs = pairs
 local unpack = unpack
 local type = type
 local ipairs = ipairs
-local require = require
 local HTTP_INTERNAL_SERVER_ERROR = ngx.HTTP_INTERNAL_SERVER_ERROR
 local HTTP_BAD_REQUEST = ngx.HTTP_BAD_REQUEST
 
-
-local aws_comprehend_schema = {
-    type = "object",
-    properties = {
-        access_key_id = { type = "string" },
-        secret_access_key = { type = "string" },
-        region = { type = "string" },
-        endpoint = {
-            type = "string",
-            pattern = [[^https?://]]
-        },
-        ssl_verify = {
-            type = "boolean",
-            default = true
-        }
-    },
-    required = { "access_key_id", "secret_access_key", "region", }
-}
-
 local moderation_categories_pattern = "^(PROFANITY|HATE_SPEECH|INSULT|"..
                                       
"HARASSMENT_OR_ABUSE|SEXUAL|VIOLENCE_OR_THREAT)$"
 local schema = {
     type = "object",
     properties = {
-        provider = {
+        comprehend = {
             type = "object",
             properties = {
-                aws_comprehend = aws_comprehend_schema
+                access_key_id = { type = "string" },
+                secret_access_key = { type = "string" },
+                region = { type = "string" },
+                endpoint = {
+                    type = "string",
+                    pattern = [[^https?://]]
+                },
+                ssl_verify = {
+                    type = "boolean",
+                    default = true
+                }
             },
-            maxProperties = 1,
-            -- ensure only one provider can be configured while implementing 
support for
-            -- other providers
-            required = { "aws_comprehend" }
+            required = { "access_key_id", "secret_access_key", "region", }
         },
         moderation_categories = {
             type = "object",
@@ -78,20 +64,16 @@ local schema = {
             minimum = 0,
             maximum = 1,
             default = 0.5
-        },
-        llm_provider = {
-            type = "string",
-            enum = { "openai" },
         }
     },
-    required = { "provider", "llm_provider" },
+    required = { "comprehend" },
 }
 
 
 local _M = {
     version  = 0.1,
     priority = 1040, -- TODO: might change
-    name     = "ai-content-moderation",
+    name     = "ai-aws-content-moderation",
     schema   = schema,
 }
 
@@ -107,51 +89,44 @@ function _M.rewrite(conf, ctx)
         return HTTP_INTERNAL_SERVER_ERROR, "failed to retrieve secrets from 
conf"
     end
 
-    local body, err = core.request.get_json_request_body_table()
+    local body, err = core.request.get_body()
     if not body then
         return HTTP_BAD_REQUEST, err
     end
 
-    local msgs = body.messages
-    if type(msgs) ~= "table" or #msgs < 1 then
-        return HTTP_BAD_REQUEST, "messages not found in request body"
-    end
-
-    local provider = conf.provider[next(conf.provider)]
+    local comprehend = conf.comprehend
 
     local credentials = aws_instance:Credentials({
-        accessKeyId = provider.access_key_id,
-        secretAccessKey = provider.secret_access_key,
-        sessionToken = provider.session_token,
+        accessKeyId = comprehend.access_key_id,
+        secretAccessKey = comprehend.secret_access_key,
+        sessionToken = comprehend.session_token,
     })
 
-    local default_endpoint = "https://comprehend."; .. provider.region .. 
".amazonaws.com"
-    local scheme, host, port = unpack(http:parse_uri(provider.endpoint or 
default_endpoint))
+    local default_endpoint = "https://comprehend."; .. comprehend.region .. 
".amazonaws.com"
+    local scheme, host, port = unpack(http:parse_uri(comprehend.endpoint or 
default_endpoint))
     local endpoint = scheme .. "://" .. host
     aws_instance.config.endpoint = endpoint
-    aws_instance.config.ssl_verify = provider.ssl_verify
+    aws_instance.config.ssl_verify = comprehend.ssl_verify
 
     local comprehend = aws_instance:Comprehend({
         credentials = credentials,
         endpoint = endpoint,
-        region = provider.region,
+        region = comprehend.region,
         port = port,
     })
 
-    local ai_module = require("apisix.plugins.ai." .. conf.llm_provider)
-    local create_request_text_segments = ai_module.create_request_text_segments
-
-    local text_segments = create_request_text_segments(msgs)
     local res, err = comprehend:detectToxicContent({
         LanguageCode = "en",
-        TextSegments = text_segments,
+        TextSegments = {{
+            Text = body
+        }},
     })
 
     if not res then
         core.log.error("failed to send request to ", endpoint, ": ", err)
         return HTTP_INTERNAL_SERVER_ERROR, err
     end
-
+    core.log.warn("dibag: ", core.json.encode(res))
     local results = res.body and res.body.ResultList
     if type(results) ~= "table" or core.table.isempty(results) then
         return HTTP_INTERNAL_SERVER_ERROR, "failed to get moderation results 
from response"
diff --git a/apisix/plugins/ai/openai.lua b/apisix/plugins/ai/openai.lua
deleted file mode 100644
index 203debb7e..000000000
--- a/apisix/plugins/ai/openai.lua
+++ /dev/null
@@ -1,33 +0,0 @@
---
--- Licensed to the Apache Software Foundation (ASF) under one or more
--- contributor license agreements.  See the NOTICE file distributed with
--- this work for additional information regarding copyright ownership.
--- The ASF licenses this file to You under the Apache License, Version 2.0
--- (the "License"); you may not use this file except in compliance with
--- the License.  You may obtain a copy of the License at
---
---     http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
---
-local core = require("apisix.core")
-local ipairs = ipairs
-
-local _M = {}
-
-
-function _M.create_request_text_segments(msgs)
-    local text_segments = {}
-    for _, msg in ipairs(msgs) do
-        core.table.insert_tail(text_segments, {
-            Text = msg.content
-        })
-    end
-    return text_segments
-end
-
-return  _M
diff --git a/conf/config.yaml.example b/conf/config.yaml.example
index 780340dcb..59aef457d 100644
--- a/conf/config.yaml.example
+++ b/conf/config.yaml.example
@@ -481,7 +481,7 @@ plugins:                           # plugin list (sorted by 
priority)
   - ai-prompt-template             # priority: 1071
   - ai-prompt-decorator            # priority: 1070
   - ai-rag                         # priority: 1060
-  - ai-content-moderation          # priority: 1040 TODO: compare priority 
with other ai plugins
+  - ai-aws-content-moderation      # priority: 1040 TODO: compare priority 
with other ai plugins
   - proxy-mirror                   # priority: 1010
   - proxy-rewrite                  # priority: 1008
   - workflow                       # priority: 1006
diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json
index c8bf09ca7..55a770255 100644
--- a/docs/en/latest/config.json
+++ b/docs/en/latest/config.json
@@ -82,7 +82,7 @@
             "plugins/ext-plugin-post-resp",
             "plugins/inspect",
             "plugins/ocsp-stapling",
-            "plugins/ai-content-moderation"
+            "plugins/ai-aws-content-moderation"
           ]
         },
         {
diff --git a/docs/en/latest/plugins/ai-content-moderation.md 
b/docs/en/latest/plugins/ai-aws-content-moderation.md
similarity index 69%
rename from docs/en/latest/plugins/ai-content-moderation.md
rename to docs/en/latest/plugins/ai-aws-content-moderation.md
index 781b203d9..96844820d 100644
--- a/docs/en/latest/plugins/ai-content-moderation.md
+++ b/docs/en/latest/plugins/ai-aws-content-moderation.md
@@ -1,11 +1,11 @@
 ---
-title: ai-content-moderation
+title: ai-aws-content-moderation
 keywords:
   - Apache APISIX
   - API Gateway
   - Plugin
-  - ai-content-moderation
-description: This document contains information about the Apache APISIX 
ai-content-moderation Plugin.
+  - ai-aws-content-moderation
+description: This document contains information about the Apache APISIX 
ai-aws-content-moderation Plugin.
 ---
 
 <!--
@@ -29,7 +29,7 @@ description: This document contains information about the 
Apache APISIX ai-conte
 
 ## Description
 
-The `ai-content-moderation` plugin processes the request body to check for 
toxicity and rejects the request if it exceeds the configured threshold.
+The `ai-aws-content-moderation` plugin processes the request body to check for 
toxicity and rejects the request if it exceeds the configured threshold.
 
 **_This plugin must be used in routes that proxy requests to LLMs only._**
 
@@ -37,15 +37,15 @@ The `ai-content-moderation` plugin processes the request 
body to check for toxic
 
 ## Plugin Attributes
 
-| **Field**                                 | **Required** | **Type** | 
**Description**                                                                 
                                                                                
                                                                                
        |
-| ----------------------------------------- | ------------ | -------- | 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 |
-| provider.aws_comprehend.access_key_id     | Yes          | String   | AWS 
access key ID                                                                   
                                                                                
                                                                                
    |
-| provider.aws_comprehend.secret_access_key | Yes          | String   | AWS 
secret access key                                                               
                                                                                
                                                                                
    |
-| provider.aws_comprehend.region            | Yes          | String   | AWS 
region                                                                          
                                                                                
                                                                                
    |
-| provider.aws_comprehend.endpoint          | No           | String   | AWS 
Comprehend service endpoint. Must match the pattern `^https?://`                
                                                                                
                                                                                
    |
-| moderation_categories                     | No           | Object   | 
Key-value pairs of moderation category and their score. In each pair, the key 
should be one of the `PROFANITY`, `HATE_SPEECH`, `INSULT`, 
`HARASSMENT_OR_ABUSE`, `SEXUAL`, or `VIOLENCE_OR_THREAT`; and the value should 
be between 0 and 1 (inclusive). |
-| moderation_threshold                            | No           | Number   | 
The degree to which content is harmful, offensive, or inappropriate. A higher 
value indicates more toxic content allowed. Range: 0 - 1. Default: 0.5          
                                                                                
          |
-| llm_provider                              | Yes          | String   | Name 
of the LLM provider that this route will proxy requests to.                     
                                                                                
                                                                                
   |
+| **Field**                    | **Required** | **Type** | **Description**     
                                                                                
                                                                                
                                                                    |
+| ---------------------------- | ------------ | -------- | 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 |
+| comprehend.access_key_id     | Yes          | String   | AWS access key ID   
                                                                                
                                                                                
                                                                    |
+| comprehend.secret_access_key | Yes          | String   | AWS secret access 
key                                                                             
                                                                                
                                                                      |
+| comprehend.region            | Yes          | String   | AWS region          
                                                                                
                                                                                
                                                                    |
+| comprehend.endpoint          | No           | String   | AWS Comprehend 
service endpoint. Must match the pattern `^https?://`                           
                                                                                
                                                                         |
+| comprehend.ssl_verify        | No           | String   | Enables SSL 
certificate verification.                                                       
                                                                                
                                                                            |
+| moderation_categories        | No           | Object   | Key-value pairs of 
moderation category and their score. In each pair, the key should be one of the 
`PROFANITY`, `HATE_SPEECH`, `INSULT`, `HARASSMENT_OR_ABUSE`, `SEXUAL`, or 
`VIOLENCE_OR_THREAT`; and the value should be between 0 and 1 (inclusive). |
+| moderation_threshold         | No           | Number   | The degree to which 
content is harmful, offensive, or inappropriate. A higher value indicates more 
toxic content allowed. Range: 0 - 1. Default: 0.5                               
                                                                     |
 
 ## Example usage
 
@@ -58,7 +58,7 @@ SECRET_ACCESS_KEY=aws-comprehend-secret-access-key-here
 OPENAI_KEY=open-ai-key-here
 ```
 
-Create a route with the `ai-content-moderation` and `ai-proxy` plugin like so:
+Create a route with the `ai-aws-content-moderation` and `ai-proxy` plugin like 
so:
 
 ```shell
 curl "http://127.0.0.1:9180/apisix/admin/routes/1"; -X PUT \
@@ -66,18 +66,15 @@ curl "http://127.0.0.1:9180/apisix/admin/routes/1"; -X PUT \
   -d '{
     "uri": "/post",
     "plugins": {
-      "ai-content-moderation": {
-        "provider": {
-          "aws_comprehend": {
-            "access_key_id": "'"$ACCESS_KEY_ID"'",
-            "secret_access_key": "'"$SECRET_ACCESS_KEY"'",
-            "region": "us-east-1"
-          }
+      "ai-aws-content-moderation": {
+        "comprehend": {
+          "access_key_id": "'"$ACCESS_KEY_ID"'",
+          "secret_access_key": "'"$SECRET_ACCESS_KEY"'",
+          "region": "us-east-1"
         },
         "moderation_categories": {
           "PROFANITY": 0.5
-        },
-        "llm_provider": "openai"
+        }
       },
       "ai-proxy": {
         "auth": {
@@ -167,15 +164,12 @@ curl "http://127.0.0.1:9180/apisix/admin/routes/1"; -X PUT 
\
   -d '{
     "uri": "/post",
     "plugins": {
-      "ai-content-moderation": {
-        "provider": {
-          "aws_comprehend": {
-            "access_key_id": "'"$ACCESS_KEY_ID"'",
-            "secret_access_key": "'"$SECRET_ACCESS_KEY"'",
-            "region": "us-east-1"
-          }
+      "ai-aws-content-moderation": {
+        "comprehend": {
+          "access_key_id": "'"$ACCESS_KEY_ID"'",
+          "secret_access_key": "'"$SECRET_ACCESS_KEY"'",
+          "region": "us-east-1"
         },
-        "llm_provider": "openai",
         "moderation_categories": {
           "PROFANITY": 0.5,
           "HARASSMENT_OR_ABUSE": 0.7,
@@ -216,9 +210,9 @@ curl "http://127.0.0.1:9180/apisix/admin/routes/1"; -X PUT \
   -d '{
   "uri": "/post",
   "plugins": {
-    "ai-content-moderation": {
+    "ai-aws-content-moderation": {
       "provider": {
-        "aws_comprehend": {
+        "comprehend": {
           "access_key_id": "'"$ACCESS_KEY_ID"'",
           "secret_access_key": "'"$SECRET_ACCESS_KEY"'",
           "region": "us-east-1"
diff --git a/t/admin/plugins.t b/t/admin/plugins.t
index 7cb852cbf..a0d8dc1b0 100644
--- a/t/admin/plugins.t
+++ b/t/admin/plugins.t
@@ -97,7 +97,7 @@ body-transformer
 ai-prompt-template
 ai-prompt-decorator
 ai-rag
-ai-content-moderation
+ai-aws-content-moderation
 proxy-mirror
 proxy-rewrite
 workflow
diff --git a/t/plugin/ai-content-moderation-secrets.t 
b/t/plugin/ai-aws-content-moderation-secrets.t
similarity index 83%
rename from t/plugin/ai-content-moderation-secrets.t
rename to t/plugin/ai-aws-content-moderation-secrets.t
index 06d7941f7..6c531b243 100644
--- a/t/plugin/ai-content-moderation-secrets.t
+++ b/t/plugin/ai-aws-content-moderation-secrets.t
@@ -114,16 +114,13 @@ Success! Data written to: kv/apisix/foo
                  [[{
                     "uri": "/echo",
                     "plugins": {
-                        "ai-content-moderation": {
-                            "provider": {
-                                "aws_comprehend": {
-                                    "access_key_id": 
"$secret://vault/test1/foo/access_key_id",
-                                    "secret_access_key": 
"$secret://vault/test1/foo/secret_access_key",
-                                    "region": "us-east-1",
-                                    "endpoint": "http://localhost:2668";
-                                }
-                            },
-                            "llm_provider": "openai"
+                        "ai-aws-content-moderation": {
+                            "comprehend": {
+                                "access_key_id": 
"$secret://vault/test1/foo/access_key_id",
+                                "secret_access_key": 
"$secret://vault/test1/foo/secret_access_key",
+                                "region": "us-east-1",
+                                "endpoint": "http://localhost:2668";
+                            }
                         }
                     },
                     "upstream": {
@@ -169,16 +166,13 @@ POST /echo
                  [[{
                     "uri": "/echo",
                     "plugins": {
-                        "ai-content-moderation": {
-                            "provider": {
-                                "aws_comprehend": {
-                                    "access_key_id": "$env://ACCESS_KEY_ID",
-                                    "secret_access_key": 
"$env://SECRET_ACCESS_KEY",
-                                    "region": "us-east-1",
-                                    "endpoint": "http://localhost:2668";
-                                }
-                            },
-                            "llm_provider": "openai"
+                        "ai-aws-content-moderation": {
+                            "comprehend": {
+                                "access_key_id": "$env://ACCESS_KEY_ID",
+                                "secret_access_key": 
"$env://SECRET_ACCESS_KEY",
+                                "region": "us-east-1",
+                                "endpoint": "http://localhost:2668";
+                            }
                         }
                     },
                     "upstream": {
diff --git a/t/plugin/ai-content-moderation.t 
b/t/plugin/ai-aws-content-moderation.t
similarity index 75%
rename from t/plugin/ai-content-moderation.t
rename to t/plugin/ai-aws-content-moderation.t
index 66393ef98..1fb3eed8f 100644
--- a/t/plugin/ai-content-moderation.t
+++ b/t/plugin/ai-aws-content-moderation.t
@@ -101,16 +101,13 @@ __DATA__
                 [[{
                     "uri": "/echo",
                     "plugins": {
-                        "ai-content-moderation": {
-                            "provider": {
-                                "aws_comprehend": {
-                                    "access_key_id": "access",
-                                    "secret_access_key": "ea+secret",
-                                    "region": "us-east-1",
-                                    "endpoint": "http://localhost:2668";
-                                }
-                            },
-                            "llm_provider": "openai"
+                        "ai-aws-content-moderation": {
+                            "comprehend": {
+                                "access_key_id": "access",
+                                "secret_access_key": "ea+secret",
+                                "region": "us-east-1",
+                                "endpoint": "http://localhost:2668";
+                            }
                         }
                     },
                     "upstream": {
@@ -136,7 +133,7 @@ passed
 === TEST 2: toxic request should fail
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"toxic"}]}
+toxic
 --- error_code: 400
 --- response_body chomp
 request body exceeds toxicity threshold
@@ -146,7 +143,7 @@ request body exceeds toxicity threshold
 === TEST 3: good request should pass
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"good_request"}]}
+good_request
 --- error_code: 200
 
 
@@ -161,19 +158,16 @@ POST /echo
                 [[{
                     "uri": "/echo",
                     "plugins": {
-                        "ai-content-moderation": {
-                            "provider": {
-                                "aws_comprehend": {
-                                    "access_key_id": "access",
-                                    "secret_access_key": "ea+secret",
-                                    "region": "us-east-1",
-                                    "endpoint": "http://localhost:2668";
-                                }
+                        "ai-aws-content-moderation": {
+                            "comprehend": {
+                                "access_key_id": "access",
+                                "secret_access_key": "ea+secret",
+                                "region": "us-east-1",
+                                "endpoint": "http://localhost:2668";
                             },
                             "moderation_categories": {
                                 "PROFANITY": 0.5
-                            },
-                            "llm_provider": "openai"
+                            }
                         }
                     },
                     "upstream": {
@@ -199,7 +193,7 @@ passed
 === TEST 5: profane request should fail
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"profane"}]}
+profane
 --- error_code: 400
 --- response_body chomp
 request body exceeds PROFANITY threshold
@@ -209,7 +203,7 @@ request body exceeds PROFANITY threshold
 === TEST 6: very profane request should also fail
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"very_profane"}]}
+very_profane
 --- error_code: 400
 --- response_body chomp
 request body exceeds PROFANITY threshold
@@ -219,7 +213,7 @@ request body exceeds PROFANITY threshold
 === TEST 7: good_request should pass
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"good_request"}]}
+good_request
 --- error_code: 200
 
 
@@ -234,19 +228,16 @@ POST /echo
                 [[{
                     "uri": "/echo",
                     "plugins": {
-                        "ai-content-moderation": {
-                            "provider": {
-                                "aws_comprehend": {
-                                    "access_key_id": "access",
-                                    "secret_access_key": "ea+secret",
-                                    "region": "us-east-1",
-                                    "endpoint": "http://localhost:2668";
-                                }
+                        "ai-aws-content-moderation": {
+                            "comprehend": {
+                                "access_key_id": "access",
+                                "secret_access_key": "ea+secret",
+                                "region": "us-east-1",
+                                "endpoint": "http://localhost:2668";
                             },
                             "moderation_categories": {
                                 "PROFANITY": 0.7
-                            },
-                            "llm_provider": "openai"
+                            }
                         }
                     },
                     "upstream": {
@@ -272,7 +263,7 @@ passed
 === TEST 9: profane request should pass profanity check but fail toxicity check
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"profane"}]}
+profane
 --- error_code: 400
 --- response_body chomp
 request body exceeds toxicity threshold
@@ -282,7 +273,7 @@ request body exceeds toxicity threshold
 === TEST 10: profane_but_not_toxic request should pass
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"profane_but_not_toxic"}]}
+profane_but_not_toxic
 --- error_code: 200
 
 
@@ -290,7 +281,7 @@ POST /echo
 === TEST 11: but very profane request will fail
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"very_profane"}]}
+very_profane
 --- error_code: 400
 --- response_body chomp
 request body exceeds PROFANITY threshold
@@ -300,5 +291,5 @@ request body exceeds PROFANITY threshold
 === TEST 12: good_request should pass
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"good_request"}]}
+good_request
 --- error_code: 200
diff --git a/t/plugin/ai-content-moderation2.t 
b/t/plugin/ai-aws-content-moderation2.t
similarity index 81%
rename from t/plugin/ai-content-moderation2.t
rename to t/plugin/ai-aws-content-moderation2.t
index f509b1864..93897017d 100644
--- a/t/plugin/ai-content-moderation2.t
+++ b/t/plugin/ai-aws-content-moderation2.t
@@ -45,14 +45,12 @@ __DATA__
                 [[{
                     "uri": "/echo",
                     "plugins": {
-                        "ai-content-moderation": {
-                            "provider": {
-                                "aws_comprehend": {
-                                    "access_key_id": "access",
-                                    "secret_access_key": "ea+secret",
-                                    "region": "us-east-1",
-                                    "endpoint": "http://localhost:2668";
-                                }
+                        "ai-aws-content-moderation": {
+                            "comprehend": {
+                                "access_key_id": "access",
+                                "secret_access_key": "ea+secret",
+                                "region": "us-east-1",
+                                "endpoint": "http://localhost:2668";
                             },
                             "llm_provider": "openai"
                         }
@@ -80,7 +78,7 @@ passed
 === TEST 2: request should fail
 --- request
 POST /echo
-{"model":"gpt-4o-mini","messages":[{"role":"user","content":"toxic"}]}
+toxic
 --- error_code: 500
 --- response_body chomp
 Comprehend:detectToxicContent() failed to connect to 'http://localhost:2668': 
connection refused

Reply via email to