Sample code for 30+ languages & platforms
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

PureBasic
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