主要ポイント
- 単一のベースURLとモデルID(uncensored)は、すべてのOpenAI SDKまたはクライアントと互換性があります。
- ストリーミング、関数呼び出し、JSONモードに対応しており、100,000トークンのコンテキストウィンドウがあります。
- フルキーは8つの同時リクエストと1分あたり300リクエストを許可するため、混雑したアプリには小さなキューを計画してください。
- 課金は前払いクレジットから、入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50で行われ、プロンプトはトレーニングに使用されません。
単一エンドポイントから得られるもの
ユーザーは、法的な成人用途でコンテンツ拒否なしで回答するモデルを求めているため、uncensored llm hubを検索しますが、GPUを運用したくありません。このサービスは単純なHTTPS APIです。OpenAIクライアントをhttps://api.uncensoredllmhub.com/v1に指し、モデルIDuncensoredを送信し、Authorization: Bearer YOUR_KEYで認証します。会話にはPOST /v1/chat/completions、一覧表示にはGET /v1/modelsの2つのメソッドがあります。
そのエンドポイントの背後にあるものを明確にすることが役立ちます。これは独立したプロバイダが実行し、コンテンツ拒否をスキップするように調整された単一のオープンウェイトモデルです。大手ベンダーの公式APIではなく、モデル間で選択するルーターでもありません。テキストのみを処理し、画像、音声、動画、埋め込み、ファインチューニングはありません。例外のない1つの厳格なルールがあります:未成年者を含む性的コンテンツは禁止です。
この狭いスコープがポイントです。単一の安定したエンドポイントは構築が容易です。以下のセクションでは、小さなチャットバックエンド、エージェントループ、設計に必要な制限を示します。
ステップ1:既存のクライアントを接続する
APIはOpenAI形式に従うため、新しいクライアントコードを記述することはほとんどありません。SDKやツールを開き、Base URLとキーを変更し、モデルをuncensoredに設定してください。まずAPI keyページ(Google、またはメールとパスワード)でサインアップし、ワンクリックで$0.50の無料トライアルクレジットを受け取ってください。トライアルにはカード不要、7日間有効、1人1回限りです。
Pythonでの最小限のリクエスト:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant for a writing tool."},
{"role": "user", "content": "Give me three opening lines for a mystery set on a ferry."},
],
temperature=0.9,
top_p=0.95,
)
print(resp.choices[0].message.content)
temperature、top_p、stop、seedなどのサンプリング設定や、頻度ペナルティと存在ペナルティはモデルに渡されるため、他のプロバイダでよく知っているノブは同じように動作します。カスタムOpenAI互換エンドポイントを受け入れるツール(SillyTavernやOpen WebUIなど)でも同じ呼び出しが機能します:ベースURLを貼り付け、キーを追加し、モデルIDを手動で入力します。
ステップ2:ストリーミングでチャットインターフェースに回答を流し込む
ユーザーが完全な回答が届くまで空白のボックスを見つめていると、チャットアプリは遅く感じられます。ストリーミングがそれを修正します。stream: trueを設定すると、APIはサーバー送信イベントとして回答を送信し、ストリームの最後に使用量が報告されます。到着するトークンを転送するNodeバージョンは次の通りです:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.uncensoredllmhub.com/v1",
apiKey: process.env.API_KEY,
});
export async function streamReply(history, onToken, signal) {
const stream = await client.chat.completions.create(
{ model: "uncensored", messages: history, stream: true },
{ signal }
);
let text = "";
for await (const chunk of stream) {
const piece = chunk.choices[0]?.delta?.content ?? "";
if (piece) {
text += piece;
onToken(piece);
}
}
return text;
}
2つの習慣が後のトラブルを防ぎます。まず、常に中止シグナルを渡し、ユーザーがタブを閉じたときや停止を押したときにそれをキャンセルします。ストリーミングされたリクエストはストリームが終了するまで同時実行スロットを占有するため、放棄されたストリームは割り当てを消費します。第二に、アセンブルした完全なテキストを保持してください。これは次のターンでアシスタントメッセージとして履歴に追加するためです。
ストリーミング中にフロントエンドで曖昧なエラーが表示される場合は、ストリーミング障害の診断に関する当社のノートで、ベースURLの誤り、イベントをバッファリングするプロキシ、2つの429コードなどの一般的な原因を確認してください。
ステップ3:長いコンテキストを意図的に使用する
コンテキストウィンドウは100,000トークンで、プロンプトと補完で共有されます。ストーリー作成ツール、キャラクターチャット、ドキュメントアシスタントの場合、それは長い履歴、大きなシステムプロンプト、参照資料を同時に含める余地があります。max_tokensを設定する必要はありません。補完は残っているものを何でも使用できます。
これらの価格では、長いコンテキストを試すのは安価です。入力ウィンドウ全体を入力で埋めると、100,000入力トークンで0.1 × $0.15 = $0.015かかります。2,000トークンの回答(0.002 × $0.50 = $0.001)を追加すると、ほぼ満杯の呼び出しは$0.016かかります。それでもウィンドウを管理したいと思うでしょう。3つの理由があります:レイテンシはプロンプトサイズとともに増加し、各ターンは履歴を再送信するためコストがセッション全体で累積し、非常に長い履歴は上部の指示を希釈します。
シンプルなポリシーがうまく機能します:
- システムプロンプトと固定された参照テキストを開始部に保持します。
- 最新のターンはそのまま保持してください。
- 履歴が選択した閾値(例えば60,000トークン)を超えた場合、モデルに最も古い部分を短いノートに要約させ、それらのターンと置き換えてください。
- 次のリクエストのサイズを見積もるのではなく、各レスポンスから
usage.prompt_tokensを読み取って、次のリクエストのサイズを把握してください。
ステップ4:エージェント向けのツールと構造化出力
エージェントにはモデルから2つのものが必要です:関数を呼び出す方法と、解析可能な出力です。両方がサポートされています。ツール呼び出しは標準のtoolsとtool_choiceパラメータを使用し、ツール呼び出しをストリーミングでき、結果はrole: "tool"メッセージとして戻ります。1回のラウンドトリップは次のようになります:
import json
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
tools = [{
"type": "function",
"function": {
"name": "lookup_order",
"description": "Find an order by its number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
},
},
}]
messages = [{"role": "user", "content": "Where is order A-1042?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
msg = first.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
args = json.loads(call.function.arguments)
result = {"order_id": args["order_id"], "status": "shipped"} # your real lookup goes here
messages.append(msg)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
副作用のある何かを実行する前に、常に引数を検証してください。モデルは不適切または予期しない値を生成する可能性があり、あなたのコードが最後の防御ラインです。
ツールなしのプレーンな構造化出力には、response_formatを{"type": "json_object"}に設定してJSONモードを使用します。プロンプトで必要な形状を説明し、返信をtryブロック内で解析して、エラー時にはクラッシュではなくリトライを行うようにしてください。
curl https://api.uncensoredllmhub.com/v1/chat/completions -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Reply with JSON: {"title": string, "tags": [string]}"},
{"role": "user", "content": "Describe a noir story set in a rainy port city."}
]
}'
設計時に考慮すべき制限
フルキーは8つの同時リクエストと1分あたり300リクエストを許可します。トライアルキーは2と60を許可します。ボディは最大8 MBまで可能です。各レスポンスにはX-Request-Id、X-Balance-USD、X-RateLimit-Limit-Requests、X-RateLimit-Limit-Concurrencyが含まれており、ログ記録に役立ちます。
制限に達すると、APIはHTTP 429を返します。コードは、1分あたりのリクエストが多すぎる場合はrate_limited、同時に多すぎる場合はconcurrencyです。一時的な過負荷も429を返し、Retry-After: 5を返します。マルチユーザーアプリの場合、APIの前に小さなキューを配置します:同時実行制限より小さいセマフォと、Retry-Afterを尊重するリトライ。並列ツール呼び出しにファンアウトするエージェントの場合、ファンアウトを同じ数に制限します。
完全なパラメータリストとエラー形式はAPIドキュメントにあります。
コスト、チャージ、データ処理
価格は入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50で、前払いクレジットから引かれます。サブスクリプションはなく、クレジットは期限切れにならず、失敗または拒否されたリクエストには課金されません。1,500入力トークンと500出力トークンのチャットターンは0.0015 × $0.15 + 0.0005 × $0.50 = $0.000225 + $0.00025 = $0.000475かかり、$20のクレジットで約42,000回のそのようなターンがカバーされます。
$20から$500までの任意の整数額でチャージできます。ボーナスは$50から+5%、$100から+10%、$200から+15%です。カード(Visa、Mastercard、Apple Pay、Google Pay)または暗号資産(TRC20上のUSDT、Base上のUSDC)でお支払いください。現在の表はpricingページをご覧ください。
データについて:プロンプトはトレーニングに使用されません。完全な文章はプライバシーポリシーをお読みください。モデルを使用して構築する内容について責任を負い、サービスは法的な成人用途のみに適しています。
