Skip to content

el-abdel/openai

 
 

Repository files navigation

OpenAI

A tiny async production-ready wrapper for OpenAI GPT-3 API.

This is an unofficial library and has no affiliations with OpenAI

Installation

Via npm

npm install openai

Via yarn

yarn add openai

Usage

Initialize OpenAI

import { OpenAI } from 'openai';
// or the commonJS way:
const { OpenAI } = require('openai');

// new OpenAI(apikey: string, organization?: string, version?: string)
const openai = new OpenAI(process.env.API_KEY, 'my-organization');

Engine

Get all engines:

const engines = await openai.getEngines();

Get specific engine:

const engine = await openai.getEngine('curie');

Completion

Make a completion:

const completion = await openai.complete('curie', {
    prompt: 'Q: Hello\nA:',
    user: 'user-123'
});

The options argument(2nd) properties follow the exactly same names as shown on official docs.

Make a completion from a fine-tuned model:

const completion = await openai.completeFromModel('FINE_TUNED_MODEL', {
    prompt: 'Q: Hello\nA:'
});

Make a completion and stream the response:

// Very experimental! Don't use on production!!!
// This API may change at any time
const stream = await openai.completionTextStream('curie', {
    prompt: 'Q: Hello\nA:',
    user: 'user-123'
});

stream.pipe(response)

Make a content filter:

const isSafe = (await openai.contentFilter('hi I am cool')) === 0;

Search

Make a search:

const search = await openai.search('curie', {
    query: 'the president',
    documents: [
        'whitehouse',
        'school',
        'hospital'
    ]
});

The options argument(2nd) properties follow the exactly same names as shown on official docs.

Classification

Classify a document:

const classification = await openai.classify({
    examples: [
        ['A happy moment', 'Positive'],
        ['I am sad.', 'Negative'],
        ['I am feeling awesome', 'Positive']
    ],
    labels: ['Positive', 'Negative', 'Neutral'],
    query: 'It is a raining day :(',
    search_model: 'ada',
    model: 'curie'
});

The argument properties follow the exactly same names as shown on official docs.

Answer

Answer a question:

const answer = await openai.answer({
    documents: ['Puppy A is happy.', 'Puppy B is sad.'],
    question: 'which puppy is happy?',
    search_model: 'ada',
    model: 'curie',
    examples_context: 'In 2017, U.S. life expectancy was 78.6 years.',
    examples: [['What is human life expectancy in the United States?','78 years.']],
});

The argument properties follow the exactly same names as shown on official docs.

File

Get all files:

const files = await openai.getFiles();

Upload a single file:

const result = await openai.uploadFile('filename.json', await fs.readFileSync('somefile.json'), 'fine-tune');

Get a single file by id:

const file = await openai.getFile('file-29u89djwq');

Delete a single file by id:

await openai.deleteFile('file-29u89djwq');

Fine-tuning

Fine-tune from a file:

const result = await openai.finetune({
    training_file: 'file-29u89djwq'
});

The argument properties follow the exactly same names as shown on official docs.

Get all fine-tunes:

const finetunes = await openai.getFinetunes();

Get a specific fine-tune:

const finetune = await openai.getFinetune('ftjob-AF1WoRqd3aJ');

Cancel a fine-tune:

await openai.cancelFinetune('ftjob-AF1WoRqd3aJ');

Get fine-tune events of a fine-tune:

const events = await openai.getFinetuneEvents('ftjob-AF1WoRqd3aJ');

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 100.0%