Visual FoxPro
Visual FoxPro
OpenAI (ChatGPT) Simple Request
See more OpenAI ChatGPT Examples
Demonstrate a simple ChatGPT request with authentication using your OPENAI_API_KEY.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loHttp
LOCAL loJson
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcRole
LOCAL lcContent
LOCAL lcFinish_reason
LOCAL lnIndex
LOCAL lcId
LOCAL lcV_object
LOCAL lnCreated
LOCAL lcModel
LOCAL lnPrompt_tokens
LOCAL lnCompletion_tokens
LOCAL lnTotal_tokens
LOCAL i
LOCAL lnCount_i
lnSuccess = 0
* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loHttp = CreateObject('Chilkat.Http')
* Implements the following CURL command:
* curl https://api.openai.com/v1/chat/completions \
* -H "Content-Type: application/json" \
* -H "Authorization: Bearer $OPENAI_API_KEY" \
* -d '{
* "model": "gpt-3.5-turbo",
* "messages": [{"role": "user", "content": "Say this is a test!"}],
* "temperature": 0.7
* }'
* Use the following online tool to generate HTTP code from a CURL command
* Convert a cURL Command to HTTP Source Code
* Use this online tool to generate code from sample JSON:
* Generate Code to Create JSON
* The following JSON is sent in the request body.
* {
* "model": "gpt-3.5-turbo",
* "messages": [
* {
* "role": "user",
* "content": "Say this is a test!"
* }
* ],
* "temperature": 0.7
* }
loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("model","gpt-3.5-turbo")
loJson.UpdateString("messages[0].role","user")
loJson.UpdateString("messages[0].content","Say this is a test!")
loJson.UpdateNumber("temperature","0.7")
* Adds the "Authorization: Bearer $OPENAI_API_KEY" header.
* This is NOT a real key. Change the "sk-vi...." to your own key.
loHttp.AuthToken = "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"
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpJson("POST","https://api.openai.com/v1/chat/completions",loJson,"application/json",loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loJson
RELEASE loResp
CANCEL
ENDIF
loSbResponseBody = CreateObject('Chilkat.StringBuilder')
loResp.GetBodySb(loSbResponseBody)
loJResp = CreateObject('Chilkat.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0
? "Response Body:"
? loJResp.Emit()
lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
? "Response Header:"
? loResp.Header
? "Failed."
RELEASE loHttp
RELEASE loJson
RELEASE loResp
RELEASE loSbResponseBody
RELEASE loJResp
CANCEL
ENDIF
* Sample JSON response:
* (Sample code for parsing the JSON response is shown below)
* {
* "id": "chatcmpl-abc123",
* "object": "chat.completion",
* "created": 1677858242,
* "model": "gpt-3.5-turbo-0301",
* "usage": {
* "prompt_tokens": 13,
* "completion_tokens": 7,
* "total_tokens": 20
* },
* "choices": [
* {
* "message": {
* "role": "assistant",
* "content": "\n\nThis is a test!"
* },
* "finish_reason": "stop",
* "index": 0
* }
* ]
* }
* Sample code for parsing the JSON response...
* Use the following online tool to generate parsing code from sample JSON:
* Generate Parsing Code from JSON
lcId = loJResp.StringOf("id")
lcV_object = loJResp.StringOf("object")
lnCreated = loJResp.IntOf("created")
lcModel = loJResp.StringOf("model")
lnPrompt_tokens = loJResp.IntOf("usage.prompt_tokens")
lnCompletion_tokens = loJResp.IntOf("usage.completion_tokens")
lnTotal_tokens = loJResp.IntOf("usage.total_tokens")
i = 0
lnCount_i = loJResp.SizeOfArray("choices")
DO WHILE i < lnCount_i
loJResp.I = i
lcRole = loJResp.StringOf("choices[i].message.role")
lcContent = loJResp.StringOf("choices[i].message.content")
lcFinish_reason = loJResp.StringOf("choices[i].finish_reason")
lnIndex = loJResp.IntOf("choices[i].index")
i = i + 1
ENDDO
RELEASE loHttp
RELEASE loJson
RELEASE loResp
RELEASE loSbResponseBody
RELEASE loJResp