Cursorを自分のbase URLで使う
CursorはOpenAI APIを話すので、このゲートウェイとも話せます。モデル設定で埋める二か所、追加する四つのモデル名、そしてエディタを信用する前にkeyとbase URLの両方を確かめるコマンドを一つ。メニューは版ごとに動くので、書き残すのは手順ではなく値のほうです。OpenAI流の名前も通ります。
Cursorはモデルとの会話にOpenAI APIを使います。このゲートウェイと会話できる理由は、それがすべてです。パッチを当てる必要も、何かで包む必要も、プロキシを立てる必要もなく、拡張機能が存在する必要もありません。Cursor自身の設定にある二か所を埋めれば、それだけでここを向きます。Cursorがもともとできていたことは、そのまま続きます。この記事は、その二か所と、四つのモデルに付ける名前と、エディタを信用する前に一度だけ走らせておくコマンドの話です。
埋めるのは二か所だけ
Cursorのモデル設定を開き、OpenAIの節 — API keyを入れる節 — を探します。必要なものは二つとも、その中にあります。key の入力欄と、base URLの上書き設定です。上書きはたいてい、すぐ隣のトグルの後ろにあります。ここで節の名前だけを挙げてクリック手順を書かないのは意図的です。Cursorはこの画面をリリースごとに動かすので、今日書いた一手順ずつの道順は、一バージョンで誤答になります。長く残るのは、あなたが打ち込む二つの値のほうです。
上書き先は https://aifromu.com/v1 です。keyはカスタマーポータルで作ります。これはあなたのスクリプトがすでに使っているkeyと同じもので、呼んでいるAPIが同じだからです。二つとも保存すれば、エディタはもうここを向いています。Cursorの他の設定は何も変える必要がありません。
モデル名の書き方
Cursorがモデル名を自分で指定させてくれる場所には、このゲートウェイが扱う四つを入れてください。astra、sol、terra、lunaです。これはAPIが応答する名前であり、請求が明細に並べる名前でもあります。ですから、エディタの中の一回のセッションと、ポータルの中の一行は、同じ一語になります。
OpenAI流の名前も通ります。上流のベンダーが付けるとおりに書かれたモデル名は、その性能クラスとして読まれ、そのクラスがここでいくらかかるかで課金されます。つまり、別のendpointから持ってきた設定は、手を入れなくても動きます。こちらの四つを直接書くのは、自分がどのクラスを頼んだのかが目で見える版だ、というだけの違いです。そのクラスがいくらかかるかは、モデルごとにトークンの種別ごとで計測します — 入力、キャッシュ読み取り、キャッシュ書き込み、出力は別々の単価です — その計算は課金を説明した記事で最後まで解いてあります。
まず端末で確かめる
エディタを信用する前に、APIに直接たずねます。Cursorの外で、いま貼り付けたばかりのkeyを使って、コマンドを一つ。
curl https://aifromu.com/v1/models -H "Authorization: Bearer YOUR_KEY"
四つのモデルが返ってきます。返ってくれば、keyは生きていてbase URLも正しく、それでもまだ壊れているものがあるなら、それはあなたのアカウントではなくエディタ側の設定にあります — base URLの末尾に余分なパスが付いている、keyの先頭に空白が混じったまま貼られている、OpenAIの節を埋めたのに有効にしていない。返ってこなければ、端末が理由を一行で教えてくれます。同じ失敗をエディタ越しに眺めるより、はるかに短い会話で済みます。
ここにないモデルをCursorが求めたとき
Cursorのどれかの機能が、このゲートウェイが扱っていないモデルを求めた場合、返るのは、扱っている四つの名前を挙げたはっきりした拒否です — Cursor自身のエラー表示に出るので、設定の誤りは謎ではなく一つのメッセージになります。エディタの中では、モデル名が一か所から来るとはかぎりません。誰も打ち込んでいない名前に、ある機能が黙ってつながっている — それこそ、このメッセージがなければ見つけようのない壊れ方です。
ゲートウェイは、知っているクライアント内部の名前も対応付けます。Codex CLIの背後で走るレビュー用のモデルは、すでに terra に対応付けてあり、自分だけの名前を求めてくるクライアントは、エラーではなくモデルを受け取ります。拒否は、ここでは何も誠実に答えようのない名前のためのものです。置ける名前なら、置きます。
Cursorのどれかの機能が、このゲートウェイが扱っていないモデルを求めた場合、返るのは、扱っている四つの名前を挙げたはっきりした拒否です — Cursor自身のエラー表示に出るので、設定の誤りは謎ではなく一つのメッセージになります。
本記事は機械翻訳です。ネイティブによる確認は未了で、英語版が正本です。