Kali ini kita akan mencoba untuk Integrasi ChatGPT OpenAI dengan vb.net. Karena di website resmi dari open Ai belum officioal modul atau package yang bisa kita gunakan untuk c# ataupun vb.net. Sebenarnya, ketika kita install lewat nudged package, kita akan menemukan beberapa package yang bisa kita gunakan, akan tetapi harus memakai minimal net core 6.0. Sehingga kita kita akan mencoba bikin fungsi untuk melakukan request chat gpt.
Persiapkan API key
Sebelumnya persiapkan terlebih dahulu Api keynya . Anda bisa mendapatkan api key di https://beta.openai.com/.
Fungsi untuk request ke open api
Function callOpenAi(sQuestion As String, iMaxTokens As Integer, dTemperature As Double, sModel As String, top_p As Integer, frequency_penalty As Double, presence_penalty As Double) System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 Or System.Net.SecurityProtocolType.Tls12 Or System.Net.SecurityProtocolType.Tls11 Or System.Net.SecurityProtocolType.Tls Dim apiEndpoint As String = "https://api.openai.com/v1/completions" Dim request As HttpWebRequest = WebRequest.Create(apiEndpoint) request.Method = "POST" request.ContentType = "application/json" request.Headers.Add("Authorization", "Bearer " & OPENAI_API_KEY) Dim data As String = "{" data += " ""model"":""" & sModel & """," data += " ""prompt"": """ & cleanString(sQuestion) & """," data += " ""max_tokens"": " & iMaxTokens & "," data += " ""temperature"": " & dTemperature & ", " data += " ""frequency_penalty"": " & frequency_penalty & ", " data += " ""presence_penalty"": " & presence_penalty & ", " data += " ""stop"": ["" Human:"", "" AI:""]" data += "}" Using streamWriter As New StreamWriter(request.GetRequestStream()) streamWriter.Write(data) streamWriter.Flush() streamWriter.Close() End Using Dim response As HttpWebResponse = request.GetResponse() Dim streamReader As New StreamReader(response.GetResponseStream()) Dim sJson As String = streamReader.ReadToEnd() 'add reference System.Web.Extensions Dim oJavaScriptSerializer As New System.Web.Script.Serialization.JavaScriptSerializer Dim oJson As Hashtable = oJavaScriptSerializer.Deserialize(Of Hashtable)(sJson) Dim sResponse As String = oJson("choices")(0)("text") Return sResponse End Function Private Function cleanString(ByVal s As String) As String If s.IndexOf("\") <> -1 Then s = Replace(s, "\", "\\") If s.IndexOf(vbCrLf) <> -1 Then s = Replace(s, vbCrLf, "\n") If s.IndexOf(vbCr) <> -1 Then s = Replace(s, vbCr, "\r") If s.IndexOf(vbLf) <> -1 Then s = Replace(s, vbLf, "\f") If s.IndexOf(vbTab) <> -1 Then s = Replace(s, vbTab, "\t") If s.IndexOf("""") = -1 Then Return s Else Return Replace(s, """", "\""") End If End Function