JA ▾

Qwen Abliterated API:GPU不要でホストモデルを呼び出し

ノートPCがケーブルを介してホストモデルサーバーにデータキューブを送信するイラスト

更新

すでに使っているOpenAI SDKでHTTP経由で無検閲チャットモデルを呼び出し、モデル重みのダウンロードやGPUレンタルをスキップできます。このガイドでは、セットアップ方法、動作するコード、正確なコストを示します。

主要ポイント

  • OpenAI SDKのベースURLを設定し、モデルを uncensored に設定します。
  • ストリーミング、ツール呼び出し、JSONモードは標準パラメータで動作します。
  • 制限:フルキーで同時8リクエスト、1分あたり300リクエスト。
  • トークン課金:入力1Mトークンあたり$0.15、出力1Mトークンあたり$0.50。

結論:ベースURLを変更する

qwen abliterated apiをお探しの場合、OpenAIプロトコルに対応するホスト型エンドポイントが実用的な方法です。クライアントコードを維持し、2つの値を変更するだけで、モデルを実行するサーバーにリクエストを送信できます。GGUFのダウンロード、量子化の選択、VRAMの予算は不要です。

命名に関する重要な注記:これは独立したサービスであり、公式のQwen APIではありません。ホストモデルはQwenのチェックポイント名ではなく、uncensoredとして指定されます。これは独立したプロバイダが実行し、法的な成人利用のためにコンテンツ拒否なしで回答するように調整された1つのオープンウェイトモデルです。特定のabliterated ファイルが必要な場合は、ローカルでそのファイルを実行してください。アプリ用の信頼できるチャットエンドポイントが必要な場合は、以下をお読みください。

設定内容
ベース URLhttps://api.qwenabliterated.top/v1
モデルuncensored
認証ヘッダーAuthorization: Bearer YOUR_API_KEY
エンドポイントPOST /v1/chat/completions、GET /v1/models
コンテキスト長100,000 トークン(プロンプトと補完を含む)

キーを取得する

Google、またはメールアドレスとパスワードでサインアップし、APIキーページを開きます。新規ユーザーはワンクリックで$0.50の無料トライアルクレジットを受け取ることができます(1人1回、有効期限7日、クレジットカード不要)。これは、以下のすべての例を複数回実行するのに十分な量です。

トライアルキーの制限はフルキーよりも低くなります:同時接続2リクエスト、1分あたり60リクエストに対し、フルキーでは8および300です。並列ワーカーでテストする場合はこれを念頭に置いてください。

キーをソース管理ではなく環境変数に保存します:

export QWENABL_KEY="paste-your-key-here"

Pythonでの最初のリクエスト

公式SDKをpip install openaiでインストールし、次に:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.qwenabliterated.top/v1",
    api_key=os.environ["QWENABL_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a blunt technical assistant."},
        {"role": "user", "content": "Explain what a KV cache is in three sentences."},
    ],
    temperature=0.7,
)

print(resp.choices[0].message.content)
print(resp.usage)

レスポンスには通常のusageブロックが含まれるため、プロンプトトークンと完了トークンをログに記録し、支出を自分で計算できます。ヘッダーにはサポート質問用のX-Request-Idと、ダッシュボードを開かずに残高クレジットを確認できるX-Balance-USDが含まれています。

なぜGGUFファイルではなくAPIを使用するのか

無検閲モデルへの通常のルートは、量子化ファイルを見つけてローカルランタイムで読み込み、ローカルサーバーに接続することです。これは機能し、実験にとっては学ぶための良い方法です。摩擦は、実験から他の人が使用するものへ移行する際に顕著になります。

まず、ハードウェアについて。短いコンテキストウィンドウではデスクトップのカードに収まるファイルも、長いコンテキストでは収まらない場合があります。これは、アテンションキャッシュがトークンごとに増大するためです。次に、同時実行数について。1つのローカルプロセスは1〜2チャットを快適に処理できますが、10ユーザーが同時にアクセスするとキューが発生します。最後に、可用性について。自宅のマシンはスリープ状態になったり、電源が切れたり、タイミング悪くドライバーのアップデートを受けたりします。ホストされたAPIはこれらの問題を他社の仕事に変え、使用したトークンの分だけのみ課金されます。

あなたが手放すのは、特定のチェックポイントを選択する自由と、バイトがネットワークから決して離れないという保証です。どちらがプロジェクトにとって重要かを判断してから選択してください。

Node.js と curl

Node SDKも同じ2つのオプションを取ります:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.qwenabliterated.top/v1",
  apiKey: process.env.QWENABL_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me five names for a fantasy tavern." }],
});

console.log(resp.choices[0].message.content);

そして、何かを接続する前にキーを確認するのに便利なcurlでは:

curl -s https://api.qwenabliterated.top/v1/models \
  -H "Authorization: Bearer $QWENABL_KEY"

成功した呼び出しはuncensoredを含むJSONリストを返します。401はキーが間違っているか不足していることを意味します。ドキュメントはエラー形式を詳細にカバーしています。

ストリーミング、JSON モード、ツール

ストリーミング

stream: trueを設定し、サーバー送信イベントを読み取ります。使用状況はストリームの最後に報告されます。

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a short scene on a night train."}],
    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 モード

response_format={"type": "json_object"}を渡し、プロンプトでJSONに言及してください。それでも防御的に解析してください。どのモデルも常に完璧にスキーマに従うわけではありません。

関数呼び出し

toolsを送信し、オプションでtool_choiceを送信します。モデルがツールを要求した場合、それを実行し、role: "tool"を持つメッセージとして出力を返します。ツール呼び出しもストリーミングされます。サンプリングパラメータのtemperature、top_p、stop、seed、および頻度と存在ペナルティは渡されます。

実際のアプリケーションへの組み込み

単一のスクリプトは簡単です。アプリケーションにはいくつかの習慣が必要で、それらはOpenAIスタイルのAPIで使用するものと同じです。

キーをサーバーに保持する

キーをブラウザコードやモバイルアプリに決して出荷しないでください。APIをバックエンドから呼び出し、認証とユーザーごとの制限を追加できる独自のエンドポイントをフロントエンドに公開してください。バンドル内のキーを見つけた人は誰でもクレジットを使用できます。

タイムアウトを設定し、出力を制限する

レスポンスは100,000トークンのウィンドウの残りをすべて使用でき、max_tokensはオプションです。チャット機能の場合、インターフェースに合わせた上限を設定し、異常に長い回答によって請求額が膨らむのを防ぎます。これにクライアントのタイムアウトを組み合わせれば、各呼び出しの時間と費用の両方に上限を設けることができます。

リクエストIDをログに記録する

すべてのレスポンスにはX-Request-Idが付随します。これを呼び出しの記録の隣に保存してください。結果が正しくない場合やリクエストが失敗した場合は、この識別子によってサポートが正確なリクエストを特定できます。X-Balance-USDヘッダーは、しきい値を下回った場合にジョブが終了する前に自分自身にメッセージを送信する単純なアラートとして有用です。

起動時にモデルリストを確認する

GET /v1/modelsを呼び出すヘルスチェックはトークンコストがかからず、キー、URL、ネットワークパスを1ステップで確認します。サービス起動時に実行し、エラーを返した場合は明示的にエラー終了させてください。

制限とエラー処理

制限を超えるリクエストはHTTP 429を返します。エラーコードはどの制限に達したかを示します:rate_limitedは1分あたりのリクエストが多すぎることを意味し、concurrencyは一度に多すぎることを意味します。一時的な過負荷中、APIはRetry-After: 5ヘッダー付きで429も返します。最大ボディサイズは8 MBです。

ヘッダーを尊重し、バックオフしてください:

import time
from openai import OpenAI, RateLimitError

def ask(client, messages, tries=5):
    for attempt in range(tries):
        try:
            return client.chat.completions.create(model="uncensored", messages=messages)
        except RateLimitError as e:
            wait = int(e.response.headers.get("Retry-After", 5))
            time.sleep(wait * (attempt + 1))
    raise RuntimeError("still rate limited")

ワーカープールを実行する場合は、フルキーで8スレッドに制限してください。それ以上にしても、作業が429に変換されるだけです。失敗または拒否されたリクエストは課金されないため、失敗時の再試行には追加コストがかかりません。

リクエストの費用

入力トークンは1Mあたり$0.15、出力トークンは1Mあたり$0.50です。正確に計算されたいくつかの例:

  • 2,000プロンプトトークンと500完了トークンを含むチャットターン:2,000 x $0.15 / 1M = $0.0003、プラス 500 x $0.50 / 1M = $0.00025、合計 $0.00055。1,000回のターンで$0.55かかります。
  • 10M入力トークンを送信し、2M出力トークンを受信するバッチジョブ:$1.50 プラス $1.00、合計 $2.50。
  • 90,000プロンプトトークンと1,000出力トークンを含むロングコンテキスト呼び出し:$0.0135 プラス $0.0005、合計 $0.014。

クレジットは前払いで、期限切れにならず、サブスクリプションもありません。$20から$500までの任意の整数額をチャージできます。$50追加で5%ボーナスがつくため、$50のチャージで$52.50のクレジットが得られます。暗号資産(TRC20上のUSDT、Base上のUSDC)で支払ってください。ボーナスの全表については価格ページを参照してください。

ホスト型かローカルファイルか:どちらが適しているか

ローカルのGGUFは隔離によるプライバシーと正確な重みへの完全な制御を提供します。ホスト型APIはハードウェア作業なし、長いコンテキスト、他のサービスが呼び出せるURLを提供します。ボット、ライティングツール、ゲームバックエンドを構築するほとんどのチームは、予備のGPUボックスを稼働させ続ける必要があるため、ホスティングの方が簡単だと考えます。

トークンごとの支払いとQwenスタイルのモデルへの到達方法の比較について詳しくは、比較ガイドをご覧ください。APIに送信されたプロンプトはトレーニングには使用されません。このモデルはテキストのみ対応で、未成年者が関与する性的コンテンツはいかなる場合でも許可されません。

質問と回答

使用するにはGPUが必要ですか?

いいえ。モデルはプロバイダのサーバーで実行されます。コードはHTTPリクエストを送信するだけなので、ノートPCや小型VPSで十分です。

どのモデル名を送信すればよいですか?

モデル値として uncensored を送信してください。GET リクエストを /v1/models に送信することで確認できます。

OpenAI の Python および Node SDK に対応していますか?

はい。ベースURLをサイトの /v1 アドレスに設定し、APIキーを使用してください。チャット補完、ストリーミング、ツール呼び出し、JSONモードは通常のパラメータで動作します。

リクエストを多量に送信するとどうなりますか?

レート制限または同時リクエスト数の制限により HTTP 429 が返されます。待機して再試行し、Retry-After ヘッダーが存在する場合はそれに従ってください。

無料でテストする方法はありますか?

新しいユーザーは、APIキーページでワンクリックで$0.50の無料トライアルクレジットを受け取ることができます。有効期限は7日で、クレジットカードは不要です。

キーはフォーム1つで取得できます

アカウントを作成し、キーをコピーし、ベースURLを変更します。これでセットアップは完了です。

API キーを取得