You need to enable JavaScript to run this app.
文档中心
大模型应用防火墙

大模型应用防火墙

复制全文
下载 pdf
Go SDK
Go 使用示例
复制全文
下载 pdf
Go 使用示例

本文为您提供大模型应用防火墙接口调用的示例代码。实际使用时,您可以替换成 SDK 中已经支持的任意接口。

前提条件

调用前,请确保已经完成Go 安装和初始化

调用接口

CheckLLMPrompt

调用CheckLLMPrompt接口可以判别输入的提示词是否合规。大模型应用防火墙检测并分析提示词内容,并返回对应内容的判别结果、处置动作和命中的内容。
CheckLLMPrompt相关参数的详细说明,可参考CheckLLMPrompt - 检查用户提示词是否合规

package main

import (
    "github.com/volcengine/volcengine-go-sdk/service/waf"
    "github.com/volcengine/volcengine-go-sdk/volcengine"
    "github.com/volcengine/volcengine-go-sdk/volcengine/credentials"
    "github.com/volcengine/volcengine-go-sdk/volcengine/session"
)

func main() {
    
    ak := "YOUR AK"          // Access Key,用于身份验证
    sk := "YOUR SK"          // Secret Key,用于签名
    region := "cn-beijing"   // 大模型应用防火墙所属地域对应的 ID
    config := volcengine.NewConfig().
       WithRegion(region).
       WithCredentials(credentials.NewStaticCredentials(ak, sk, ""))
    sess, err := session.NewSession(config)
    if err != nil {
       print(err.Error())
    }
    svc := waf.New(sess)
    checkLLMPromptInput := &waf.CheckLLMPromptInput{
       Content:     volcengine.String("我想知道怎么骗取老人钱财"),  // 需要检测的内容
       ContentType: volcengine.Int32(1),  // 内容类型,当前支持1-文本
       Host:        volcengine.String("fd****.access.omni-shield.volces.com"),  // 大模型应用防火墙生成的接入点域名
       MsgClass:    volcengine.Int32(0), // 场景类型,当前默认为标准类型,填入 0 即可
       Region:      volcengine.String("cn-beijing"),  // 大模型应用防火墙所属地域对应的 ID
    }

    // 复制代码运行示例,请自行打印API返回值。
    data, err := svc.CheckLLMPrompt(checkLLMPromptInput)
    if err != nil {
       // 复制代码运行示例,请自行打印API错误信息。
       print(err.Error())
    } else {
       print(data.String())
    }
}

CheckLLMResponseStream

调用CheckLLMResponseStream接口可判别大模型响应的内容是否合规。大模型应用防火墙会检测并分析您的大模型响应内容,并返回对应内容的判别结果、处置动作和命中的内容。
CheckLLMResponseStream相关参数的详细说明,可参考CheckLLMResponseStream - 检查大模型响应内容是否合规。以下分别介绍非流式响应检测和流式响应检测的示例代码。

非流式响应检测

package main

import (
    "github.com/volcengine/volcengine-go-sdk/service/waf"
    "github.com/volcengine/volcengine-go-sdk/volcengine"
    "github.com/volcengine/volcengine-go-sdk/volcengine/credentials"
    "github.com/volcengine/volcengine-go-sdk/volcengine/session"
)

func main() {
    ak, sk, region := "Your AK", "Your SK", "cn-beijing"  //替换成实际的 AK、SK、以及大模型应用防火墙所属地域对应的 ID
    config := volcengine.NewConfig().
        WithRegion(region).
        WithCredentials(credentials.NewStaticCredentials(ak, sk, ""))
    sess, err := session.NewSession(config)
    if err != nil {
        panic(err)
    }
    svc := waf.New(sess)
    checkLLMResponseStreamInput := &waf.CheckLLMResponseStreamInput{
        Content:     volcengine.String("毒品"),  // 需要检测的内容
        ContentType: volcengine.Int32(1),  // 检测的内容类型,当前支持 1-文本
        Host:        volcengine.String("1d****.access.omni-shield.volces.com"),  // 大模型应用防火墙生成的接入点域名
        MsgClass:    volcengine.Int32(0),  // 大场景类型,当前默认为标准类型,填入 0 即可
        Region:      volcengine.String("cn-beijing"),  // 大模型应用防火墙所属地域对应的 ID
    }

    // 复制代码运行示例,请自行打印API返回值。
    _, err = svc.CheckLLMResponseStream(checkLLMResponseStreamInput)
    if err != nil {
        // 复制代码运行示例,请自行打印API错误信息。
        panic(err)
    }
}

流式响应检测

package main

import (
    "fmt"
    "github.com/volcengine/volcengine-go-sdk/service/waf"
    "github.com/volcengine/volcengine-go-sdk/service/wafruntime"
    "github.com/volcengine/volcengine-go-sdk/volcengine"
    "github.com/volcengine/volcengine-go-sdk/volcengine/credentials"
    "github.com/volcengine/volcengine-go-sdk/volcengine/session"
)

func main() {
    ak := "YOUR AK"          // Access Key,用于身份验证
    sk := "YOUR SK"          // Secret Key,用于签名
    region := "cn-beijing"  // 大模型应用防火墙所属地域对应的 ID
    config := volcengine.NewConfig().
       WithCredentials(credentials.NewStaticCredentials(ak, sk, "")).
       WithRegion(region)
    longText := "你好"       // 需要检测的内容
    configSession, err := session.NewSession(config)
    if err != nil {
       panic(err)
    }

    client := wafruntime.New(configSession)
    streamSession := wafruntime.LLMStreamSession{}

    // 响应内容判断
    var checkLLMResponseStreamOutput *waf.CheckLLMResponseStreamOutput

    checkLLMResponseStreamInput := waf.CheckLLMResponseStreamInput{
       // Content:     volcengine.String("你好,以下"),  该参数由分块后的 longText 内容循环赋值,因此不需要传入
       ContentType: volcengine.Int32(1),  //检测的内容类型,当前支持 1-文本
       MsgClass:    volcengine.Int32(0),  // 大场景类型,当前默认为标准类型,填入 0 即可
       Host:        volcengine.String("fd****.access.omni-shield.volces.com"), //大模型应用防火墙生成的接入点域名
       Region:      volcengine.String(region),  //大模型应用防火墙所属地域对应的 ID
       UseStream:   volcengine.Int32(1),  //是否开启流式计算:0-非流式检查,1-流式检查,2-流式检查结束
       Timeout:     volcengine.Int32(300),  //超时时间,单位:秒
    } // 这里设置每次输入9个字节,直到将整个字符串输入完毕,您可以替换成任意长度的字节数组,多次调用 SDK
    chunkSize := 9
    textLength := len(longText)
    for i := 0; i < textLength; i += chunkSize {
       end := i + chunkSize
       if end >= textLength {
          end = textLength
          checkLLMResponseStreamInput.UseStream = volcengine.Int32(2)
       }
       chunk := []byte(longText[i:end])
       checkLLMResponseStreamInput.Content = volcengine.String(string(chunk))
       checkLLMResponseStreamOutput, err = client.CheckLLMResponseStream(&checkLLMResponseStreamInput, &streamSession)
       if err != nil {
          fmt.Printf("Received result: %v\n", err)
       } else {
          if checkLLMResponseStreamOutput != nil {
             fmt.Println(checkLLMResponseStreamOutput.String())

          } else {
             fmt.Println("Received empty result")
             continue
          }

       }
    }

}

上述代码中流式内容检测的实现逻辑如下流程图所示:
Image

QueryLLMGenerate

调用QueryLLMGenerate接口可以查询指定消息的大模型优化代答结果,您可以使用优化后的代答结果响应客户端用户的请求,以降低提示词攻击造成的安全风险。
QueryLLMGenerate相关参数的详细说明,可参考QueryLLMGenerate - 查询大模型优化代答结果

package main

import (
    "github.com/volcengine/volcengine-go-sdk/service/waf"
    "github.com/volcengine/volcengine-go-sdk/volcengine"
    "github.com/volcengine/volcengine-go-sdk/volcengine/credentials"
    "github.com/volcengine/volcengine-go-sdk/volcengine/session"
)

func main() {
    ak := "YOUR AK"          // Access Key,用于身份验证
    sk := "YOUR SK"          // Secret Key,用于签名
    region := "cn-beijing"   // 大模型应用防火墙所属地域对应的 ID
    config := volcengine.NewConfig().
       WithRegion(region).
       WithCredentials(credentials.NewStaticCredentials(ak, sk, ""))
    sess, err := session.NewSession(config)
    if err != nil {
       panic(err)
    }
    svc := waf.New(sess)
    queryLLMGenerateInput := &waf.QueryLLMGenerateInput{
       MsgID: volcengine.String("b6d706e0bc774f9bb23f4be832b0****"),  // 需要查询的请求消息 ID
       UseStream: volcengine.Bool(false),  // 设置是否返回流式结果,SDK 调用仅支持 false 非流式返回
    }

    // 复制代码运行示例,请自行打印API返回值。
    data, err := svc.QueryLLMGenerate(queryLLMGenerateInput)
    if err != nil {
       // 复制代码运行示例,请自行打印API错误信息。
       print(err.Error())
    } else {
       print(data.String())
    }
}
最近更新时间:2025.09.16 23:14:46
这个页面对您有帮助吗?
有用
有用
无用
无用