PureBasic
PureBasic
AI: Diagnosing an Ask Failure
See more AI Examples
Demonstrates how to get information about why a request to the AI provider failed.Chilkat PureBasic Downloads
IncludeFile "CkAi.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
ai.i = CkAi::ckCreate()
If ai.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; The provider can be "openai", "google", "claude", "deepseek", "xai", or "perplexity".
; Support for additional providers will be added in future versions of Chilkat.
CkAi::setCkProvider(ai, "openai")
; In this case, we're going to cause an intentional failure by using an invalid API key.
CkAi::setCkApiKey(ai, "sk-11111111111111111111111111111111111111111111111k")
; Choose a model.
CkAi::setCkModel(ai, "gpt-4o")
; Add a text input.
CkAi::ckInputAddText(ai,"Say Hello.")
; Ask the AI for text output.
success = CkAi::ckAsk(ai,"text")
If success = 0
; If the response status code equals 0, it means the error occurred before receiving the HTTP response.
; For this case look at the LastErrorText.
If CkAi::ckResponseStatusCode(ai) = 0
Debug CkAi::ckLastErrorText(ai)
Else
; If we received an error response, the status code will be >= 400.
; (Ask would've returned 1 if the response status code was 200.)
Debug "Response status code: " + Str(CkAi::ckResponseStatusCode(ai))
; The error response (JSON) is available in the LastJsonData.
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(json, 0)
CkAi::ckGetLastJsonData(ai,json)
Debug CkJsonObject::ckEmit(json)
; Sample output:
; {
; "error": {
; "message": "Incorrect API key provided: sk-11111***************************************111k. You can find your API key at https://platform.openai.com/account/api-keys.",
; "type": "invalid_request_error",
; "param": null,
; "code": "invalid_api_key"
; }
; }
EndIf
CkAi::ckDispose(ai)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
; Get the text response.
sbResponse.i = CkStringBuilder::ckCreate()
If sbResponse.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAi::ckGetOutputTextSb(ai,sbResponse)
Debug CkStringBuilder::ckGetAsString(sbResponse)
CkAi::ckDispose(ai)
CkJsonObject::ckDispose(json)
CkStringBuilder::ckDispose(sbResponse)
ProcedureReturn
EndProcedure