You need to enable JavaScript to run this app.
导航
C++ 使用示例
最近更新时间:2025.04.23 16:51:49首次发布时间:2025.04.09 15:17:28
我的收藏
有用
有用
无用
无用

本文为您提供调用CheckLLMPrompt判别大模型提示词是否合规的示例代码。实际使用时,您可以替换成 SDK 中已经支持的任意接口。

前提条件

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

调用接口

CheckLLMPrompt相关参数的详细说明,可参考CheckLLMPrompt - 判别大模型提示词是否合规

#include "api_request.h"

// 定义常量,实际使用时请替换为真实值
const char *AccessKeyID = "Your AK";  // Access Key,用于身份验证
const char *SecretAccessKey = "Your SK";  // Secret Key,用于签名
const char *Region = "cn-beijing";  // 大模型应用防火墙所属地域对应的 ID
const char *Service = "waf";  // 大模型应用防火墙的服务名称,固定为 waf
const char *Endpoint = "open.volcengineapi.com";  // 大模型应用防火墙的服务地址,固定为 open.volcengineapi.com
const char *Action = "CheckLLMPrompt";  // API 名称
const char *Version = "2023-12-25"; // API 版本
const char *Content = "请输入您想要校验的内容,文本内容或资源URL";  // 需要检测的内容

int main()
{
    CURL *curl;
    CURLcode res;
    struct curl_slist *headers = NULL;
    char queryString[MAX_LEN] = {0};
    char requestAddr[MAX_LEN] = {0};
    char date[64] = {0};
    char authDate[9] = {0};
    char payload[MAX_LEN] = {0};
    char canonicalString[MAX_LEN * 2] = {0};
    char hashedCanonicalString[MAX_LEN] = {0};
    char signString[MAX_LEN * 2] = {0};
    char authorization[MAX_LEN] = {0};
    char requestBody[MAX_LEN] = {0};
    char x_date_header[MAX_LEN] = {0};
    char x_content_sha256_header[MAX_LEN] = {0};

    // 构建签名材料
    time_t now = time(NULL);
    struct tm *tm_info = gmtime(&now);
    if (strftime(date, sizeof(date), DATE_FORMAT, tm_info) == 0)
    {
        fprintf(stderr, "Failed to format date\n");
        return 1;
    }

    strncpy(authDate, date, 8);
    authDate[8] = '\0';

    // 构建请求体
    buildCheckLLMPromptBody(Content, 1, "config.sdk.cn", 0, Region, requestBody);

    // 构建查询字符串
    buildQueryString(Action, Version, queryString, MAX_LEN);

    // 构建请求地址
    buildRequestAddress(Endpoint, queryString, requestAddr, MAX_LEN);

    // 构建签名相关材料
    buildSignatureMaterials(date, authDate, requestBody, payload, MAX_LEN);

    // 构建规范字符串
    buildCanonicalString("POST", queryString, Endpoint, date, payload, canonicalString);

    strcpy(hashedCanonicalString, hashSHA256((const unsigned char *)canonicalString, strlen(canonicalString)));

    // 构建签名字符串
    buildSignString(date, authDate, hashedCanonicalString, signString);

    // 构建认证请求头
    buildAuthorization(authDate, signString, authorization);

    // 初始化libcurl
    curl = initCurl();
    if (curl)
    {
        // 设置请求头
        headers = curl_slist_append(headers, "Content-Type: application/json");
        if (snprintf(x_date_header, MAX_LEN, "X-Date: %s", date) >= MAX_LEN)
        {
            fprintf(stderr, "x_date_header buffer overflow\n");
            curl_slist_free_all(headers);
            curl_easy_cleanup(curl);
            return 1;
        }
        headers = curl_slist_append(headers, x_date_header);

        if (snprintf(x_content_sha256_header, MAX_LEN, "X-Content-Sha256: %s", payload) >= MAX_LEN)
        {
            fprintf(stderr, "x_content_sha256_header buffer overflow\n");
            curl_slist_free_all(headers);
            curl_easy_cleanup(curl);
            return 1;
        }
        headers = curl_slist_append(headers, x_content_sha256_header);

        char Authorization[4096] = {0};
        sprintf(Authorization, "Authorization: %s", authorization);
        headers = curl_slist_append(headers, Authorization);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

        // 执行请求
        res = performCurlRequest(curl, requestAddr, requestBody, headers);

        // 清理请求头列表
        curl_slist_free_all(headers);

        // 清理libcurl句柄
        curl_easy_cleanup(curl);
    }

    return 0;
}