![]()  | 
  
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
 
      (AutoIt) Conversation with Streaming ResponsesSee more AI ExamplesDemonstrates an AI conversation with receiving streaming responses.Note: This example requires Chilkat v11.2.0 or greater. 
 Local $bSuccess = False ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oAi = ObjCreate("Chilkat.Ai") ; The provider can be "openai", "google", "claude", "deepseek", "xai", or "perplexity". ; Support for additional providers will be added in future versions of Chilkat. $oAi.Provider = "google" ; Use your provider's API key. $oAi.ApiKey = "MY_API_KEY" ; Choose a model. $oAi.Model = "gemini-2.5-flash" ; Indicate streaming mode is to be used. $oAi.Streaming = True ; Create a new conversation to be maintained locally in memory. ; If the conversation is the first to be created, it is also automatically selected. Local $systemMsg = "You are a creative storyteller" Local $sDeveloperMsg = "" Local $sConversationName = "test_conversation" $oAi.NewConvo($sConversationName,$systemMsg,$sDeveloperMsg) ; Add a text input. $oAi.InputAddText("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. $bSuccess = $oAi.Ask("text") If ($bSuccess = False) Then ConsoleWrite($oAi.LastErrorText & @CRLF) Exit EndIf $oSbEventName = ObjCreate("Chilkat.StringBuilder") $oSbDelta = ObjCreate("Chilkat.StringBuilder") $oSbFullResponse = ObjCreate("Chilkat.StringBuilder") Local $bFinished = False Local $bAbortFlag = False Local $iMaxWaitMs = 5000 While Not $bFinished Local $iResult = $oAi.PollAi($bAbortFlag) If ($iResult = 1) Then ; We have output waiting. It should be instantly available. The maxWaitMs is just-in-case. $bSuccess = $oAi.NextAiEvent($iMaxWaitMs,$oSbEventName,$oSbDelta) If ($bSuccess = False) Then ConsoleWrite($oAi.LastErrorText & @CRLF) Exit EndIf ; Some AI providers send many "empty" events. Just ignore them. If (Not $oSbEventName.ContentsEqual("empty",True)) Then ; The delta contains the new output. This could be emitted to a display or the terminal ; as real-time output. If ($oSbEventName.ContentsEqual("delta",True)) Then ; This example will emit each delta to its own line. ConsoleWrite($oSbDelta.GetAsString() & @CRLF) ; Accumulate the delta's so we can show the full response later. $oSbFullResponse.AppendSb($oSbDelta) Else ; A streaming AI response is always terminated by a single "null_terminator" event. $bFinished = $oSbEventName.ContentsEqual("null_terminator",True) EndIf EndIf Else If ($iResult = 0) Then ; Nothing is immediately available. Sleep for 1/10 of a second before polling again. $oAi.SleepMs 100 Else ; Something failed.. ConsoleWrite($oAi.LastErrorText & @CRLF) $bFinished = True EndIf EndIf Wend ; ------------------------------------------------------------- ; The response is in markdown format. ; Also see Markdown to HTML Conversion Examples. ; ------------------------------------------------------------- ; Show the accumulated (full) response. ConsoleWrite("----" & @CRLF) ConsoleWrite($oSbFullResponse.GetAsString() & @CRLF) ConsoleWrite("----" & @CRLF) ; ---------------------------------------------------------------------------------------------------------- ; For the 2nd request in this conversation, ask for a shorter version of the story. $oAi.InputAddText("Rewrite the story, but this time make it shorter, about one third as long.") $bSuccess = $oAi.Ask("text") If ($bSuccess = False) Then ConsoleWrite($oAi.LastErrorText & @CRLF) Exit EndIf $oSbFullResponse.Clear $bFinished = False While Not $bFinished Local $iResult = $oAi.PollAi($bAbortFlag) If ($iResult = 1) Then ; We have output waiting. It should be instantly available. The maxWaitMs is just-in-case. $bSuccess = $oAi.NextAiEvent($iMaxWaitMs,$oSbEventName,$oSbDelta) If ($bSuccess = False) Then ConsoleWrite($oAi.LastErrorText & @CRLF) Exit EndIf ; Some AI providers send many "empty" events. Just ignore them. If (Not $oSbEventName.ContentsEqual("empty",True)) Then ; The delta contains the new output. This could be emitted to a display or the terminal ; as real-time output. If ($oSbEventName.ContentsEqual("delta",True)) Then ; This example will emit each delta to its own line. ConsoleWrite($oSbDelta.GetAsString() & @CRLF) ; Accumulate the delta's so we can show the full response later. $oSbFullResponse.AppendSb($oSbDelta) Else ; A streaming AI response is always terminated by a single "null_terminator" event. $bFinished = $oSbEventName.ContentsEqual("null_terminator",True) EndIf EndIf Else If ($iResult = 0) Then ; Nothing is immediately available. Sleep for 1/10 of a second before polling again. $oAi.SleepMs 100 Else ; Something failed.. ConsoleWrite($oAi.LastErrorText & @CRLF) $bFinished = True EndIf EndIf Wend ConsoleWrite("----" & @CRLF) ConsoleWrite($oSbFullResponse.GetAsString() & @CRLF)  | 
  ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.