重要ポイント
- 無検閲 API は標準的な OpenAI 構文に従いますが、埋め込みや複数モデルルーティングなどの高度な機能がないため、クライアントは単一エンドポイント用に構成する必要があります。
- ストリーミングレスポンスには特定の SSE 処理が必要です。SDK が JSON パースをデフォルトに設定している場合、大規模な無検閲出力でパースエラーが発生します。
- 関数呼び出しは機能しますが、インストラクション調整済みモデルよりも頻繁に引数を生成するため、厳格な JSON スキーマ準拠が必要です。
- 毎分 300 リクエストと 8MB のボディサイズの制限があるため、大量のアプリケーションでは慎重なバッチ処理戦略が必要です。
無検閲 AI API エンドポイントの理解
無検閲 AI API を統合する際、最初のミスは標準的な商用モデルと同じように動作すると想定することです。当社のエンドポイントはホストされた OpenAI 互換のチャット補完サービスです。単一の専用無検閲大規模言語モデルを提供します。つまり、モデルルーティングやバージョン管理を管理する必要はありません。POST /v1/chat/completions にリクエストを送信し、テキストを受け取ります。
画像、動画、複数のベンダーをバンドルする集約サービスとは異なり、このサービスは高性能で制限のないテキスト生成に特化しています。モデルはオープンウェイトで、法的な成人用途に対してコンテンツ拒否なしで回答するように調整されています。ただし、GPT、Claude、Gemini、またはその他のベンダーのモデルではありません。当社の GPU サーバーで動作します。
Base URL は https://api.uncensoredgptapi.com/v1 です。これを使用するには、既存の OpenAI SDK または OpenAI 互換クライアントの base_url を変更し、API キーを入力します。送信する必要があるモデル ID は単に "uncensored" です。このシンプルさは統合時間を短縮しますが、フォールバックを期待せずに単一モデルエンドポイントを処理できるクライアントであることを確認する必要があります。
一般的な認証エラー
認証エラーは通常、ヘッダーの設定ミスまたは期限切れのキーに起因します。API は標準的な Bearer トークン認証を使用します。すべてのリクエストに Authorization ヘッダーに API キーを含める必要があります。
一般的なミスとして、キーの有効性を確認せずにキャッシュすることがあります。キーを再生成すると、古いキーは直ちに無効になります。新しいキーを使用するようにクライアント設定を更新する必要があります。401 Unauthorized エラーが発生した場合は、次の 2 つを確認してください。まず、キーが先頭または末尾の空白なしで正しくコピーされていることを確認します。次に、正しい Base URL を使用していることを確認します。ドメインまたはパスのわずかな逸脱でも認証失敗になります。
もう一つの頻繁な問題は、間違ったモデル ID を使用することです。エンドポイントは "uncensored" を期待します。"gpt-4" や他の標準的なモデル ID を送信すると、エンドポイントはリクエストを拒否するか、1 つのモデルのみを提供するためエラーを返す可能性があります。リクエストペイロードの model フィールドを必ず確認してください。
curl https://api.uncensoredgptapi.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."}]
}'
ストリーミングレスポンスの適切な処理
Server-Sent Events (SSE) によるストリーミングレスポンスはサポートされていますが、同期 JSON レスポンスに慣れた開発者によって誤って処理されることがよくあります。リクエストで "stream": true を設定すると、API は単一の完全な JSON レスポンスではなく、部分的な JSON オブジェクトのストリームを返します。
クライアントがレスポンス全体を一度に JSON として解析しようとすると失敗します。ストリームを 1 行ずつ読み取る必要があります。各行は data: で始まり、部分的な JSON オブジェクトを含みます。最終行は data: [DONE] です。コードはこれらのチャンクを累積して最終テキストを再構築する必要があります。
一部の SDK はこれを自動的に処理しますが、カスタム実装では明示的な SSE パースが必要です。クライアントバッファがタイムアウトせずに大規模な出力を処理できることを確認してください。無検閲モデルは長いレスポンスを生成できるため、ストリーミングはメモリ使用量の管理に役立ちます。接続が切断される場合は、再試行ロジックに指数バックオフを実装することを検討してください。
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 スキーマを正確にしてください。モデルは引数を埋めようとしますが、必須フィールドを省略したり、間違った型を提供したりする場合があります。
関数を実行する前に、常にツール呼び出し引数を検証してください。モデルが引数に対して無効な JSON を返す場合は、エラーを適切に処理してください。出力が完全に構造化されていると想定しないでください。引数をクリーンアップするために再試行メカニズムまたは後処理ステップを実装する必要がある場合があります。
さらに、プロンプトが複雑な場合、無検閲モデルがツール定義を無視する可能性があることに注意してください。問題が発生した場合は、ツールの説明を簡素化し、システムプロンプトで適切な場合にツールを使用するようモデルに明確に指示してください。いくつかのサンプル入力で動作を確認してください。
コンテキストウィンドウの制限(100k トークン)
無検閲 API は、プロンプトと補完を合わせた 100,000 トークンのコンテキストウィンドウをサポートします。これは多くの標準モデルよりも大幅に大きく、広範な会話や大規模なドキュメント処理を可能にします。ただし、無限ではありません。入力がこの制限を超えると、API はエラーを返します。
この制限に達しないように、トークン使用量を監視してください。ほとんどの SDK にはトークンをカウントするユーティリティがあります。会話履歴の累積トークンを追跡してください。大規模なドキュメントを処理する場合は、それらをチャンク分割するか、会話の以前の部分を要約してコンテキストスペースを確保してください。
コンテキストウィンドウにはmessages配列内のすべてのメッセージが含まれることを覚えておいてください。各メッセージは合計に寄与します。多くの小さなメッセージを送信する場合、オーバーヘッドが累積する可能性があります。不要なトークンを最小限に抑えるようプロンプト構造を最適化してください。例えば、一定のままのシステム指示を各ターンで繰り返さないようにしてください。
レート制限の解説(300 RPM)
API はキーごとに毎分 300 リクエストのレート制限を適用します。これはすべてのユーザーに公平な使用を保証するためのハード制限です。この制限を超えると、429 Too Many Requests エラーが発生します。クライアントは再試行戦略を実装してこれを処理する必要があります。
一般的なミスとして、バーストトラフィックを考慮しないことがあります。リクエストを連続して 300 回送信すると、平均レートが低くても制限に達する可能性があります。リクエストを 1 分間に均等に分散してください。大量のデータを処理する場合は、リクエストのバッチ処理またはキューを使用してフローを管理することを検討してください。
レート制限は API キーごとに適用されます。複数のサービスが同じキーを使用している場合、それらは制限を共有します。キャパシティを増やすには、新しいキーを生成できますが、アカウントごとにアクティブなキーは 1 つのみであることを注意してください。キーはいつでも再生成できますが、古いキーは無効になるため、すべてのクライアントを更新してください。
リクエストボディサイズの制限(8MB)
各リクエストボディは 8 MB に制限されます。この制限は、messages 配列やツール定義を含む JSON ペイロードに適用されます。リクエストがこのサイズを超えると、API は 413 Payload Too Large エラーで拒否します。
この制限は、大きなファイルを base64 エンコードデータとして送信する場合や、広範な会話履歴を含める場合に重要です。大規模なドキュメントを処理する場合は、テキストを圧縮するか、送信前に不要な空白を削除することを検討してください。ストリーミングを使用してメモリ使用量を減らすこともできますが、初期リクエストボディは 8 MB の制限内に収まる必要があります。
開発中にリクエストサイズを監視してください。このエラーに遭遇した場合は、プロンプト構造を確認し、冗長な情報を削除してください。例えば、すべてのメッセージにシステムプロンプト全体を含めている場合は、それを system ロールに 1 回移動して参照してください。
API キーの管理と再生成
各アカウントは 1 つの API キーに制限されます。このキーはサインアップ時に生成され、直ちに表示されます。ダッシュボードからいつでもキーを再生成できます。再生成すると、古いキーは直ちに無効になります。古いキーを使用するすべてのクライアントは、401 Unauthorized エラーを受け取ります。
これを効果的に管理するには、キーを再生成する前にすべてのクライアントを更新してください。キーを使用する複数のサービスやデバイスがある場合は、それらすべてを同時に更新してください。必要に応じて新しいキーを何度でも生成できますが、同時にアクティブなのは 1 つのみです。
API キーはメールアドレスとパスワードに紐付いています。キーを紛失した場合は再生成できます。再生成回数に制限はありません。ただし、頻繁な再生成はセキュリティ上の懸念を示す可能性があるため、必要な場合に使用してください。キーを安全に保管し、公開共有しないでください。
コンテンツフィルターのトラブルシューティング
無検閲モデルは、法的に許可された大人向け、フィクション、セキュリティ研究、または論争的なトピックを拒否しません。ただし、常に適用される1つの明確なコンテンツ制限があります:未成年者を含む性的コンテンツです。このコンテンツを含むリクエストはブロックされます。
予期せぬ拒否に遭遇した場合は、プロンプトに禁止コンテンツの微妙な指標がないか確認してください。モデルは制限のない用途向けに調整されていますが、基本的なセキュリティフィルターを適用する場合があります。エッジケースでテストする場合は、モデルの境界を理解するために動作をドキュメント化してください。
もう一つの一般的な問題はハルシネーションです。無検閲モデルは、説得力がありそうだが誤った情報を生成する場合があります。特に関数呼び出しやコード生成を使用する場合は、重要な出力を常に検証してください。モデルは場合によっては厳密な事実の正確さよりも流暢さを優先します。