Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/KLaci/gpt-json
Get structured responses from OpenAI's APIs
https://github.com/KLaci/gpt-json
Last synced: about 2 months ago
JSON representation
Get structured responses from OpenAI's APIs
- Host: GitHub
- URL: https://github.com/KLaci/gpt-json
- Owner: KLaci
- License: mit
- Created: 2023-08-04T20:50:18.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-07T18:12:33.000Z (over 1 year ago)
- Last Synced: 2024-04-24T19:01:16.386Z (9 months ago)
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/gpt-json
- Size: 166 KB
- Stars: 10
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-chatgpt - gpt-json
- awesome-gpt - gpt-json
README
# gpt-json
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.
## Features
- Schema definition and validation
- Message parsing
- Streaming support# Getting started
## Install
```bash
npm install gpt-json yup
```## Usage
### Initialization
```ts
import GPTJSON from 'gpt-json';
import { object, number } from 'yup';const client = new GPTJSON({
apiKey: 'YOUR_OPENAI_API_KEY', // Your OpenAI API key
});
```### Non-streamed request
```ts
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
// }
```### Streamed request
```ts
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' },
// ];
```## License
[This package](https://github.com/KLaci/gpt-json/blob/main/LICENSE) is licenced under the MIT licence.
## Contact
If you have any questions or queries, please contact me at [email protected].