前提条件と設定
当社のopenai api proxyを利用するには、お使いの言語用の公式SDKと有効なAPIキーが必要です。ダッシュボードでサインアップすると、すぐにキーを受け取ることができます。トライアルにはクレジットカードは不要です。環境変数を2つ設定してください。OPENAI_API_KEYにあなたのキーを、OPENAI_BASE_URLに当社のエンドポイントを指定します。この方法により、既存のコードを変更せずに動作させることができ、アプリケーションに対して透過的なllm proxyとして機能します。
当社のサービスは標準のuncensoredモデルIDを使用しています。当社が単一モデルのプロキシであるため、複雑なルーティングロジックを管理する必要はありません。ベースURLはhttps://api.openaiapiproxy.com/v1です。設定が完了すると、クライアントは当社サービスを他のOpenAI互換エンドポイントと同じように扱います。
最初のリクエストとPythonセットアップ
まず、シンプルなチャット完了リクエストを送信します。これにより、認証と接続を確認できます。以下の例では、無検閲の動作を確認するために基本的なテキストプロンプトを使用しています。プレースホルダーの値を実際の資格情報に置き換えてください。
Python開発者向けには、公式のopenaiライブラリが複雑な処理を肩代わりします。クライアントを当社のベースURLにポイントするだけです。以下のコードは標準的な同期リクエストの例を示しています。これはプロンプトを送信し、モデルのレスポンスを返します。これは統合を確認する最速の方法です。
クライアントインスタンスを作成する前に、環境変数が読み込まれていることを確認してください。SDKはリクエストとレスポンスに標準的なOpenAI形式を自動的に使用します。
Node.js統合
Node.jsで構築する場合、プロセスはPythonと同じです。@ai-sdk/openaiまたは公式のopenainpmパッケージを使用してください。クライアントを当社のベースURLにポイントし、APIキーを提供してください。SDKがJSONシリアライゼーションとHTTPリクエストをあなたのために処理します。
このセットアップは、すべてのOpenAI互換クライアントライブラリで動作します。既存のプロンプトテンプレートとメッセージ構造を再利用できます。レスポンス形式は標準的なOpenAIスキーマに一致するため、必要に応じて後でプロバイダー間で簡単に切り替えることができます。
エラーを適切に処理することを忘れないでください。ネットワークの問題や無効なキーは標準的なHTTPエラーコードを返します。詳細なエラー処理については、特定のSDKバージョンのドキュメントを確認してください。
ストリーミングレスポンス
リアルタイムアプリケーションでは、ストリーミングを有効にしてトークンの生成と同時にトークンを受け取ります。これによりエンドユーザーの知覚されるレイテンシが削減されます。SDKはネイティブにServer-Sent Events (SSE)をサポートしています。レスポンスストリームを順に処理して、各トークンを処理します。
ストリーミングは、ユーザーが即時フィードバックを期待するチャットインターフェースに最適です。モデルはテキストを継続的に生成し、各トークンをUIに追加できます。これにより、完全なレスポンスを待つよりも、より滑らかなユーザーエクスペリエンスが提供されます。
ストリーミングエンドポイントは同じベースURLと認証を使用します。リクエストパラメータでstreamフラグを有効にするだけです。SDKが接続のライフサイクルとエラーリカバリを処理します。
レート制限と制約
当社のAPIは信頼性を確保するために厳格な制限を適用しています。APIキーごとに1分あたり300件のリクエストが許可されます。最大リクエストボディサイズは8 MBです。レート制限を超えた場合、429ステータスコードが返されます。これらのエラーを適切に処理するために、クライアントで指数バックオフを実装してください。
認証エラーは、キーが無効または取り消された場合に401ステータスを返します。支払い関連の問題は、前払いクレジットが尽きた場合に402ステータスを返します。USDTまたはUSDCによる暗号通貨でのチャージは即座に利用可能です。前払いクレジットは期限切れにならないため、使い切りで支払うことができます。
コンテキストウィンドウは、入力と出力を合わせて100,000トークンです。切り捨てを避けるためにプロンプトを適切に計画してください。モデルは制限に達すると生成を停止します。
モデルとコンテンツポリシー
利用可能な唯一のモデルはuncensoredで、法的な成人向けコンテンツおよびクリエイティブライティング向けに最適化されたオープンウェイトモデルです。このモデルは、デフォルトで論争の的となるトピックや露骨なトピックを拒否しません。これは、標準的なモデルが制限が強すぎる可能性があるユースケースに理想的です。
エンベディング、画像生成、音声処理は提供していません。これはテキストのみのAPIです。モデルはGPT、Claude、またはその他のベンダーのモデルではありません。当社のインフラストラクチャに特化してチューニングされています。
未成年者を含む性的コンテンツは常にブロックされます。その他の法的なコンテンツは許可されます。プロンプトはトレーニングに使用しません。データはプライベートであり、リクエストのレスポンスを生成するためにのみ使用されます。
cURL
curl https://api.openaiapiproxy.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."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.openaiapiproxy.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)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openaiapiproxy.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);ストリーミング
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)