Generating OpenAI GPT3 completions
Generate GPT text completions using OpenAI and Supra Edge Functions.
OpenAI provides a completions API that allows you to use their generative GPT models in your own applications.
OpenAI's API is intended to be used from the server-side. Supra offers Edge Functions to make it easy to interact with third party APIs like OpenAI.
Setup Supra project#
If you haven't already, install the Supra CLI and initialize your project:
_10supra init
Create edge function#
Scaffold a new edge function called openai by running:
_10supra functions new openai
A new edge function will now exist under ./supra/functions/openai/index.ts.
We'll design the function to take your user's query (via POST request) and forward it to OpenAI's API.
Note that we are setting stream to false which will wait until the entire response is complete before returning. If you wish to stream GPT's response word-by-word back to your client, set stream to true.
Create OpenAI key#
You may have noticed we were passing OPENAI_API_KEY in the Authorization header to OpenAI. To generate this key, go to https://platform.openai.com/account/api-keys and create a new secret key.
After getting the key, copy it into a new file called .env.local in your ./supra folder:
_10OPENAI_API_KEY=your-key-here
Run locally#
Serve the edge function locally by running:
_10supra functions serve --env-file ./supra/.env.local --no-verify-jwt
Notice how we are passing in the .env.local file.
Use cURL or Postman to make a POST request to http://localhost:54321/functions/v1/openai.
_10curl -i --location --request POST http://localhost:54321/functions/v1/openai \_10 --header 'Content-Type: application/json' \_10 --data '{"query":"What is Supra?"}'
You should see a GPT response come back from OpenAI!
Deploy#
Deploy your function to the cloud by runnning:
_10supra functions deploy --no-verify-jwt openai_10supra secrets set --env-file ./supra/.env.local
Go deeper#
If you're interesting in learning how to use this to build your own ChatGPT, read the blog post and check out the video: