![]()  | 
  
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
 
      (PureBasic) AI: Simple Stateless Streaming ResponseSee more AI ExamplesShows a simple stateless query and receives the response in streaming mode.Note: This example requires Chilkat v11.2.0 or greater. 
 IncludeFile "CkAi.pb" IncludeFile "CkStringBuilder.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") ; Use your provider's API key. CkAi::setCkApiKey(ai, "MY_API_KEY") ; Choose a model. CkAi::setCkModel(ai, "gpt-4o") ; Indicate streaming mode is to be used. CkAi::setCkStreaming(ai, 1) ; Add a text input. CkAi::ckInputAddText(ai,"Write a detailed story about a turtle who decides to run a bakery. Describe the setting, the kinds of pastries, how the turtle feels, and include at least three paragraphs.") ; Ask the AI for text output. success = CkAi::ckAsk(ai,"text") If success = 0 Debug CkAi::ckLastErrorText(ai) CkAi::ckDispose(ai) ProcedureReturn EndIf sbEventName.i = CkStringBuilder::ckCreate() If sbEventName.i = 0 Debug "Failed to create object." ProcedureReturn EndIf sbDelta.i = CkStringBuilder::ckCreate() If sbDelta.i = 0 Debug "Failed to create object." ProcedureReturn EndIf sbFullResponse.i = CkStringBuilder::ckCreate() If sbFullResponse.i = 0 Debug "Failed to create object." ProcedureReturn EndIf finished.i = 0 abortFlag.i = 0 maxWaitMs.i = 5000 While Not finished result.i = CkAi::ckPollAi(ai,abortFlag) If result = 1 ; We have output waiting. It should be instantly available. The maxWaitMs is just-in-case. success = CkAi::ckNextAiEvent(ai,maxWaitMs,sbEventName,sbDelta) If success = 0 Debug CkAi::ckLastErrorText(ai) CkAi::ckDispose(ai) CkStringBuilder::ckDispose(sbEventName) CkStringBuilder::ckDispose(sbDelta) CkStringBuilder::ckDispose(sbFullResponse) ProcedureReturn EndIf ; Some AI providers send many "empty" events. Just ignore them. If Not CkStringBuilder::ckContentsEqual(sbEventName,"empty",1) ; Log the non-empty events. Debug CkStringBuilder::ckGetAsString(sbEventName) ; The delta contains the new output. This could be emitted to a display or the terminal ; as real-time output. If CkStringBuilder::ckContentsEqual(sbEventName,"delta",1) Debug CkStringBuilder::ckGetAsString(sbDelta) ; Accumulate the delta's so we can show the full response later. CkStringBuilder::ckAppendSb(sbFullResponse,sbDelta) Else ; A streaming AI response is always terminated by a single "null_terminator" event. finished = CkStringBuilder::ckContentsEqual(sbEventName,"null_terminator",1) EndIf EndIf Else If result = 0 ; Nothing is immediately available. Sleep for 1/10 of a second before polling again. CkAi::ckSleepMs(ai,100) Else ; Something failed.. Debug CkAi::ckLastErrorText(ai) finished = 1 EndIf EndIf Wend ; Show the accumulated (full) response. Debug "----" Debug CkStringBuilder::ckGetAsString(sbFullResponse) ; ------------------------------------------------------------- ; The response is in markdown format. ; Also see Markdown to HTML Conversion Examples. ; ------------------------------------------------------------- CkAi::ckDispose(ai) CkStringBuilder::ckDispose(sbEventName) CkStringBuilder::ckDispose(sbDelta) CkStringBuilder::ckDispose(sbFullResponse) ProcedureReturn EndProcedure  | 
  ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.