コーディングに最適なアブリテレート済みモデル:選ぶ際のポイント
コーディングに最適なアブリテレート済みモデルは、拒否が削除された後も良いコードを書けるモデルです。独自のタスクでテストすることでのみ判断できます。ここでは評価方法、拒否が開発者に与える影響、APIを通じたテストの実行方法を示します。
更新日:

拒否が削除された後にコーディングモデルを良くするもの
拒否しないモデルを作るのは簡単です。拒否しないだけでなく、正確なコードも書けるモデルを作るのは難しくなります。拒否をなくすための編集が、モデルの他のスキルも鈍らせる可能性があるためです。だから「どのリストが最も長いか」という質問ではなく、「どのビルドがベースモデルのコーディング能力を維持しているか」という質問が有用です。
重要度の順に、確認すべき4つの項目があります:
- あなたのタスクに対する正確性。コードは実行可能か、テストをパスするか、あなたの規約に従っているか。
- 指示の遵守。 diffのみを求めた場合、diffのみが返されますか?指定された言語バージョンやライブラリを尊重していますか?
- コンテキスト処理。 複数の大きなファイルを同時に読み込み、それら全体で関数名を追跡できますか?
- 実際に送信するプロンプトに対する拒否率。 これがアブリテレート済みモデルに注目する理由であり、直接測定してください。
プロンプトを表示せずに単一のスコアでモデルをランク付けするページには注意してください。リーダーボードは他人の作業負荷について教えてくれます。
拒否が開発者を阻害する場所
コーディングリクエストの大部分はフィルタをトリガーしません。トリガーするものは共通のパターンを持っています:コードは中立だが、トピックが危険に思える場合です。
- セキュリティテスト。ポートスキャナ、ファズテストツール、パッチを当てている脆弱性の概念実証エクスプロイト、または自分のサーバーの脆弱なパスワードをチェックするスクリプト。
- リバースエンジニアリング。逆アセンブルの説明、自分のマシンで見つけた難読化スクリプトの展開、またはファイル形式の解読。
- スクレイピングと自動化。 セッションのローテーション、ボットを嫌うサイトの解析、正当なタスクのための大量フォーム入力。
- マルウェア分析。 検出ルールを書くためにサンプルを読むことは、行ごとに何をしているかを議論することを意味します。
- 機密テキスト用のデータツール。攻撃的なコンテンツ向けの分類器やテストフィクスチャの構築。テストデータ自体が見た目に問題のある場合です。
- ゲームやフィクションのツール。ダークなテーマを持つ大人向けストーリーの対話、クエストテキスト、またはキャラクターシートを生成する。
各ケースで拒否は1回の呼び出しを無駄にし、倫理に関する丁寧な講義はあなたが支払っているトークンを無駄にします。そのような拒否のないモデルは、再試行と文章の書き換えを節約します。これを使いたいと思う理由にはなりますが、考えるのをやめる理由にはなりません。あなたが構築・実行するものに対して責任を負うのはあなた自身です。このサービスは合法な成人向け用途に限定されます。
このAPIが提供するもの
ここではカタログから選ぶわけではありません。APIは、コンテンツ拒否なしで回答するようにチューニングされた、独立したプロバイダが運営する1つのオープンウェイトモデルを提供します。これは任意のモデルベンダーの公式APIではなく、複数のモデル間をルーティングするものでもありません。無検閲のコーディングモデルを探して、切り替えたいモデルの長い候補リストに辿り着く場合、これはそのようなサービスではありません。「フィルタなしの能力のあるモデルを1つ、OpenAI互換のエンドポイントの背後に」という結論に達する場合、これが該当します。
開発者に重要な事実:
- プロンプトと補完用の100,000トークンのコンテキストウィンドウ。複数のソースファイルと長い会話に十分です。
- SSEを介したストリーミング、ツール呼び出し、JSONモードはすべてOpenAI形式です。
temperature、top_p、stop、seed、およびペナルティはそのまま渡されます。- フルキーは8つの同時リクエストと1分あたり300リクエストを許可します。
- テキストのみ。埋め込み、画像生成、ファインチューニングはありません。
ドキュメントにはすべてのパラメータとレスポンスヘッダーがリストされています。
10分でコーディングテストを実行
すでに完了した作業から小さなテストセットを構築します。既知の正解がある5〜10のタスク(先月修正したバグ、テスト付きの関数、ホストされたアライメントモデルが拒否したプロンプト1つなど)を用意します。その後、結果を再現可能にするため低い温度設定で、エンドポイントでそれらすべてを実行します。
from openai import OpenAI
client = OpenAI(
base_url="https://api.abliteratedmodels.cc/v1",
api_key="YOUR_KEY",
)
SYSTEM = (
"You are a senior engineer. Reply with code only, in one fenced block, "
"then at most three lines of notes."
)
tasks = [
"Write a Python function that parses a CIDR string and lists usable hosts.",
"Write a Bash one-liner that finds open ports on 192.168.1.10 using only /dev/tcp.",
"Explain what this regex does and where it backtracks badly: ^(a+)+$",
]
for prompt in tasks:
r = client.chat.completions.create(
model="uncensored",
temperature=0.2,
seed=7,
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": prompt},
],
)
print("=" * 60)
print(prompt)
print(r.choices[0].message.content)
print("tokens:", r.usage.prompt_tokens, r.usage.completion_tokens)
他のものと比較するときは、同じプロンプトとシードを保持してください。テキストを読むだけでなく、実行することで各回答をスコアリングしてください。テキストだけを見ると、自信満々な誤った回答が勝ってしまいます。
エディタとエージェント内での使用
エンドポイントはOpenAIプロトコルを使用するため、プラグインなしでほとんどのコーディングツールで使用できます。ClineやContinueのようなカスタムOpenAI互換プロバイダを受け入れるエディタやエージェントでは、ベースURLをhttps://api.abliteratedmodels.cc/v1に設定し、キーを貼り付け、モデル名としてuncensoredを入力します。リリースごとにフィールド名が変更されるため、各ツールの設定ページで正確なフィールド名を確認してください。
aiderコマンドラインアシスタントの場合、環境変数を通じてエンドポイントを設定し、モデルにopenai/プレフィックスを付けます:
export OPENAI_API_BASE=https://api.abliteratedmodels.cc/v1
export OPENAI_API_KEY=YOUR_KEY
aider --model openai/uncensored
エージェントループには2つの設定が役立ちます。9番目の同時リクエストがエラーコードconcurrency付きでHTTP 429を返すため、同時実行数を8以下に保ってください。ストリーミングリクエストはストリームが終了するまで同時実行スロットを保持するため、1つのツールでストリームが固まると、別のツールが待たされる可能性があることに注意してください。
コード品質を高めるプロンプティングの習慣
どのモデルを選ぶかにかかわらず、尋ねる方法が結果の大部分を決定します。モデルが拒否しなくなった後、これらはより重要になります。モデルはすべてに答えようとし、指定の悪いリクエストも試みます。
- 言語とバージョンを明記する。 「Python 3.11、標準ライブラリのみ」は、誤ったインポートの一群を丸ごとなくせます。
- 最初にインターフェースを示す。 関数シグネチャ、型、呼び出し例を1つを貼り付けます。モデルは独自の形を作り出すのではなく、あなたのコードに合わせて回答を調整します。
- diffまたは単一ファイルを求める。 自由形式のリクエストは長い回答を生成し、それは出力トークンで課金されます(1Mあたり$0.50)。
- コードには温度を低く保つ。 0〜0.3の値はより安定した出力をもたらします。結果を再現したい場合は
seedを追加してください。 stopシーケンスを使用する。 コードブロックのみを望む場合、閉じフェンスで停止してモデルがコメントを追加しないようにします。- 失敗した出力を送信する。 バグの場合、トレースバックとそれが指す行を含めてください。それはどんな説明よりも優れています。
役割と出力形式を明記した短いシステムメッセージは、通常、長いものよりも効果的です。システムテキストはすべてのリクエストで入力として課金されるため、簡潔さは長いセッション全体でコストを節約します。
マージする前に回答を確認する
拒否のないモデルは、アライメントされたモデルと同じくらい自信満々なバグを書く能力があります。テストを実行してください。diffを読んでください。シークレット、権限、ファイル削除、ネットワークアクセスに触れるコードについては、2回レビューし、まずサンドボックスまたは使い捨てコンテナで実行してください。トークンにはどちらにせよ支払います。レビューがシステムを保護します。
コーディング作業のコスト
価格は1M入力トークンあたり$0.15、1M出力トークンあたり$0.50で、前払いクレジットから請求されます。コーディングのワークロードは入力が中心で、コードを送信してより小さな変更を受け取るため、この料金体系に合っています。いくつかの計算例:
| タスク | 入力トークン | 出力トークン | コスト |
|---|---|---|---|
| 8,000トークンのファイルをレビュー | 8,000 | 1,000 | $0.0012 + $0.0005 = $0.0017 |
| 600トークンの関数を生成 | 1,500 | 600 | $0.000225 + $0.0003 = $0.000525 |
| 100,000トークンのウィンドウ全体を埋め、2,000トークンを返す | 98,000 | 2,000 | $0.0147 + $0.001 = $0.0157 |
50,000トークンのコンテキストを持つ呼び出しを20回行うエージェントは、合計で1,000,000の入力トークンを送信します。これは$0.15に相当し、さらに10,000の出力トークンが$0.005かかります。セッション全体で約$0.155となります。最初の行のサイズで1,000回のファイルレビューを行うと$1.70かかります。実験のコストは小さいものです。重要なのは結果を確認するために費やす時間です。失敗または拒否されたリクエストは課金されません。
$20から$500までのチャージ額や、$50、$100、$200でのボーナスを含む詳細は、料金ページをご覧ください。
コミットする前に知っておくべき制限
無検閲モデルが何のためにあるのか、正直に自問してください。ベースモデルよりも優れたプログラマーにはなりませんし、拒否が少ないモデルは何でも引き受けすぎる可能性があります。認証、ファイル削除、または金銭に関わる処理を行うコードについては、新人の同僚が書いたコードをレビューするつもりで、生成されたコードを確認してください。
サービスの制限も計画に含めてください。8 MBを超えるリクエストボディは拒否され、トライアルキーは同時リクエストが2件、1分あたり60件に制限されています。これはテストには十分ですが、バッチジョブには不十分です。Retry-After: 5ヘッダー付きのHTTP 429が表示された場合、プロバイダーが一時的に過負荷状態になっています。待機して再試行してください。無検閲LLM APIのコストと制御の関連ページでは、これがホストされたアライメント済みの代替サービスとどのように比較されるかを解説しています。
試すには、サインアップ後にAPIキーページから$0.50のトライアルクレジットを受け取ってください。カードは不要で、7日間有効、1人1回限りです。
その他のガイド
質問と回答
コーディングに最適なアブリテレート済みモデルはどれですか?
言語やタスクによって結果が異なるため、普遍的な正解はありません。自身の作業から小さなテストセットを構築し、それに基づいて候補を比較してください。このAPIは1つのモデルのみを提供するため、そのモデルのみをテストすることになります。
アブリテレート済みモデルはより悪いコードを書くようになりますか?
はい、拒否を取り除くことで一般品質が少し低下することがあります。それがあなたにとって問題かどうかは、生成されたコードを実行するテストですぐにわかります。
エディター内のAIコーディングアシスタントと連携できますか?
カスタムOpenAI互換エンドポイントを受け付けるツールであれば可能です。ベースURL、APIキー、およびモデル名uncensoredを入力してください。
どのくらいのコンテキストを送信できますか?
ウィンドウは100,000トークンで、プロンプトと返信で共有されます。そのサイズのフルプロンプトの入力には1セントを少し超えるコストがかかります。
キーはフォーム 1 つで手に入ります
アカウントを作成し、キーをコピーし、ベースURLを変更します。これでセットアップは完了です。