>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

ChatGPTアカウントを使って有料のOpenAI APIの代わりにローカルスクリプトやWebアプリを実行する方法

OpenAI OAuth

OpenAI APIの請求額は、あなたの最近のサイドプロジェクトが完了するよりも早く膨らんでいます。一方、すでにChatGPT Plusの有料サブスクリプションを持っているにもかかわらず、gpt-5.4-miniのようなモデルにアクセスしたり画像を生成したりするには、リクエストごとに再度料金を払う必要があります。

EvanZhouDev/openai-oauthプロジェクトは、この二重課金を避ける方法を提供します。通常のChatGPTアカウントを、標準のOpenAIクライアントとVercel AI SDKに完全互換のAPIエンドポイントに変えます。

ローカルプロキシを実行する理由

OpenAIは、コード作業用のCodex CLIツールを提供しています。このCLIは内部エンドポイントchatgpt.com/backend-api/codexにOAuth認証を使用してリクエストを送信します。

ライブラリopenai-oauthはこれらのトークンを傍受し、ローカルHTTPサーバーを起動します。標準のリクエストをlocalhost:10531/v1に送信すると、ライブラリがそれをChatGPTに変換します。

このツールは2つの問題を解決します:

  1. APIキーを購入せずにスクリプトやユーティリティ用のローカルサーバーを起動します。
  2. サードパーティのReactアプリに「ChatGPTでサインイン」ボタンを提供します。ユーザーは自分のアカウントでログインし、リクエストは自分のサブスクリプション経由で送信されます。

1コマンドでのローカル起動

プロキシをテストする 가장速い方法はCLIを使用することです。APIキーの入力は不要です。

npx openai-oauth

ユーティリティはChatGPT認証用のブラウザウィンドウを開き、トークンを~/.codex/auth.jsonに保存し、コンソールにアドレスを出力します:

OpenAI-compatible endpoint ready at http://127.0.0.1:10531/v1
Use this as your OpenAI base URL. No API key is required.
Available Models: gpt-5.6-terra, gpt-5.6-sol, gpt-image-2

サーバーは--detachフラグでバックグラウンドモードに切り替えたり、logsコマンドとstopコマンドで管理したりできます。

TypeScriptで書いている場合、別のプロキシプロセスを起動する必要はありません。ライブラリはコード内で直接接続します:

npm i @openai-oauth/local @openai-oauth/ai-sdk ai
import { createOpenAIOAuth } from "@openai-oauth/ai-sdk";
import { openaiCredentials } from "@openai-oauth/local";
import { generateText } from "ai";

const openai = createOpenAIOAuth(openaiCredentials());

const result = await generateText({
	model: openai("gpt-5.4-mini"),
	prompt: "Привет!",
});

このコードはローカルのCodexプロファイルから認証情報を取得し、ChatGPTバックエンドに直接リクエストを送信します。

SDKの仕組み

ライブラリアーキテクチャは2つのレベルで構成されています:Credential Sources(認証情報ソース)とClient Adapters(クライアントアダプター)です。

Package Structure

認証情報ソースはトークンの取得を処理します:

  • @openai-oauth/localはローカルディスクの~/.codexディレクトリからトークンを読み取ります。
  • @openai-oauth/reactはユーザーのブラウザセッションからトークンを取得します。

アダプターはトークンを必要な形式に包みます:

  • @openai-oauth/ai-sdkはVercel AI SDK用のプロバイダーを準備します。
  • @openai-oauth/openai-clientは公式のopenaiパッケージ用の設定を作成します。
  • @openai-oauth/coreは他のクライアントで使用するための低レベルのfetchbaseURLを提供します。

公式のopenaiクライアントでの使用例:

import { createOpenAIOptions } from "@openai-oauth/openai-client";
import { openaiCredentials } from "@openai-oauth/local";
import OpenAI from "openai";

const client = new OpenAI(createOpenAIOptions(openaiCredentials()));

const response = await client.chat.completions.create({
  model: "gpt-5.4-mini",
  messages: [{ role: "user", content: "Привет!" }],
});

画像生成

このリポジトリはGPT Image 2モデルのサポートしています。エンドポイント/v1/images/generations/v1/images/editsは、テキストモデルと同じ方法でプロキシされます。

cURLでのリクエスト例:

curl http://127.0.0.1:10531/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2","prompt":"A tiny house in a forest"}'

またはVercel AI SDKでのコード:

const result = await generateImage({
	model: openai.image("gpt-image-2"),
	prompt: "A tiny house in a forest",
});

ReactでのChatGPTサインイン

Sign in with ChatGPT

v2で最も魅力的な機能は、Webサービス向けの完成された認証機能です。@openai-oauth/reactパッケージをインストールし、インターフェースにボタンを追加します:

import { SignInWithChatGPT } from "@openai-oauth/react";

export default function LoginPage() {
	return <SignInWithChatGPT />;
}

ブラウザはCORSによりサードパーティAPIへの直接呼び出しをブロックします。そのため、クライアントは認証ヘッダーをバックエンドに送信し、バックエンドがリクエストをプロキシします。

安全なOAuthセッション転送のために、ユーザーはChromeまたはFirefox用の「Sign in with ChatGPT」ブラウザ拡張機能をインストールする必要があります。完成されたボタンは拡張機能の存在を自動的に検出し、必要に応じてインストールを促します。ブラウザ内では、セッションはWebCryptoで暗号化されIndexedDBに保存されます。

制限事項とリスク

このプロジェクトは完全に万能とは言えません。注目すべき制限があります:

  • 利用可能なモデルのリストは、Codex CLIがプラン提供するものに限定されます。
  • Webアプリの認証はChromeとFirefoxでのみ動作します。Safariのサポートはまだありません。
  • CLIの/v1/responsesエンドポイントはステートレスで動作します。各リクエストで会話履歴全体を渡す必要があります。
  • ChatGPTバックエンドの非公式な使用は、OpenAIの利用規約に違反します。

このプロジェクトは、多くのユーザーがいるパブリックな本番サービスには使用すべきではありません。アカウントのプール化やトークンのサードパーティへの転送は、ChatGPTアカウントの停止につながる可能性があります。

このリポジトリが役立つ人

このライブラリは、個人開発、サイドプロジェクト、プロトタイプテストでの起動のシンプルさで優れています。APIダッシュボードにクレジットカードを紐付けることなく、ローカルデバッグ中にOpenAIモデルにアクセスできます。

Apache-2.0ライセンスにより、コードはあらゆる実験に開放されています。ターミナルでnpx openai-oauthを実行すれば、数分でプロキシを試すことができます。

関連プロジェクト