Get a Free ChatGPT API

Get a Free ChatGPT API

Below is a simple guide:

1. Register a val.town Account

Add a project.

Add the following code:

import { OpenAI } from "https://esm.town/v/std/openai";

export default async function(req: Request): Promise<Response> {
  if (req.method === "OPTIONS") {
    return new Response(null, {
      headers: {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Headers": "*",
      },
      status: 204,
    });
  }
  const openai = new OpenAI();

  try {
    var body = await req.json();
  } catch (e) {
    var search = (new URL(req.url)).searchParams;
    body = {
      "messages": [{ "role": "user", "content": search.get("q") || "hello" }],
      "temperature": 0.5,
      "presence_penalty": 0,
      "frequency_penalty": 0,
      "top_p": 1,
      stream: true,
      model: "gpt-4-turbo",
    };
  }

  const stream = await openai.chat.completions.create(body);

  if (!body.stream) {
    return new Response(JSON.stringify(body), {
      headers: {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Headers": "*",
        "Content-Type": "application/json; charset=UTF-8",
      },
    });
  }

  const { readable, writable } = new TransformStream();
  const my_stream_writer = writable.getWriter();
  var reader = stream.toReadableStream().getReader();
  var totalText = "";
  const decoder = new TextDecoder("utf-8", { stream: true });
  var encoder = new TextEncoder();
  (async () => {
    while (true) {
      const { done, value } = await reader.read();
      if (done) break;
      totalText += decoder.decode(value, { stream: true });
      var msgs = totalText.split("\n");
      totalText = msgs.pop();
      for (let i in msgs) {
        my_stream_writer.write(encoder.encode(`data: ${msgs[i]}\n\n`));
      }
      await new Promise((r) => {
        setTimeout(r, 20);
      });
    }
    my_stream_writer.close();
  })();

  return new Response(readable, {
    headers: {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Headers": "*",
      "Content-Type": "text/event-stream; charset=UTF-8",
    },
  });
}

Click Save & preview.

That is all.

2. Copy the API Address

API

This address is the API address we will use later in the software. No username or password verification is required.

3. Use It in an App

Using NextChat as an example, download it here: ChatGPTNextWeb

Enter the address obtained above here, and you can use the free ChatGPT API.