An elegant NodeJs library for openai api.
npm install node-openaiAn elegant Node.js library written in TypeScript for the OpenAI API. Pure JavaScript, no dependencies. Works in Node.js and the browser.



!GitHub Workflow Status
!Libraries.io dependency status for GitHub repo
- Installation
- Features
- Example
- V1 API
- Models
- Completions
- Chat
- Edits
- Images
- Embeddings
- Audio
- Files
- Fine-tunes
- Moderations
``bash`
npm install node-openai
| API | Supported |
| --- | --- |
| Models | ✅ |
| Completions | ✅ |
| Chat | ✅ |
| Edits | ✅ |
| Images | ✅ |
| Embeddings | ✅ |
| Audio | ✅ |
| Files | ✅ |
| Fine-tunes | ✅ |
| Moderations | ✅ |
For Node.js (CommonJS):
`javascript`
const { OpenAI } = require('node-openai');
For ES Modules:
`javascript`
import { OpenAI } from 'node-openai';
For TypeScript:
`typescript`
import { OpenAI } from 'node-openai';
Create an instance of the OpenAI class:
`javascript`
const openai = new OpenAI({
apiKey: 'YOUR_API_KEY',
// organization: 'YOUR_ORGANIZATION_ID',
// endpoint: 'https://api.openai.com',
});
To use the OpenAI V1 API, you must call the v1() method on the client instance:
`javascript`
const api = openai.v1();
Check out the OpenAI V1 API docs for more information.
List all available models:
`javascript`
const models = await api.models.list();
Retrieve a model:
`javascript`
const model = await api.models.retrieve('davinci');
Delete fine-tuned model:
`javascript`
const model = await api.models.delete('curie:ft-acmeco-2021-03-03-21-44-20');
Create a completion:
`javascript`
const completion = await api.completions.create({
model: 'davinci',
prompt: 'This is a test',
max_tokens: 5,
temperature: 0.9,
stream: false,
});
If the stream option is set to true, the completion will be streamed:
`javascript
const stream = await api.completions.create({
model: 'davinci',
prompt: 'This is a test',
max_tokens: 5,
temperature: 0.9,
stream: true,
});
const reader = stream.pipeThrough(new TextDecoderStream()).getReader();
// Read the stream
`
Create a chat:
`javascript`
const chat = await api.chat.create({
model: 'gpt-3.5-turbo',
messages: [
{
role: 'user',
content: 'Hello, how are you?'
}
]
});
Create an edit:
`javascript`
const edit = await api.edits.create({
model: 'text-davinci-edit-001',
input: 'I am a test',
instruction: 'Make this text funny',
});
Create an image:
`javascript`
const image = await api.images.create({
prompt: 'A cute baby sea otter',
n: 1,
size: '512x512',
});
Create image edit:
`javascript`
const imageEdit = await api.images.edit({
prompt: 'Make this image funny',
n: 1,
size: '512x512',
}, '/path/to/image.png');
Create image variation:
`javascript`
const imageVariation = await api.images.variation({
n: 1,
size: '512x512',
}, '/path/to/image.png');
Create an embedding:
`javascript`
const embedding = await api.embeddings.create({
model: 'text-embedding-ada-002',
input: 'This is a test',
});
Create transcription:
`javascript`
const transcription = await api.audio.createTranscription({
model: 'whisper-1',
prompt: 'This is a test',
}, '/path/to/audio.mp3');
Create translation:
`javascript`
const translation = await api.audio.createTranslation({
model: 'whisper-1',
prompt: 'This is a test',
}, '/path/to/audio.mp3');
List all available files:
`javascript`
const files = await api.files.list();
Retrieve a file:
`javascript`
const file = await api.files.retrieve('file-123');
Upload a file:
`javascript`
const file = await api.files.upload('/path/to/file.txt', 'fine-tune');
Delete a file:
`javascript`
const file = await api.files.delete('file-123');
Retrieve a file's contents:
`javascript`
const content = await api.files.retrieveContents('file-123');
Create fine-tune:
`javascript`
const fineTune = await api.fineTunes.create({
training_file: 'file-123',
});
List fine-tunes:
`javascript`
const fineTunes = await api.fineTunes.list();
Retrieve fine-tune:
`javascript`
const fineTune = await api.fineTunes.retrieve('ft-AF1WoRqd3aJAHsqc9NY7iL8F');
Cancel fine-tune:
`javascript`
const fineTune = await api.fineTunes.cancel('ft-AF1WoRqd3aJAHsqc9NY7iL8F');
List fine-tune's events:
`javascript`
const events = await api.fineTunes.listEvents('ft-AF1WoRqd3aJAHsqc9NY7iL8F');
Create moderation:
`javascript``
const moderation = await api.moderations.create({
model: 'text-moderation-stable',
input: 'This is a test',
});