Sample code for 30+ languages & platforms
Delphi ActiveX

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 Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
ai: TChilkatAi;
systemMsg: WideString;
developerMsg: WideString;
conversationName: WideString;
sbResponse: TChilkatStringBuilder;
json: TChilkatJsonObject;

begin
success := 0;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

ai := TChilkatAi.Create(Self);

// The provider can be "openai", "google", "claude", "deepseek", "xai", or "perplexity".
// Support for additional providers will be added in future versions of Chilkat.
ai.Provider := 'claude';

// Use your provider's API key.
ai.ApiKey := 'MY_API_KEY';

// Choose a model.
ai.Model := '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 := 'You are a helpful assistant';
developerMsg := 'Respond only with markdown';
conversationName := 'test_conversation';
ai.NewConvo(conversationName,systemMsg,developerMsg);

// -------------------------------------------------------------------------------------------
// Make the first request...
// Add a text input.
ai.InputAddText('Say Hello');

// Ask the AI for text output.
success := ai.Ask('text');
if (success = 0) then
  begin
    Memo1.Lines.Add(ai.LastErrorText);
    Exit;
  end;

// Get the text response.
sbResponse := TChilkatStringBuilder.Create(Self);
ai.GetOutputTextSb(sbResponse.ControlInterface);
Memo1.Lines.Add(sbResponse.GetAsString());
Memo1.Lines.Add('----');

// -------------------------------------------------------------
// 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.
ai.InputAddText('Thanks for saying Hello. Please give me a 2 sentence bit of wisdom from Confucious.');
success := ai.Ask('text');
if (success = 0) then
  begin
    Memo1.Lines.Add(ai.LastErrorText);
    Exit;
  end;

// Get the text response.
sbResponse.Clear();
ai.GetOutputTextSb(sbResponse.ControlInterface);
Memo1.Lines.Add(sbResponse.GetAsString());

// 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 := TChilkatJsonObject.Create(Self);
ai.ExportConvo(conversationName,json.ControlInterface);
json.EmitCompact := 0;
Memo1.Lines.Add(json.Emit());

// 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. 🏔️"
//         }
//       ]
//     }
//   ]
// }
end;