Hello everyone, Here we are going to discuss, how to integrate OpenAI with .Net Core and Angular 15.
ChatGPT (Generative Pre-trained Transformer) is the chatbot developed by OpenAI on November 30, 2022.
Previously we discussed OpenAI and we have seen how to create a ChatGTP application using OpenAI,
For more please follow the below link 👇
Step 1. Create an OpenAI account
First, we need to create an OpenAI account; you can follow the below link to how to create an OpenAI account.
Step 2. Get the OpenAI API key
Login to your OpenAI account and click on profile (personal, right-hand side) and click on view API
Once you click on View API Keys, you will "Create a new secret key, once you click on it an API key will generate in the Popup window, and you can copy it for using it in the application.
Now open Visual Studio 2022 and create an ASP.Net Core web API project like below
Give additional information as per your requirement.
Once the project is created, now go to the NuGet package manager and add the OpenAI package like below
Now right-click on the Controller folder and add a new controller Called OpenAI and write the below code in it
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OpenAI_API.Completions;
using OpenAI_API;
namespace OpenAIApp.Controllers {
[Route("api/[controller]/[action]")]
[ApiController]
public class OpenAI: ControllerBase {
[HttpGet]
public async Task < IActionResult > GetData(string input) {
string apiKey = "Your API Key";
string response = "";
OpenAIAPI openai = new OpenAIAPI(apiKey);
CompletionRequest completion = new CompletionRequest();
completion.Prompt = input;
completion.Model = "text-davinci-003";
completion.MaxTokens = 4000;
var output = await openai.Completions.CreateCompletionAsync(completion);
if (output != null) {
foreach(var item in output.Completions) {
response = item.Text;
}
return Ok(response);
} else {
return BadRequest("Not found");
}
}
}
}
Now click on the program.cs class and add the cors origin like below,
builder.Services.AddCors(options => {
options.AddPolicy(name: "AllowOrigin", policy => {
policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
app.UseCors("AllowOrigin");
When you will run this application, we will see our API in swagger and our API is ready to use in angular.
Now we need to create the Angular 15 application, you can follow the below link for the same
Once the angular 15 application is created, now open the app.component.ts file and add the below code
import { Component } from '@angular/core';
import { OpenAIService } from './open-ai.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
searchTxtVal: string = '';
showOutput: boolean = false;
output: string = '';
isLoading: boolean = false;
constructor(private service: OpenAIService) {}
getResult() {
this.isLoading = true;
this.output = "";
this.service.getData(this.searchTxtVal).subscribe(data => {
this.output = data as string;
this.showOutput = true;
this.isLoading = false;
})
}
}
Add the below code in app.component.html file
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<div class="text-center">
<div class="panel-default">
<div class="panel-body">ChatGPT Completions In the ASP.NET Core Web API</div>
<div class="panel-body">
<div class="col-sm-8">
<input type="text" [(ngModel)]="searchTxtVal" class="form-control" autocomplete="off" placeholder="Enter your question" />
</div>
<div class="col-sm-2" style="margin-left: -60px;">
<button (click)="getResult()">Get Result</button>
</div>
<div class="col-sm-12 mt-5" *ngIf="showOutput">
{{output}}
</div>
<div class="col-sm-12 mt-5" *ngIf="isLoading">
<p style="color: red;">Loading...</p>
</div>
</div>
</div>
</div>
Now create a service file with the below command, here service name is "OpenAI"
Ng g s openAI
And write the below code in the openAI.service.ts file
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import{ Observable} from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class OpenAIService {
constructor(private http: HttpClient) {}
getData(input: string): Observable < any > {
return this.http.get('https://localhost:7285/api/OpenAI/GetData?input=' + input, {
responseType: 'text'
});
}
}
In the above the Url path is "'https://localhost:7285", you need to replace the port, which you are looking at locally, once you run your .Net Core application.
Now add this service reference in the app.model.ts file in the provider array and apart from it we need to add the FormsModule and HttpClientModule like below
Now when you will run your angular 15 application, you will see UI like below
Here, now you can write your query and click on the getResult button, you will see the output below
The output will be like below
This is the way we can integrate the OpenAI with our angular application.
Below is the video, on how we can integrate OpenAI with our angular application practically,