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;
}