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-5.6-terra")

    ;  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