Skip to content

Basic Agent

Your First Chat Bot

csharp
using LlmTornado;
using LlmTornado.Agents;
using LlmTornado.Chat.Models;

TornadoApi api = new TornadoApi("your-api-key");

TornadoAgent agent = new TornadoAgent(api, ChatModel.OpenAi.Gpt41.V41Mini, instructions: "You are a useful assistant.");

Conversation conv = agent.Client.Chat.CreateConversation(agent.Options);

Console.Write("\n[Assistant]: Hello");
string topic = "";
while (topic != "exit")
{
    Console.Write("\n[User]: ");
    topic = Console.ReadLine();
    if (topic == "exit") break;
    Console.Write("\n[Assistant]: ");
    conv = await agent.RunAsync(topic, appendMessages: conv.Messages.ToList());
    Console.Write(conv.Messages.Last().Content);
}

Setup API key

csharp
TornadoApi api = new TornadoApi("your-api-key");

Create the agent

csharp
TornadoAgent agent = new TornadoAgent(api, ChatModel.OpenAi.Gpt41.V41Mini, instructions: "You are a useful assistant.");

Setup a Conversation to keep message history

csharp
Conversation conv = agent.Client.Chat.CreateConversation(agent.Options);

Setup a simple chat loop to continue conversation

csharp
Console.Write("\n[Assistant]: Hello");
string topic = "";
while (topic != "exit")
{
    Console.Write("\n[User]: ");
    topic = Console.ReadLine();
    if (topic == "exit") break;
    Console.Write("\n[Assistant]: ");

    ...
}

Invoke the agent

Using conv.Messages.ToList() to append message history for each iteration

csharp
conv = await agent.RunAsync(topic, appendMessages: conv.Messages.ToList());

Streaming Chat Bot

Just need to set streaming:true in agent.RunAsync() along with a event handler onAgentRunnerEvent: runEventHandler

csharp
TornadoAgent agent = new TornadoAgent(
    api, 
    ChatModel.OpenAi.Gpt41.V41Mini, instructions: 
    "You are a useful assistant.", s
    treaming:true);

Conversation conv = agent.Client.Chat.CreateConversation(agent.Options);

Console.WriteLine("[Assistant]: Hello");
string topic = "";
while (topic != "exit")
{
    Console.Write("[User]: ");
    topic = Console.ReadLine();
    if (topic == "exit") break;
    Console.Write("[Assistant]: ");
    conv = await agent.RunAsync(
        topic, appendMessages: 
        conv.Messages.ToList(), 
        streaming: true, 
        onAgentRunnerEvent: runEventHandler);
    Console.WriteLine();
}

public static ValueTask runEventHandler(AgentRunnerEvents runEvent)
{
    switch (runEvent)
    {
        case AgentRunnerStreamingEvent streamingEvent:
            if (streamingEvent.ModelStreamingEvent is ModelStreamingOutputTextDeltaEvent deltaTextEvent)
            {
                Console.Write(deltaTextEvent.DeltaText); // Write the text delta directly
            }
            break;
        default:
            break;
    }
    return ValueTask.CompletedTask;
}