製品の更新情報

PythonでAIを検出する方法

2025年8月11日

このチュートリアルでは、Pangram's を使ってテキストにAI生成コンテンツが含まれていないかを確認する方法を学びます。 pangram-sdk Pythonパッケージ。

その pangram-sdk このパッケージにより、開発者は PangramのAIコンテンツ検出API 短い文章や長文の文書について、その内容がAIによって生成されたものかどうかを確認するため。

このチュートリアルでは、APIキーの取得、PangramのPython SDKの使用方法、およびPangramのAPIエンドポイントへの直接的なHTTPリクエストの実行について解説します。詳細や使用例については、PangramのAPIドキュメント(完全版)をご参照ください。

セットアップ

まず、Pangramのアカウントが必要です。APIキーを紐付けたいメールアドレスを使用してアカウントを作成してください。アカウント作成後、設定には以下の2つの方法があります:開発者プランに申し込むか、研究者用APIキーを取得するかのいずれかです。

Pangramの「Developer Plan」は月額100ドルからご利用いただけます。このプランには、毎月最大2000 APIクレジットが含まれています。アカウントのロックを解除し、従量課金制を有効にするには、弊社までお問い合わせください。「Developer Plan」にご登録の上、ご利用を開始してください。ご登録後、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クライアントは、環境変数からAPIキーを自動的に読み取ります。

出典: パングラム import Pangram
pangram_client = パングラム()

APIキーを直接渡すこともできます:

出典: パングラム インポート Pangram

my_api_key = ''  # ここにAPIキーを入力してください。
pangram_client = Pangram(api_key=my_api_key)

標準的なリクエストを送信する

pangram_client予測する この関数は、PangramのAPIに対して1回のリクエストを行い、結果を返します。デフォルトでは、最初の約400語のみが対象となります。1回のリクエストにつき、クレジットが1つ消費されます。

テキスト = "素早い茶色のキツネが、のろまな犬を飛び越える。"
結果 = pangram_client.予測(text)
スコア = result["ai_likelihood"]
スコアのテキスト表現 = result["prediction"]
print(f"テキスト {text}{スコアのテキスト表現}であり、AIによる尤度は {score}。」) 

一括リクエストを送信する

次の predict_batch 大規模なデータセットを高速に処理するため、クエリを一括で送信する機能です。1回のリクエストにつき、バッチ内の各項目に対して1クレジットが消費されます。返される結果は、単一のクエリと同じ形式の配列となります。 予測する 関数。

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.predict_sliding_window(text)
score = result["ai_likelihood"]
スコアのテキスト表現 = result["prediction"]
print(f"テキスト {text}{スコアのテキスト表現}であり、AIによる尤度は {score}。」) 

その結果、以下のフィールドを持つ辞書が得られます:

  • テキスト: [文字列] 入力テキスト
  • ai_尤度: [float] 0から1までの数値。1に近いほど、そのテキストがAIによるものであるという確信度が高いことを示す
  • 予測: [文字列] テキストに含まれるAI生成コンテンツの量に関する説明文
  • 短期予測: [文字列] 「人間」、「混血」、または「AI」
  • fraction_ai_content: [float] 0 から 1 までの浮動小数点数。1 は、テキスト全体に AI が含まれていることを示します。
  • Windows: [list] テキストに対する個々の予測結果のリスト。

Pangramのダッシュボードでは、スライディングウィンドウリクエストの結果をネイティブに表示できます。関数を使用してください ダッシュボードリンク付きで予測 スライディングウィンドウクエリを実行し、ダッシュボードへのリンクも受け取るには。ちょうど スライディングウィンドウ予測なお、この機能は入力テキスト1,000語につき1クレジットが課金されます。

テキスト = "素早い茶色のキツネが、のろまな犬を飛び越える。"
結果 = pangram_client.predict_sliding_window(text)
score = result["ai_likelihood"]
スコアのテキスト表現 = result["prediction"]
ダッシュボードリンク = 結果["dashboard_link"]
print(f"テキスト {text}{スコアのテキスト表現}であり、AIによる尤度は {score}となります。完全な結果は {ダッシュボードリンク}") 

その結果、次のようなフィールドを持つ辞書が得られます。 スライディングウィンドウ予測 結果ですが、これにはさらに1つのフィールドが含まれています:

  • ダッシュボードへのリンク: [文字列] スライディングウィンドウの全結果が掲載されているページへのリンク。

その他の方法:HTTPリクエスト

これらの機能はすべて、HTTP経由でも利用可能です。Pangram APIへのHTTPリクエストの送信方法に関する詳細なドキュメントについては、PangramのInference APIドキュメントをご覧ください。

再試行の追加

Pangramへのリクエストがタイムアウトしたり、失敗したりすることがあります。プログラムがクラッシュしないようにするため、リトライ処理を実装することを強くお勧めします。そのためのライブラリとして、Tenacityをお勧めします。

以下は、Tenacity を使用して Pangram の呼び出しを再試行する例です:

出典: 粘り強さ import retry, stop_after_attempt, ランダム指数関数的な待機, 例外タイプが指定された場合の再試行

@retry(
    retry=例外タイプ指定による再試行((TimeoutError, ConnectionError)),
    stop=stop_after_attempt(5),
    wait=wait_random_exponential(乗数=0.5, max=10),
    reraise=True,
)
def predict(text):
    return pangram_client.predict(text)

すべてをまとめると

以下は、Pangram SDK を使用して任意のテキストのAI検出を行い、再試行機能付きのダッシュボードリンクを取得する完全な例です。

出典: パングラム インポート Pangram
from tenacity import retry, stop_after_attempt, ランダム指数関数的な待機, 例外タイプ指定再試行

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

@retry(
    retry=retry_if_exception_type((TimeoutError, ConnectionError)),
    stop=stop_after_attempt(5),
    wait=wait_random_exponential(乗数=0.5, max=10),
    reraise=True,
)
def predict_ai_with_link(text)
    result = pangram_client.predict_sliding_window(text)
    return result

text = "The quick brown fox jumps over the lazy dog."
result = predict_ai_with_link(text)
スコア = result["ai_likelihood"]
スコアのテキスト表現 = result["prediction"]
ダッシュボードリンク = 結果["dashboard_link"]
print(f"テキスト {text}{スコアのテキスト表現}であり、AIによる尤度は {score}となります。完全な結果は {ダッシュボードリンク}")

締めくくり

このガイドを参考に、PangramのAI検出用Pythonパッケージを使って、プログラムでAI生成コンテンツを検出できたことを願っています。何か面白いものを作れましたか?ぜひLinkedInやXで私たちにタグ付けして、作品を紹介してください!


マックス・スペロ
マックス・スペロCEO、共同創業者

マックスは経験豊富な機械学習エンジニアです。直近ではNuroで自動運転車の開発に携わり、同社のアクティブラーニングの取り組みを主導しました。Google、Two Sigma、Yelpでは、長年にわたり機械学習製品の導入を成功させてきました。

マックスはスタンフォード大学で理論計算機科学の学士号と人工知能の修士号を取得しています。ものづくりへの情熱に加え、彼は『マジック:ザ・ギャザリング』のキューブ・コミュニティでも活発に活動しています。

マックス・スペロのその他の記事

関連記事

「パングラム 3.3」のご紹介!
製品の更新情報

「パングラム 3.3」のご紹介!

2026年5月13日
AI識別機能の発表:PangramはさまざまなLLMを区別することができます
製品の更新情報

AI識別機能の発表:PangramはさまざまなLLMを区別することができます

2025年2月11日
PangramはMetaのLlama 4を検出しますか?
製品の更新情報

PangramはMetaのLlama 4を検出しますか?

2025年4月6日
タグとグループのご紹介
製品の更新情報

タグとグループのご紹介

2025年8月8日
パングラムは「クロード・ソネット第5篇」を検出できるか?
製品の更新情報

パングラムは「クロード・ソネット第5篇」を検出できるか?

2026年6月30日
新しい検索結果ページのご紹介
製品の更新情報

新しい検索結果ページのご紹介

2025年10月9日
    PythonでAIを検出する方法 | Pangram Labs