Sample code for 30+ languages & platforms
PureBasic

Multimodal Input: Image Data

See more AI Examples

Demonstrates sending a request that includes both text and image data for the AI to analyze.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkAi.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.
    ;  xAI (Grok) will be used here..
    CkAi::setCkProvider(ai, "xai")

    ;  Use your provider's API key.
    CkAi::setCkApiKey(ai, "MY_API_KEY")

    ;  Choose a model.
    CkAi::setCkModel(ai, "grok-4.5")

    ;  Add both text input, and image data
    CkAi::ckInputAddText(ai,"Describe what you see in the following image.")

    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ;  We're passing a relative local file path here.. (relative the the app's current working directory)
    success = CkBinData::ckLoadFile(bd,"qa_data/jpg/starfish.jpg")
    If success = 0
        Debug CkBinData::ckLastErrorText(bd)
        CkAi::ckDispose(ai)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    CkAi::ckInputAddImageData(ai,bd,"")

    ;  Ask the AI for text output.
    success = CkAi::ckAsk(ai,"text")
    If success = 0
        Debug CkAi::ckLastErrorText(ai)
        CkAi::ckDispose(ai)
        CkBinData::ckDispose(bd)
        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)

    ;  -------------------------------------------------------------
    ;  The response is in markdown format.
    ;  Also see Markdown to HTML Conversion Examples.
    ;  -------------------------------------------------------------

    ;  Sample output:

    ;  The image depicts a small, bright orange starfish (also known as a sea star) with five symmetrical arms radiating from a central disc. 
    ;  It has a textured, bumpy surface that gives it a realistic, almost spiky appearance, and there's a small hole or indentation at the center, 
    ;  which might represent the mouth or a natural feature. The starfish is shown against a plain white background, and it appears to be a simple, 
    ;  illustrative or clipart-style graphic rather than a photograph.


    CkAi::ckDispose(ai)
    CkBinData::ckDispose(bd)
    CkStringBuilder::ckDispose(sbResponse)


    ProcedureReturn
EndProcedure