Skip to content

Instantly share code, notes, and snippets.

@bramses
Last active September 8, 2021 11:05
Show Gist options
  • Save bramses/2b1a72c4269b8a892a7ebf7318d1b363 to your computer and use it in GitHub Desktop.
Save bramses/2b1a72c4269b8a892a7ebf7318d1b363 to your computer and use it in GitHub Desktop.
Run OpenAI API in NodeJS Express Server
import openai
import os
from dotenv import load_dotenv
import sys
load_dotenv()
TOKEN_RESPONSE_LENGTH = 20
TEMPERATURE = 0.75
STOP = "\n"
ENGINE = "davinci"
def loadEnv():
return os.getenv("OPENAI_API_KEY")
def generate_response(prompt, max_tokens, temp, stop, engine):
return openai.Completion.create(engine=engine, prompt=prompt, max_tokens=max_tokens, temperature=temp, stop=stop)
def run(prompt):
openai.api_key = loadEnv()
res = generate_response(prompt, TOKEN_RESPONSE_LENGTH, TEMPERATURE, STOP, ENGINE)
return res
if __name__ == '__main__':
print(run(sys.argv[1]))
// calling fetch() in your React frontend
const res = await fetch('http://localhost:5000/get-message', {
method: 'POST',
mode: 'cors',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
message: generatePrompt()
})
})
const express = require('express');
const app = express();
const spawn = require("child_process").spawn;
const cors = require('cors');
const bodyParser = require('body-parser');
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
app.use(cors());
app.post('/get-message', (req, res) => {
console.log(req.body.message)
const pythonProcess = spawn("python", ["./api.py", req.body.message ]);
pythonProcess.stdout.on("data", function (data) {
res.setHeader('Content-Type', 'application/json');
res.end(data.toString())
});
})
app.listen(5000, function() {
console.log('server running on port 5000');
})
@bramses
Copy link
Author

bramses commented Aug 30, 2020

npm init -y to start a new server
npm i express cors body-parser to install dependencies
npm start to run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment