PureBasic
PureBasic
AI: Simple Conversation
See more AI Examples
Initiates a conversation and sends two requests. The second request includes the transcript of the messages between the user and assistant from the first request.Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkAi.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, "claude")
; Use your provider's API key.
CkAi::setCkApiKey(ai, "MY_API_KEY")
; Choose a model.
CkAi::setCkModel(ai, "claude-opus-4-1-20250805")
; Create a new conversation to be maintained locally in memory.
; If the conversation is the first to be created, it is also automatically selected.
systemMsg.s = "You are a helpful assistant"
developerMsg.s = "Respond only with markdown"
conversationName.s = "test_conversation"
CkAi::ckNewConvo(ai,conversationName,systemMsg,developerMsg)
; -------------------------------------------------------------------------------------------
; Make the first request...
; Add a text input.
CkAi::ckInputAddText(ai,"Say Hello")
; Ask the AI for text output.
success = CkAi::ckAsk(ai,"text")
If success = 0
Debug CkAi::ckLastErrorText(ai)
CkAi::ckDispose(ai)
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)
Debug "----"
; -------------------------------------------------------------
; The response is in markdown format.
; Also see Markdown to HTML Conversion Examples.
; -------------------------------------------------------------
; Sample output:
; # Hello! 👋
; ## Welcome!
; It's **great** to meet you. How can I *assist* you today?
; ---
; Feel free to ask me anything, and I'll respond in `markdown` format.
; -------------------------------------------------------------------------------------------
; Send the 2nd request in the conversation.
CkAi::ckInputAddText(ai,"Thanks for saying Hello. Please give me a 2 sentence bit of wisdom from Confucious.")
success = CkAi::ckAsk(ai,"text")
If success = 0
Debug CkAi::ckLastErrorText(ai)
CkAi::ckDispose(ai)
CkStringBuilder::ckDispose(sbResponse)
ProcedureReturn
EndIf
; Get the text response.
CkStringBuilder::ckClear(sbResponse)
CkAi::ckGetOutputTextSb(ai,sbResponse)
Debug CkStringBuilder::ckGetAsString(sbResponse)
; Sample output:
; ## Wisdom from Confucius
; > *"The man who moves a mountain begins by carrying away small stones. It does not matter how slowly you go as long as you do not stop."*
; These words remind us that **persistence** and **patience** are the keys to achieving even the most daunting goals. 🏔️
; -------------------------------------------------------------------------------------------
; Look at the conversation so far...
;
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAi::ckExportConvo(ai,conversationName,json)
CkJsonObject::setCkEmitCompact(json, 0)
Debug CkJsonObject::ckEmit(json)
; Note: The conversation transcript format exported and imported by Chilkat is always the OpenAI format,
; regardless of the AI provider. (Chilkat translates the format from OpenAI to whatever is needed by the actual AI provider being used.)
; {
; "input": [
; {
; "role": "system",
; "content": [
; {
; "type": "input_text",
; "text": "You are a helpful assistant"
; }
; ]
; },
; {
; "role": "developer",
; "content": [
; {
; "type": "input_text",
; "text": "Respond only with markdown"
; }
; ]
; },
; {
; "role": "user",
; "content": [
; {
; "type": "input_text",
; "text": "Say Hello"
; }
; ]
; },
; {
; "role": "assistant",
; "content": [
; {
; "type": "output_text",
; "text": "# Hello! 👋\n\n**Welcome!** It's *great* to meet you.\n\nHow can I assist you today?"
; }
; ]
; },
; {
; "role": "user",
; "content": [
; {
; "type": "input_text",
; "text": "Thanks for saying Hello. Please give me a 2 sentence bit of wisdom from Confucious."
; }
; ]
; },
; {
; "role": "assistant",
; "content": [
; {
; "type": "output_text",
; "text": "## Wisdom from Confucius\n\n> *\"The man who moves a mountain begins by carrying away small stones. It does not matter how slowly you go as long as you do not stop.\"*\n\nThese words remind us that **persistence** and **patience** are the keys to achieving even the most daunting goals. 🏔️"
; }
; ]
; }
; ]
; }
CkAi::ckDispose(ai)
CkStringBuilder::ckDispose(sbResponse)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure