なぜUncensored.chat APIを使うのか?
標準的なLLM APIは、合法的な大人向けコンテンツ、創作小説、または論争的なトピックを拒否する rigid なコンテンツフィルタを適用することがよくあります。無検閲チャットAPIはこれらのガードレールを除去し、ポリシー準拠ではなく関連性に基づいてモデルがプロンプトに回答できるようにします。これは、人工的な制約なしにモデルの本来の能力を必要とするアプリケーションにとって重要です。
当社のAPIは、この動作に特化して調整された単一のオープンウェイトモデルを提供します。ベンダー間のルーティングや複数のモデル選択肢は提供しません。1つの調整済みエンジンから一貫性があり予測可能な出力が得られるため、デバッグやパフォーマンスチューニングが簡素化されます。これは、変化するモデルの個性や隠れたフィルタリングレイヤーを扱う必要がないためです。
汎用プロバイダーとは異なり、当社は埋め込み、画像生成、音声処理をバンドルしていません。これによりAPIは軽量で高速に保たれます。マルチモーダル機能が必要な場合は、それらを別途統合し、このAPIをテキスト生成のみに使用してください。ここでは、100,000トークンのコンテキストウィンドウを持つ高品質で制限のないテキスト出力に焦点を当てています。
環境の設定
統合は、開発環境をベースURLにポイントするように設定することから始まります。これは標準的なOpenAI互換エンドポイントなので、公式のOpenAI SDKまたは互換クライアントライブラリを使用できます。必要なのはベースURLの変更とAPIキーの提供だけです。
ベースURLはhttps://api.nofilteraichat.com/v1です。リクエストに送信するモデルIDはuncensoredです。このモデルは当社のサーバー上で実行されており、GPTやClaude、その他のベンダーのモデルではありません。無検閲応答用に調整されたオープンウェイトモデルです。
リアルタイム出力を使用する場合は、環境がServer-Sent Events (SSE) を介したストリーミングをサポートしていることを確認してください。APIはtemperature、top_p、stop、seedなどの標準パラメータをサポートしています。また、response_formatを{"type": "json_object"}に設定することでJSONモードを有効にできます。
コンテキストウィンドウ:合計100,000トークン(プロンプト+補完)。個別の出力制限はなく、max_tokensが設定されていない場合、応答はウィンドウの最後まで実行されます。
APIキーによる認証
認証はAuthorizationヘッダーに渡されるAPIキーによって行われます。Googleで続行またはメールとパスワードを使用してAPIキーの取得ページでサインアップできます。電話番号は必要ありません。
アカウントを作成すると、1つの有効なAPIキーが取得できます。このキーは作成直後に表示されます。新しいキーを生成すると、古いキーは置き換えられます。1アカウントあたりの同時複数キーはサポートしていません。これによりキー管理が簡素化されますが、同じアカウントで異なる環境用に別のキーを持つことはできません。
このキーは、/v1/chat/completions エンドポイントへのリクエストを認可するために使用されます。エラーや拒否(未成年者との性的コンテンツに関するハード制限を除く)は、前払いクレジットを消費しません。クレジットは実際のトークン使用量に対してのみ課金されます。
プライバシー:プロンプトはトレーニングに使用されません。アカウントにはメールアドレスのみが必要です。
最初のリクエストの実行
最初のリクエストは、接続を確認するための単純なチャット補完であるべきです。POST /v1/chat/completionsエンドポイントをuncensoredモデルIDとともに使用してください。
基本リクエストの例:
curl https://api.nofilteraichat.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'このリクエストはプロンプトを送信し、テキスト応答を受信します。モデルは、法的な大人向けコンテンツに対してフィルタリングを行わずに回答します。特定のトーンやフォーマットを適用する必要がある場合は、system メッセージを使用して指示を設定してください。
APIにはキーあたり1分あたり300リクエストの制限があり、8つの同時リクエストが許可されています。これらの制限を超えると、レート制限エラーが発生します。リクエストボディのサイズは8 MBに制限されています。再試行に指数関数的バックオフを実装して、クライアントがこれらの制限を適切に処理するようにしてください。
ストリーミングレスポンスの実装
ストリーミングはServer-Sent Events (SSE) を介してサポートされています。これにより、トークンが生成されるたびに受信でき、長いレスポンスに対してより良いユーザーエクスペリエンスを提供できます。各チャンクにはレスポンスの部分的なデルタが含まれます。
重要:トークン使用統計(入力トークンと出力トークン)は、ストリームの最後のチャンクのみに含まれます。正確な使用データを取得するには、デルタを累積してから最終チャンクを処理する必要があります。
コードでのストリーミング処理の例:
from openai import OpenAI
client = OpenAI(base_url="https://api.nofilteraichat.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)このアプローチにより、トークン消費量を正確に追跡しながらリアルタイムでテキストを表示できます。ストリーミング中にエラーが発生すると、ストリームが途中で終了する場合があります。詳細については、最後のチャンクまたはエラーステータスを確認してください。
関数呼び出しの使用
関数呼び出しはtoolsおよびtool_choiceパラメータを介してサポートされています。これにより、モデルはアプリケーションが実行できる構造化データを出力できます。関数をtools配列に定義し、モデルは適切な場合にレスポンスにtool_callsフィールドを返します。
関数を呼び出すかどうかをモデルに判断させるにはtool_choiceを"auto"に設定するか、特定の関数IDを指定して呼び出しを強制してください。モデルは関数名と引数をJSON形式で返します。
構造の例:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nofilteraichat.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);クライアントがtool_calls配列を解析し、関数を実行することを確認してください。モデルは関数自体を実行するのではなく、呼び出し指示のみを生成します。これは標準的なOpenAI互換パターンなので、OpenAIとの関数呼び出しをサポートするライブラリはすべてここで機能するはずです。
JSONモードの使用
JSONモードは、モデルが厳密に有効なJSONのみを出力することを保証します。これは、APIレスポンスや設定ファイルなど、構造化データが必要なアプリケーションに役立ちます。リクエストでresponse_formatを{"type": "json_object"}に設定してください。
JSONモードが有効な場合、モデルは単一の有効なJSONオブジェクトを出力しようとします。出力が無効な場合、APIはエラーまたは不正なレスポンスを返す場合があります。常にクライアント側でJSONを検証してください。
例:
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)このモードは、決定論的な出力形式を必要とするエージェントやアプリケーションの構築に特に役立ちます。自由形式のテキストから構造化データを抽出するための後処理の必要性を減らします。JSONモードは、モデルの出力に対する追加の制約により、レイテンシーがわずかに増加する場合があります。
レート制限とエラーの管理
レート制限は、キーあたり1分あたり300リクエスト、キーあたり8つの同時リクエストで適用されます。リクエストボディは8 MBに制限されています。これらの制限を超えると、ステータスコード429が返されます。再試行の処理にクライアントで指数関数的バックオフを実装してください。
無効なパラメータやサーバーの問題などのエラーはクレジットを消費しません。法的な大人向けコンテンツの拒否もクレジットを消費しません。常に適用される唯一のハード制限は、未成年者との性的コンテンツの拒否であり、リクエストが処理された場合はトークンを消費します。
価格は透明です:入力トークン100万トークンあたり$0.15、出力トークン100万トークンあたり$0.50。クレジットは前払いで期限切れになりません。エラーは無料なので、コストを気にせずに実験できます。請求に関する問題が発生した場合は、サポートページで支援を受けてください。
