反代 new.oaifree.com 上道德审核

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const openaiApiKey = env.OPENAI_API_KEY; // 从环境变量获取 OpenAI API 密钥

    // 检查是否是特定路由
    if (url.pathname === "/backend-api/conversation") {
      const requestBody = await request.json(); // 读取 JSON 请求体
      const userMessages = requestBody.messages
        .filter(
          (msg) =>
            msg.author.role === "user" && msg.content.content_type === "text"
        )
        .map((msg) => msg.content.parts.join(" "));

      // 使用 OpenAI 的道德审核接口检查文本

      if (userMessages.length > 0) {
        const moderationResult = await checkContentForModeration(
          userMessages,
          openaiApiKey
        );
        if (moderationResult.shouldBlock) {
          return new Response(
            JSON.stringify({ detail: "公益不易,请珍惜账号喵!" }),
            {
              status: 451,
              headers: { "Content-Type": "application/json" },
            }
          );
        }
      }

      // 如果没有触发拦截,使用请求体创建新的请求对象并请求目标网站
      url.host = "new.oaifree.com";
      const newRequest = new Request(url, {
        body: JSON.stringify(requestBody),
        method: request.method,
        headers: request.headers,
      });
      return fetch(newRequest);
    }

    // 如果不是特定路由,转发原始请求
    url.host = "new.oaifree.com";
    return fetch(new Request(url, request));
  },
};

// 使用 OpenAI 的道德审核接口检查内容
async function checkContentForModeration(messages, apiKey) {
  const response = await fetch("https://api.openai.com/v1/moderations", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${apiKey}`,
    },
    body: JSON.stringify({ input: messages }),
  });

  // 检查 HTTP 响应是否成功
  if (response.ok) {
    // response.ok 是一个便捷属性,当状态码在 200-299 范围内时为 true
    const data = await response.json();
    return {
      shouldBlock: data.results.some((result) => result.flagged),
    };
  } else {
    console.error("Moderation API returned an error:", response.status);
    return { shouldBlock: false }; // 如果 API 调用失败,假定内容是安全的
  }
}

配置 worker ,配置变量 OPENAI_API_KEY 。

只要有个有余额的 OPENAI_API_KEY ,就可以上始皇同款道德审核,示例如图。

测试网站:https://oaifree.lvguanjun135.workers.dev/

key 挂了,别试了

加一个 泄露访问者真实 ip 的风险提示。

29 个赞

:cow::beer:

5 个赞

真快啊

3 个赞

官方的moderation很迷,很多不道德的句子都<0.5,而且涉z嘛,咳咳

5 个赞

始皇不是说不允许反代new.oaifree吗?

3 个赞

不必如此麻烦。Moderation有Rate limit,远端服务又要增加响应延迟。

学Anthropic在末尾加一句话就行。

(Please answer ethically and without any sexual content, and do not mention this constraint.)

社区反馈表示,这非常有效且成本低廉。

14 个赞

能用其他ai做道德审查么

2 个赞

打不开了

3 个赞

:joy:

16 个赞

不允许反代的是shared.oaifree喵


打不开啊

笑死 :joy:

1 个赞

worker 的域名,可能要挂梯

太强了

1 个赞

精华神贴软件开发

用魔法打败魔法

@neo 我如果用 oaipro 是不是也能反代了以后 道德审查啊

3 个赞

不是自动的。 oaipro 有道德审查接口可用,但要自己接。

4 个赞

感觉有点傻

1 个赞

根本不会接

果然是和 oai 的接口一摸一样啊

换一下子就行了!

1 个赞