跳到主要内容

Aporia 护栏与 LiteLLM 网关

在本教程中,我们将使用 LiteLLM AI 网关与 Aporia 结合来检测请求中的 PII(个人身份信息)和响应中的脏话。

1. 在 Aporia 上设置护栏

创建 Aporia 项目

Aporia 上创建两个项目

  1. LLM API 调用前 - 设置所有您想在 LLM API 调用前运行的策略
  2. LLM API 调用后 - 设置所有您想在 LLM API 调用后运行的策略

调用前:检测 PII

PII - Prompt 添加到您的“LLM API 调用前”项目

调用后:检测响应中的脏话

Toxicity - Response 添加到您的“LLM API 调用后”项目

2. 在 LiteLLM config.yaml 中定义护栏

  • guardrails 部分定义您的护栏,并设置 pre_call_guardrailspost_call_guardrails
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY

guardrails:
- guardrail_name: "aporia-pre-guard"
litellm_params:
guardrail: aporia # supported values: "aporia", "lakera"
mode: "during_call"
api_key: os.environ/APORIA_API_KEY_1
api_base: os.environ/APORIA_API_BASE_1
- guardrail_name: "aporia-post-guard"
litellm_params:
guardrail: aporia # supported values: "aporia", "lakera"
mode: "post_call"
api_key: os.environ/APORIA_API_KEY_2
api_base: os.environ/APORIA_API_BASE_2

mode 支持的值

  • pre_call 在 LLM 调用之前运行,作用于输入
  • post_call 在 LLM 调用之后运行,作用于输入 & 输出
  • during_call 在 LLM 调用期间运行,作用于输入。与 pre_call 相同,但与 LLM 调用并行运行。直到护栏检查完成才会返回响应。

3. 启动 LiteLLM 网关

litellm --config config.yaml --detailed_debug

4. 测试请求

Langchain、OpenAI SDK 使用示例

预计此调用将失败,因为请求中的 ishaan@berri.ai 是 PII(个人身份信息)

curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-npnwjPQciVRok5yNZgKmFQ" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": "hi my email is ishaan@berri.ai"}
],
"guardrails": ["aporia-pre-guard", "aporia-post-guard"]
}'

失败时的预期响应

{
"error": {
"message": {
"error": "Violated guardrail policy",
"aporia_ai_response": {
"action": "block",
"revised_prompt": null,
"revised_response": "Aporia detected and blocked PII",
"explain_log": null
}
},
"type": "None",
"param": "None",
"code": "400"
}
}

5. 按项目(API Key)控制护栏

使用此功能按项目控制运行哪些护栏。在本教程中,我们只希望为 1 个项目(API Key)运行以下护栏:

  • guardrails: ["aporia-pre-guard", "aporia-post-guard"]

步骤 1 创建带有护栏设置的 Key

curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-D '{
"guardrails": ["aporia-pre-guard", "aporia-post-guard"]
}
}'

步骤 2 使用新 Key 进行测试

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Authorization: Bearer sk-jNm1Zar7XfNdZXp49Z1kSQ' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "my email is ishaan@berri.ai"
}
]
}'