nestjs-generative-ai
A selection of useful one-liner decorators, pipes and services to boost your NestJS APIs with Generative AI sweetness
A selection of useful one-liner decorators, pipes and services to boost your NestJS APIs with Generative AI sweetness
Explore the docs »
View Demos
·
Report Bug
·
Request Feature
Table of Contents
-
Payload Validation: Reject payload data, for instance for freetext form fields, which don't match specifications with
@AISpecifications
-
Payload Suggestion: Generate feedback for unmet specifications on payload data, through clarifying questions for the user, with
@AIFeedback
-
Document Summary: Get a 5 sentences summary along any uploaded document with
AISummarizeDocumentPipe
... and more to come!
This lib was tested only on and thus require Node.js >=21.6.1, NestJS ^10.3.3
You will also need both the library and class-transformer
and @nestjs/config
to make the magic happen
# with npm
npm install nestjs-generative-ai
# with yarn
yarn add nestjs-generative-ai
# with pnpm
pnpm add nestjs-generative-ai
Configure the library in the module you want to use it in. If you want to use it globally, configure it in the main app module.
The library currently only works with OpenAI so you will need to set the OPENAI_API_KEY
which you will find on OpenAI's website and set in your environment variables.
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { GenerativeAIModule } from 'nestjs-generative-ai';
@Module({
imports: [
ConfigModule.forRoot(),
GenerativeAIModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
modelApiKey: configService.get('OPENAI_API_KEY') as string,
}),
inject: [ConfigService],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
If you also want to enable validation globally, you should configure the ValidationPipe
in your main.ts
file
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe({ transform: true }));
await app.listen(3000);
}
bootstrap();
No FAQ at the moment
- [x] Add first 3 decorators and services
- [ ] Allow customizing the chosen LLM
- [ ] Allow customizing the prompt used for a specific decorator instance or globally
- [ ] Add new awesome decorators and services?
We are just getting started on this project and would highly appreciate contributions
Distributed under the MIT License. See LICENSE for more information.