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