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

    ; 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