gpt-json is a library that enables interaction with OpenAI's GPT models using JSON and supports schema validation with yup. You can execute requests to retrieve specific information and get a validated result back.
- Schema definition and validation
- Message parsing
- Streaming support
npm install gpt-json yup
import GPTJSON from 'gpt-json';
import { object, number } from 'yup';
const client = new GPTJSON({
apiKey: 'YOUR_OPENAI_API_KEY', // Your OpenAI API key
});
const response = await client.executeRequest({
model: 'gpt-4', // OpenAI's model
request: 'Give me some basic data about Estonia', // Your request that targets the GPT API
schema: object({
population: number(),
area: number().meta({ description: 'Area in square kilometers' }), // Use descriptions to get more consistent responses. E.g. you can define the unit of measure to prevent metric/imperial system issues.
}),
});
// Response:
// {
// population: 1331000
// area: 45339
// }
const response = await client.executeStreamRequest({
model: 'gpt-4',
request: 'Top 5 tallest mountains of the world',
schema: array(
object({
height: number().required(),
name: string().required(),
})
),
// It is only called when the data can be validated with the defined schema
onUpdate: data => {
console.log(data);
// Iteration 1: []
// Iteration 2: [{ height: 8848, name: 'Mount Everest' }]
// Iteration 3: [{ height: 8848, name: 'Mount Everest' }, { height: 8611, name: 'K2' }]
// etc.
},
});
// Response:
// [
// { height: 8848, name: 'Mount Everest' },
// { height: 8611, name: 'K2' },
// { height: 8586, name: 'Kangchenjunga' },
// { height: 8516, name: 'Lhotse' },
// { height: 8462, name: 'Makalu' },
// ];
This package is licenced under the MIT licence.
If you have any questions or queries, please contact me at contact@laszlokiss.dev.