Assistants
Overview
Assistants in LlmTornado are AI agents that can use tools, access files, and maintain persistent conversation threads. They provide a higher-level abstraction for building complex AI applications with state management, tool calling, and file search capabilities. Assistants are perfect for building chatbots, virtual assistants, and automated workflows.
Quick Start
csharp
using LlmTornado;
using LlmTornado.Assistants;
using LlmTornado.Chat.Models;
TornadoApi api = new TornadoApi("your-api-key");
// Create an assistant
HttpCallResult<Assistant> result = await api.Assistants.CreateAssistantAsync(
new CreateAssistantRequest(
ChatModel.OpenAi.Gpt4.O241120,
"My Assistant",
"A helpful coding assistant",
"You are a helpful assistant that helps with programming questions."));
Console.WriteLine($"Assistant created with ID: {result.Data.Id}");Prerequisites
- The LlmTornado package installed
- A valid API key with assistants access
- Understanding of Chat Basics
- Familiarity with Threads for conversations
Basic Usage
Create a Simple Assistant
csharp
HttpCallResult<Assistant> response = await api.Assistants.CreateAssistantAsync(
new CreateAssistantRequest(
ChatModel.OpenAi.Gpt4.O241120,
"Customer Support Bot",
"Helps with customer inquiries",
"You are a friendly customer support assistant."));
Assistant assistant = response.Data;
Console.WriteLine($"Created assistant: {assistant.Name}");List All Assistants
csharp
HttpCallResult<ListResponse<Assistant>> response =
await api.Assistants.ListAssistantsAsync();
foreach (Assistant assistant in response.Data.Items)
{
Console.WriteLine($"{assistant.Id}: {assistant.Name}");
}Retrieve an Assistant
csharp
HttpCallResult<Assistant> response =
await api.Assistants.GetAssistantAsync("assistant_id_here");
Assistant assistant = response.Data;
Console.WriteLine($"Name: {assistant.Name}");
Console.WriteLine($"Model: {assistant.Model}");
Console.WriteLine($"Instructions: {assistant.Instructions}");Update an Assistant
csharp
HttpCallResult<Assistant> response = await api.Assistants.ModifyAssistantAsync(
"assistant_id",
new ModifyAssistantRequest
{
Name = "Updated Assistant Name",
Instructions = "New instructions for the assistant"
});Delete an Assistant
csharp
HttpCallResult<bool> result = await api.Assistants.DeleteAssistantAsync("assistant_id");
Console.WriteLine($"Deleted: {result.Data}");Advanced Usage
Assistant with Function Tools
Create an assistant that can call functions:
csharp
HttpCallResult<Assistant> response = await api.Assistants.CreateAssistantAsync(
new CreateAssistantRequest(
null,
"Weather Assistant",
"Provides weather information",
"You are a helpful assistant with the ability to check weather.")
{
Tools = new List<AssistantTool>
{
new AssistantToolFunction(new ToolFunctionConfig(
"get_weather",
"Get current temperature for a given city",
new
{
type = "object",
properties = new
{
location = new
{
type = "string",
description = "City and Country"
}
},
required = new List<string> {"location"},
additionalProperties = false
}
))
}
});
Console.WriteLine($"Function-enabled assistant: {response.Data.Id}");Assistant with File Search
Create an assistant with file search capabilities:
csharp
// First, upload a file
HttpCallResult<TornadoFile> fileResult = await api.Files.Upload(
"knowledge_base.pdf",
FilePurpose.Assistants);
// Create vector store with the file
HttpCallResult<VectorStore> vectorStore = await api.VectorStores.Create(
new CreateVectorStoreRequest
{
Name = "Knowledge Base",
FileIds = new List<string> { fileResult.Data.Id }
});
// Create assistant with file search
HttpCallResult<Assistant> response = await api.Assistants.CreateAssistantAsync(
new CreateAssistantRequest(
ChatModel.OpenAi.Gpt4.O241120,
"Knowledge Assistant",
"Answers questions from documents",
"You help users find information in uploaded documents.")
{
Tools = new List<AssistantTool>
{
new AssistantToolFileSearch()
},
ToolResources = new ToolResources
{
FileSearch = new FileSearchToolResources
{
VectorStoreIds = new List<string> { vectorStore.Data.Id }
}
}
});Assistant with Code Interpreter
Enable code execution capabilities:
csharp
HttpCallResult<Assistant> response = await api.Assistants.CreateAssistantAsync(
new CreateAssistantRequest(
ChatModel.OpenAi.Gpt4.O241120,
"Data Analyst",
"Analyzes data and creates visualizations",
"You are a data analyst that can write and execute Python code.")
{
Tools = new List<AssistantTool>
{
new AssistantToolCodeInterpreter()
}
});Best Practices
- Clear Instructions - Provide detailed system instructions
- Tool Selection - Only enable tools the assistant needs
- Resource Management - Clean up unused assistants
- Metadata Usage - Tag assistants with identifying metadata
- Version Control - Track assistant configurations
Common Issues
Assistant Not Responding
- Solution: Check if the model is available and instructions are clear
- Prevention: Test with simple queries first
Tool Calls Failing
- Solution: Verify tool definitions and function implementations
- Prevention: Validate tool schemas before deployment
File Search Not Working
- Solution: Ensure files are uploaded and vector store is attached
- Prevention: Verify file formats and content
API Reference
CreateAssistantRequest
ChatModel Model- Model to usestring Name- Assistant namestring Description- Short descriptionstring Instructions- System instructionsList<AssistantTool> Tools- Available toolsToolResources ToolResources- Tool-specific resources
Assistant
string Id- Unique identifierstring Name- Assistant namestring Model- Model being usedstring Instructions- System instructionsList<AssistantTool> Tools- Configured toolsDictionary<string, string> Metadata- Custom metadata
AssistantTool Types
AssistantToolFunction- Custom function callingAssistantToolFileSearch- Document searchAssistantToolCodeInterpreter- Code execution
Related Topics
- Threads - Managing conversations with assistants
- Vector Stores - File-based knowledge bases
- Files - File management
- Agents - Higher-level agent abstractions