产品更新

如何在 Python 中检测 AI

2025年8月11日

在本教程中,我们将学习如何使用 Pangram 来检查文本中是否包含 AI 生成的内容 pangram-sdk Python 包。

pangram-sdk 该包允许开发者使用 Pangram 的人工智能内容检测 API 用于检查短篇文本或长篇文档,以判断其内容是否由人工智能生成。

在本教程中,我们将介绍如何获取 API 密钥、使用 Pangram 的 Python SDK,以及如何直接向 Pangram 的 API 接口发送 HTTP 请求。如需了解更多信息和使用示例,请参阅Pangram 的完整 API 文档

设置

首先,您需要一个 Pangram 账户。使用您希望关联 API 密钥的邮箱地址注册账户。注册完成后,您将有两种方式来设置账户:注册开发者计划或获取研究者 API 密钥。

Pangram 的开发者套餐起价为每月 100 美元。该套餐每月包含多达 2000 个 API 积分。您可以联系我们以解锁您的账户并启用按使用量计费。立即注册开发者套餐,开始使用。注册开发者套餐后,您可以在API 控制台中找到您的 API 密钥。

Pangram 还向研究人员免费提供 API 密钥。如果您正在进行非商业性研究,请填写此表单申请免费 API 配额。我们将直接向您发送 API 密钥及您的研究配额。

环境配置

获取 API 密钥后,即可将其添加到环境中。运行以下命令,并将示例 API 密钥替换为您的个人 API 密钥。您也可以将此命令添加到您的 .bashrc, .zshrc, .env,等等,以自动设置 PANGRAM_API_KEY 变量。

导出 PANGRAM_API_KEY="12345678-1234-abcd-0123-123456789abc"

下载 Python SDK

请确保已启用正确的 Python 环境。运行以下命令安装 Pangram 的 Python SDK:

pip 安装 pangram-sdk

如果你使用 uv,也可以改用:

uv 添加 pangram-sdk

如果你使用 Poetry,命令应为:

诗歌 添加 pangram-sdk

使用 Python SDK

创建一个 Pangram 客户端

首先,创建一个 Pangram 客户端来发送请求。Pangram 客户端会自动从环境变量中读取您的 API 密钥。

来自 全字母句 导入 Pangram
pangram_client = Pangram()

您也可以直接传入 API 密钥:

来自 全字母句 导入 Pangram

我的API密钥 = ''  # 请在此处填写您的 API 密钥。
pangram_client = Pangram(api_key=my_api_key)

提交标准请求

pangram_client's 预测 该函数将向 Pangram 的 API 发送一次请求并返回结果。默认情况下,它只会检索前 400 个左右的单词。每次请求将消耗 1 个积分。

文本 = "那只敏捷的棕色狐狸跳过了那只懒惰的狗。"
结果 = pangram_client.预测(文本)
评分 = result["ai_likelihood"]
分数的文本表示 = result["预测"]
打印(f"我们预测该文本 {文本}{分数的文本表示},其AI似然值为 {score}。") 

发送批量请求

使用 predict_batch 该功能可一次性发送一批查询,以便更快地处理大型数据集。每次请求将按批次中的每项消耗一个积分。返回的结果将是一个数组,其格式与单条查询的结果相同。 预测 函数。

text_batch = ["text1", "text2"]

results = pangram_client.batch_predict(text_batch)
for result in results:
    text = result["text"]
    score = result["ai_likelihood"]
    text_representation_of_score = result["prediction"]
    print(f"We predict that the text {text} is {text_representation_of_score}, with an AI likelihood of {score}.") 

发起滑动窗口请求

使用 预测滑动窗口 该函数用于对长篇文档中AI的使用情况进行准确预测。该函数会将输入文本划分为多个窗口,并对批次中的每个窗口进行AI预测。该函数每1,000个单词消耗1个积分。

文本 = "那只敏捷的棕色狐狸跳过那只懒惰的狗。"
结果 = pangram_client.预测滑动窗口(文本)
score = result["ai_likelihood"]
分数的文本表示 = result["预测"]
打印(f"我们预测该文本 {文本}{分数的文本表示},其AI似然值为 {score}。") 

结果是一个包含以下字段的字典:

  • 文本: [字符串] 输入文本
  • ai_likelihood: [float] 0 到 1 之间的一个数值,数值越接近 1,表明对该文本是 AI 生成的判断越有把握
  • 预测: [字符串] 描述文本中包含多少AI生成的内容的文字说明
  • 简短预测: [字符串] "人类"、"混血" 或 "AI"
  • fraction_ai_content: [float] 一个介于0和1之间的浮点数,其中1表示文本中全程存在AI。
  • windows: [list] 该文本的单条预测结果列表。

Pangram 的仪表盘可以原生显示滑动窗口查询的结果。使用该函数 使用仪表盘链接进行预测 运行滑动窗口查询,并获取仪表板链接。就像 预测滑动窗口,此功能的计费标准为每1,000字输入文本收取1个积分。

文本 = "那只敏捷的棕色狐狸跳过了那只懒惰的狗。"
结果 = pangram_client.预测滑动窗口(文本)
score = result["ai_likelihood"]
分数的文本表示 = result["预测"]
仪表盘链接 = 结果["dashboard_link"]
打印(f"我们预测文本 {文本}{分数的文本表示},其AI似然值为 {score}。您可以在 {仪表盘链接}") 

结果是一个字典,其字段与 预测滑动窗口 结果,只不过它还包含一个额外的字段:

  • 仪表盘链接: [字符串] 指向包含完整滑动窗口结果页面的链接。

其他方法:HTTP 请求

所有这些功能均可通过 HTTP 访问。有关如何向 Pangram API 发送 HTTP 请求的完整文档,请参阅 Pangram的推理 API 文档

添加重试

有时,向 Pangram 发出的请求可能会超时或失败。为确保您的程序不会崩溃,我们强烈建议添加重试机制。Tenacity 就是这样一个库,我们推荐您使用它。

以下是一个使用 Tenacity 重试 Pangram 调用的示例:

来自 坚韧 导入 retry, stop_after_attempt, 随机指数等待, retry_if_exception_type

@retry(
    retry=retry_if_exception_type((超时错误, ConnectionError)),
    停止=stop_after_attempt(5),
    等待=wait_random_exponential(乘数=0.5, max=10),
    加注=True,
)
def predict(文本):
    返回 pangram_client.predict(文本)

综合来看

以下是一个完整的示例,演示如何使用 Pangram SDK 检测任意文本中的 AI 内容,并获取包含重试功能的仪表盘链接。

来自 全字母句 导入 Pangram
from tenacity import retry, stop_after_attempt, 随机指数等待, retry_if_exception_type

api_key = ""
pangram_client = Pangram(api_key=api_key)

@retry(
    retry=retry_if_exception_type((超时错误, ConnectionError)),
    停止=stop_after_attempt(5),
    等待=wait_random_exponential(乘数=0.5, max=10),
    加注=True,
)
def predict_ai_with_link(文本)
    结果 = pangram_client.预测滑动窗口(文本)
    返回 result

文本 = "那只敏捷的棕色狐狸跳过那只懒惰的狗。"
结果 = predict_ai_with_link(文本)
score = result["ai_likelihood"]
分数的文本表示 = result["预测"]
仪表盘链接 = 结果["dashboard_link"]
打印(f"我们预测文本 {文本}{分数的文本表示},其AI似然值为 {score}。您可以在 {仪表盘链接}")

结束

希望通过本指南,您已经能够使用Pangram 的 AI 检测 Python 包,通过编程方式检测 AI 生成的内容。您用它做出了什么酷炫的作品吗?请在LinkedInX上标记我们,分享您的作品!


马克斯·斯佩罗
马克斯·斯佩罗首席执行官、联合创始人

马克斯是一位经验丰富的机器学习工程师。他最近在Nuro从事自动驾驶汽车相关工作,负责领导该公司的主动学习项目。此前,他在谷歌、Two Sigma和Yelp拥有丰富的成功部署机器学习产品的经验。

马克斯拥有斯坦福大学理论计算机科学学士学位和人工智能硕士学位。除了对游戏开发的热情外,他还是《万智牌》Cube社区的活跃成员。

查看 Max Spero 的更多内容