NsfwLocal開発者向けドキュメント
APIドキュメント
標準的なOpenAI互換ツールを使用して、数分でフィルタリングなしLLM APIを開始しましょう。テキストリクエストを送信し、直接的でフィルタリングされていないレスポンスを受け取ります。
最初のリクエストのクイックスタート
クライアントをベースURLにポイントし、生成されたAPIキーで認証することで、すぐにテキストの生成を開始できます。インターフェースは標準的な規約に従っているため、新しいプロトコルを学ぶことなく既存のSDKを使用できます。プロンプトを送信する uncensored モデルと法的な成人用途のために一般的なコンテンツフィルタを適用しないテキスト応答を受け取ります。
ベースURLとキーを設定
環境変数を設定して、リクエストを当社の特定のエンドポイントにルーティングしてください。プレースホルダーキーをサインアップ時に生成されたキーに置き換えてください。これにより、後続のすべての呼び出しが正しい非制限モデルインスタンスを使用することが保証されます。
- ベースURL:
https://api.nsfwlocalllm.com/v1 - Authヘッダー:
Authorization: Bearer YOUR_API_KEY
modelsエンドポイントを確認することで、キーが機能することを確認できます。有効なキーは、利用可能なモデルIDを即座に返します。
チャット完了リクエストを送信します
テキスト生成用の標準的なチャット完了ペイロードを送信します。システムは入力を変換し、モデルの応答を返します。 uncensored フィルタリングされていないインスタンスにアクセスするにはモデル ID を使用します。
レスポンスには生成されたテキストとトークン使用統計が含まれます。これをアプリケーションロジックに直接解析できます。
curl https://api.nsfwlocalllm.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Send me the server uptime stats"}]
}'成功または失敗のケースを処理するための標準的なHTTPステータスコードを確認してください。
リアルタイム出力のためにストリーミングを有効にします
ユーザーの知覚されるレイテンシを削減するためにストリーミングレスポンスを行います。ストリーミングを有効にするには設定 stream: true リクエストボディに記述します。APIは部分的なトークンを含む一連のServer-Sent Events (SSE)を返します。
クライアント側でこれらのトークンを集約して完全なメッセージを再構築します。このアプローチは、即時フィードバックが重要なチャットインターフェースに最適です。最終のSSEイベントには、リクエストの合計トークン使用量が含まれます。
from openai import OpenAI
client = OpenAI(base_url="https://api.nsfwlocalllm.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)スムーズなユーザーエクスペリエンスを確保するために接続エラーを適切に処理します。
構造化データにはJSONモードを使用してください
プログラムでの利用のために有効なJSONを出力するようモデルに強制します。設定 response_format に {"type": "json_object"} リクエスト内。これにより解析エラーが削減され、一貫したデータ構造が保証されます。
構造化されたプロンプトの生成、エンティティの抽出、または動的コンテンツの構築には、これを使用してください。モデルはシステム指示で提供された形式制約に従います。これは他のサービスとの信頼性の高い統合に不可欠です。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nsfwlocalllm.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);エッジケースをキャッチするために、クライアント側で出力JSONを検証します。
関数呼び出しを実装します
モデルの機能を拡張するためのツールを定義します。 tools リクエストに関数定義を含む配列。モデルは文脈に基づいてこれらの関数を呼び出すことができます。
LLMがデータの取得やアクションの実行をいつ行うかを判断する複雑なワークフローを可能にします。応答には関数の引数が含まれるため、クライアント側でそれらを実行し、結果をモデルに戻してさらに推論を行ってください。
設定 tool_choice に auto 柔軟な意思決定のため。この機能は外部データアクセスを必要とする高度なロールプレイシナリオをサポートします。
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)よくある質問
コンテキストウィンドウのサイズはいくらですか?
コンテキストウィンドウは100,000トークンで、プロンプトと補完を合わせてカバーします。これにより、長い会話や大規模なドキュメントの処理が可能で、コンテキストの喪失を防げます。
クレジットが不足した場合どうなりますか?
プリペイド残高が不足している場合、402ステータスコードでリクエストが失敗します。暗号通貨でチャージしてサービスをすぐに再開できます。レート制限などのエラーはクレジットを消費しません。
レートリミットを処理するにはどうすればよいですか?
APIはキーあたり1分あたり300リクエストの制限を適用します。これを超えると429ステータスコードが発生します。これらの遅延を効果的に処理するために、クライアントで指数関数的バックオフを実装してください。
APIキーを瞬時に取得
サインアップし、トークンをコピーして、ベースURLを更新します。セットアップ完了です。
APIキーを取得