>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak uruchamiać lokalne skrypty i aplikacje webowe przez konto ChatGPT zamiast płatnego API OpenAI

OpenAI OAuth

Rachunki za API OpenAI rosną szybciej niż Twój najnowszy projekt poboczny dochodzi do końca. Tymczasem wielu już ma płatną subskrypcję ChatGPT Plus, ale musisz płacić ponownie za każde żądanie, aby uzyskać dostęp do modeli takich jak gpt-5.4-mini lub generować obrazy.

Projekt EvanZhouDev/openai-oauth oferuje sposób na uniknięcie tej podwójnej płatności. Zamienia zwykłe konto ChatGPT w endpoint API, w pełni kompatybilny ze standardowym klientem OpenAI i Vercel AI SDK.

Dlaczego uruchamiać lokalny serwer proxy

OpenAI oferuje narzędzie CLI Codex do pracy z kodem. Pod maską to CLI wysyła żądania do wewnętrznych endpointów chatgpt.com/backend-api/codex, używając autoryzacji OAuth.

Biblioteka openai-oauth przechwytuje te tokeny i uruchamia lokalny serwer HTTP. Wysyłasz standardowe żądania do localhost:10531/v1, a biblioteka tłumaczy je na ChatGPT.

Narzędzie rozwiązuje dwa problemy:

  1. Uruchamia lokalny serwer dla skryptów i narzędzi bez zakupu kluczy API.
  2. Zapewnia przycisk "Zaloguj się przez ChatGPT" dla zewnętrznych aplikacji React. Użytkownicy logują się własnym kontem, a żądania przechodzą przez ich własną subskrypcję.

Uruchomienie lokalne jedną komendą

Najszybszy sposób na przetestowanie proxy to przez CLI. Nie trzeba wprowadzać żadnych kluczy API.

npx openai-oauth

Narzędzie otworzy okno przeglądarki do autoryzacji ChatGPT, zapisze tokeny do ~/.codex/auth.json i wyświetli adres w konsoli:

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

Serwer można wysłać w tryb tła za pomocą flagi --detach lub zarządzać nim komendami logs i stop.

Jeśli piszesz w TypeScript, nie musisz uruchamiać osobnego procesu proxy. Biblioteka łączy się bezpośrednio w Twoim kodzie:

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: "Привет!",
});

Kod pobiera autoryzację z lokalnego profilu Codex i wysyła żądania bezpośrednio do backendu ChatGPT.

Jak działa SDK

Architektura biblioteki jest podzielona na dwa poziomy: Źródła poświadczeń i Adaptery klienta.

Package Structure

Źródła autoryzacji obsługują pobieranie tokenów:

  • @openai-oauth/local odczytuje tokeny z lokalnego dysku w katalogu ~/.codex.
  • @openai-oauth/react pobiera token z sesji przeglądarki użytkownika.

Adaptery opakowują token w wymagany format:

  • @openai-oauth/ai-sdk przygotowuje provider dla Vercel AI SDK.
  • @openai-oauth/openai-client tworzy konfigurację dla oficjalnego pakietu openai.
  • @openai-oauth/core udostępnia niskopoziomowe fetch i baseURL do użycia w dowolnym innym kliencie.

Oto przykład pracy z oficjalnym klientem 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: "Привет!" }],
});

Generowanie obrazów

Repozytorium obsługuje pracę z modelem GPT Image 2. Endpointy /v1/images/generations i /v1/images/edits są proxyowane tak samo jak modele tekstowe.

Przykładowe żądanie przez 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"}'

Lub w kodzie z Vercel AI SDK:

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

Logowanie przez ChatGPT w React

Sign in with ChatGPT

Najbardziej kuszącą funkcją w wersji 2 jest gotowa autoryzacja dla usług webowych. Instalujesz pakiet @openai-oauth/react i dodajesz przycisk do swojego interfejsu:

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

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

Przeglądarki blokują bezpośrednie wywołania zewnętrznych API z powodu CORS. Dlatego klient wysyła nagłówki autoryzacji do Twojego backendu, a backend proxyuje żądanie dalej.

Do bezpiecznej transmisji sesji OAuth użytkownicy muszą zainstalować rozszerzenie przeglądarki "Sign in with ChatGPT" dla Chrome lub Firefox. Gotowy przycisk automatycznie wykryje obecność rozszerzenia i zaproponuje jego instalację, jeśli jest potrzebne. W przeglądarce sesja jest szyfrowana za pomocą WebCrypto i przechowywana w IndexedDB.

Ograniczenia i ryzyko

Nie można nazwać tego projektu w pełni uniwersalnym. Ma istotne ograniczenia:

  • Lista dostępnych modeli jest ograniczona do tego, co oferuje Codex CLI w ramach Twojego planu.
  • Autoryzacja aplikacji webowych działa tylko w Chrome i Firefox. Na razie brak wsparcia dla Safari.
  • Endpoint /v1/responses w CLI działa bezstanowo. Musisz przekazać całą historię rozmowy w każdym żądaniu.
  • Nieoficjalne korzystanie z backendu ChatGPT narusza warunki korzystania z usługi OpenAI.

Projektu nie należy używać do publicznych usług produkcyjnych z wieloma użytkownikami. Łączenie kont lub przekazywanie tokenów osobom trzecim może skutkować zablokowaniem konta ChatGPT.

Kto znajdzie to repozytorium przydatne

Biblioteka wygrywa prostotą uruchomienia do indywidualnego rozwoju, projektów pobocznych i testowania prototypów. Uzyskujesz dostęp do modeli OpenAI podczas lokalnego debugowania bez powiązania karty kredytowej z panelem API.

Licencja Apache-2.0 otwiera kod na wszelkie eksperymenty. Możesz wypróbować proxy w akcji w kilka minut, uruchamiając npx openai-oauth w terminalu.

Powiązane projekty