主要ポイント
- $0.50のトライアルクレジットは、7日間有効で支払い不要、数百回の短いロールプレイターンに十分です。
- OpenAI互換のエンドポイントを受け付けるフロントエンドはすべて動作します:ベースURL、キー、モデル
uncensoredを設定してください。 - コストは返信の長さではなくチャット履歴の長さに依存します。古い会話を切り捨てまたは要約してください。
- 合法的な範囲での成人向けフィクションとロールプレイに限ります。未成年者に関するものは一切対象外です。
ここで言う「無料」の意味
このサービスで無制限の無料チャットはありません。事前にそう伝えるのが良いでしょう。あなたが得られるのはトライアル残高です:Google、またはメールとパスワードでサインアップ後、API キーページでワンクリックで$0.50のトライアルクレジットを請求できます。1人1回限り、7日間有効、支払い不要です。トライアルキーは同時2リクエスト、1分あたり60リクエストのレート制限で動作し、1人のチャットには十分です。
小さく見えますが、トークンは安価です。入力は1Mトークンあたり$0.15、出力は1Mトークンあたり$0.50です。8,000トークンのプロンプトと300トークンの返信を含む典型的なロールプレイターンは$0.00135かかり、$0.50で約370ターンをカバーできます。多くの場合、これは1晩のチャットや数編の短いストーリーに相当し、金銭を投入する前に設定が適しているか判断するのに十分です。
トライアルが尽きたら、$20から$500までの任意の整数金額でチャージしてください。クレジットは期限切れにならず、失敗または拒否されたリクエストは課金されず、キャンセルするサブスクリプションもありません。当サイトでは暗号資産のみを受け付けています:TRC20上のUSDTまたはBase上のUSDC。
フロントエンドを選択
APIはHTTP経由でテキストのみを処理します。キャラクター、チャット履歴、プロンプトテンプレートを保持する仕組みが必要です。一般的な3つの選択肢:
- SillyTavern。 キャラクターチャット用に構築されたローカルWebアプリで、lorebooks、ペルソナ、プリセットを備えています。OpenAI互換のエンドポイントを追加でき、まさにこのAPIに該当します。
- 別のチャットクライアント はカスタムOpenAI互換URL用のフィールドを公開します。カスタムエンドポイント、プロキシ、またはOpenAI互換という設定を探してください。
- あなた自身のスクリプト。Pythonで50行書くだけで、メモリ、プロンプト、コストを完全に制御できます。また、実際に送信している内容を最も簡単に確認できる方法でもあります。
チャットだけでなくアプリを構築している場合、同じ呼び出しは任意のOpenAI SDKから動作します。ドキュメントのクイックスタートには、エンドポイント、ヘッダー、制限が1か所にまとめられています。
SillyTavernを5ステップで接続
- アカウントを作成し、API キーページを開き、無料トライアルクレジットを受け取り、キーをコピーしてください。
- SillyTavernでプラグアイコン(API Connections)を開き、APIタイプを Chat Completion に設定します。
- ソース名としてCustom (OpenAI-compatible)を選択します。
- カスタムエンドポイントフィールドに
https://api.uncensoredvideo.cc/v1、キーフィールドにキーを入力し、モデルIDとしてuncensoredを入力します。 - 接続を押します。緑色のステータスは、
GET /v1/modelsへのリクエストまたはテストメッセージが成功したことを意味します。
メニューラベルはSillyTavernのバージョンによって異なるため、正確な表記ではなく意味を一致させてください。アプリのせいにする前に、ターミナルからキーをテストしてください:
curl https://api.uncensoredvideo.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with the word ready."}]}'curlは動作するがアプリが動作しない場合、問題はアプリのフィールドにあります:/v1の欠落、キー内の余計なスペース、または間違ったモデル名です。
または小さなチャットループを書く
スクリプトはロールプレイのコストを学ぶのに適しています。各ターンでトークン使用量を出力できるためです。このスクリプトはキャラクタープロンプトを保持し、履歴を最後の20メッセージに絞り込み、返信をストリーミングします。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredvideo.cc/v1",
api_key=os.environ["API_KEY"],
)
system = (
"You are Mara, a dry-witted smuggler pilot in a space-opera story. "
"Stay in character, write in third person, keep replies under 150 words."
)
history = []
while True:
user = input("> ")
history.append({"role": "user", "content": user})
messages = [{"role": "system", "content": system}] + history[-20:]
stream = client.chat.completions.create(
model="uncensored",
messages=messages,
temperature=0.9,
top_p=0.95,
max_tokens=300,
stream=True,
stream_options={"include_usage": True},
)
reply = ""
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
piece = chunk.choices[0].delta.content
reply += piece
print(piece, end="", flush=True)
if chunk.usage:
print("\n[tokens in/out: %d/%d]" % (chunk.usage.prompt_tokens, chunk.usage.completion_tokens))
history.append({"role": "assistant", "content": reply})使用量行を確認してください。数十ターン経つと、入力の数が増える一方で出力は横ばいであることがわかります。管理すべきは入力数の方です。
持続するキャラクタープロンプトを書く
ロールプレイの問題の多くはモデルではなく、最初のプロンプトに起因します。良いキャラクタープロンプトは短く具体的であるべきです。キャラクターの名前、1〜2文で声の特徴、設定、返信の長さを指定します。そしてそこで止めてください。余分なルールは各ターンのトークンコストを増やし、長く複雑なルールリストは明確な例よりも従われにくい傾向があります。
同じパイロットを説明する2つの方法を比較します。1つ目は、彼女が勇敢で、面白く、忠実で、賢明だと言うものです。これはモデルが行動に移せる情報を何も与えません。2つ目は、彼女はまずジョークで質問に答え、次に真実を話し、過去については2回聞かれるまで説明せず、船の部品が壊れたときは軽く悪態をつく、と言うものです。2つ目はモデルが繰り返す習慣を与え、習慣こそが読者が体験する人格です。
3〜4行の短いやり取りの例を追加してください。モデルはリズムを非常に良く模倣するため、例文を追加することで、別途ルールを設定しなくても、長さ、時制、人称を統一できます。2人称で書く場合はそのように示し、イタリック体のナレーションを望む場合はそれも示してください。例文はシステムプロンプトまたは履歴の最初のメッセージとして配置します。
最後に、他のキャラクターの操作権を誰に渡すか決定します。モデルに複数のキャラクターを演じさせたい場合はそう指定します。1つの役割のみを演じさせたい場合は、あなたのキャラクターの言葉や行動を絶対に書かないように指示します。キャラクター名のストップシーケンスをAPIレベルで設定することで、これを補強できます。
ロールプレイの1ターンあたりのコスト
各リクエストはシステムプロンプト、キャラクターの説明、履歴を再送信するため、チャットが長くなるほど入力トークンが増加します。300トークンの返信の場合、その単独のコストは 300 x $0.50 / 1,000,000 = $0.00015 となります:
| プロンプトサイズ | 入力コスト | ターンあたりのコスト | 100ターンあたり | $0.50でのターン数 |
|---|---|---|---|---|
| 4,000トークン | $0.0006 | $0.00075 | $0.075 | 約666回 |
| 8,000トークン | $0.0012 | $0.00135 | $0.135 | 約370 |
| 20,000トークン | $0.0030 | $0.00315 | $0.315 | 約158 |
| 50,000トークン | $0.0075 | $0.00765 | $0.765 | 約65 |
結論は単純です。同じターン数であれば、簡潔な8,000トークンのプロンプトは50,000トークンのプロンプトよりも約5.7倍安価です。8,000トークンのレベルでは、$20のチャージで約14,800回のターンが支払えます。より大きなチャージにはボーナスが追加されます:$50から+5%、$100から+10%、$200から+15%。つまり、$100チャージで$110のクレジットが得られます。完全な表については価格ページをご覧ください。
長いストーリーを安価で一貫性のある状態に保つ
コンテキストウィンドウは100,000トークン(プロンプトと返信の合計)で、大量のデータをロードできます。ただし、通常は必要ありません。長いプロンプトはコストが高く、モデルが見失うテキストも多くなります。以下の習慣が役立ちます:
- 要約して、削除する。 20ターンごとにモデルにこれまでのストーリーの150語の要約を求め、それをシステムプロンプトに保持し、古いメッセージを削除します。
- キャラクターシートを短く保つ。 モデルが無視するルール1ページは、各ターンで課金されるページです。
- 返信を制限する。
max_tokensはオプションですが、制限を設けることで応答の暴走を防ぎ、テンポを引き締められます。 - サンプリングを調整する。 小説には温度を0.8から1.0に設定するのが適しています。モデルがフレーズを繰り返す場合は、頻度ペナルティまたは存在ペナルティを少し上げてください。これらはそのまま渡されます。
stopシーケンスを使用して、モデルがあなたの代わりにセリフを話さないようにします。例えば、キャラクター名の後にコロンを置くなどします。
固定シードも渡されるため、同じシーンを再生して2つのプロンプトバージョンを比較する場合に役立ちます。
一般的な問題と迅速な修正
これらは、通常は効果的な設定で、長いチャットでよく遭遇する問題です。
- モデルがあなたの代わりに話す。 システムプロンプトに行を追加し、キャラクターの名前にストップシーケンスを設定します。
- 返信がターンごとに長くなる。 モデルは以前の返信の長さをコピーします。
max_tokensを下げ、長い返信を手動で編集すると、パターンがリセットされます。 - 繰り返されるフレーズ。 温度を少し上げ、小さな存在ペナルティまたは頻度ペナルティを追加し、自分のメッセージを変化させます。モデルは目にするものを鏡のように映します。
- 詳細の忘却。 名前、怪我、約束など存続させるべき事実は、プロンプトの上部近くの短いピン留めメモに書き、ストーリーが変化したら更新します。
- 平坦なトーン。 より強い声の例(文体の例)を与えてください。トーンは形容詞よりも例によって大きく決まります。
奇妙なことが起こった場合は、スクリプトが送信する完全なメッセージリストを出力してください。10回中9回は、プロンプト自体に原因が見えます:残った指示、複製された要約、または切り詰められていない履歴です。
発生する可能性のある制限とエラー
完全なキーでは8つの同時リクエストと1分あたり300リクエストが可能で、トライアルキーでは2と60です。制限を超えると、APIはHTTP 429を返します。エラーコードrate_limitedは1分あたりのリクエストが多すぎることを意味し、concurrencyは一度に多すぎることを意味します。Retry-After: 5ヘッダー付きの429は一時的な過負荷を示すため、5秒待ってから再試行してください。
人々が気づきにくい点があります:ストリーミングされたリクエストは、ストリーミングが完了するまで同時実行数枠を保持します。トライアルキーで再生成を素早く3回クリックすると、3回目の試行がconcurrencyで失敗する可能性があります。ストリーミングが終了するまで待つか、クライアントで短い待機後に再試行してください。すべての応答にはX-Balance-USDが含まれているため、スクリプトで各ターン後に残高を出力できます。
変更されないルールがあります:このモデルは成人による合法的な利用に対してコンテンツ拒否なしで回答するようにチューニングされており、未成年者を含む性的なコンテンツは生成しません。物語をその線を越えない範囲に収めてください。プロンプトはトレーニングには使用されません。
