The Tavus SDK provides AIFunction tool wrappers compatible with Microsoft.Extensions.AI. These tools can be used with any IChatClient to give AI models the ability to create and manage real-time video conversations with AI replicas.
Installation
1
dotnetaddpackageTavus
Create Conversation Tool
Use AsCreateConversationTool() to create an AIFunction that starts a new real-time video conversation. Pass it to any IChatClient via ChatOptions.Tools.
1 2 3 4 5 6 7 8 9101112131415161718192021
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);AIFunctioncreateConversationTool=tavusClient.AsCreateConversationTool();// Use with any IChatClient (OpenAI, Anthropic, Ollama, etc.)IChatClientchatClient=/* your chat client */;varoptions=newChatOptions{Tools=[createConversationTool],};varresponse=awaitchatClient.GetResponseAsync("Start a video conversation using persona p_abc123",options);Console.WriteLine(response.Text);
List Conversations Tool
Use AsListConversationsTool() to create an AIFunction that lists all conversations.
1 2 3 4 5 6 7 8 91011121314151617181920
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);AIFunctionlistConversationsTool=tavusClient.AsListConversationsTool();IChatClientchatClient=/* your chat client */;varoptions=newChatOptions{Tools=[listConversationsTool],};varresponse=awaitchatClient.GetResponseAsync("What conversations do I have?",options);Console.WriteLine(response.Text);
Get Conversation Tool
Use AsGetConversationTool() to create an AIFunction that retrieves details of a specific conversation including its transcript.
1 2 3 4 5 6 7 8 91011121314151617181920
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);AIFunctiongetConversationTool=tavusClient.AsGetConversationTool();IChatClientchatClient=/* your chat client */;varoptions=newChatOptions{Tools=[getConversationTool],};varresponse=awaitchatClient.GetResponseAsync("Get the details and transcript of conversation c_abc123",options);Console.WriteLine(response.Text);
End Conversation Tool
Use AsEndConversationTool() to create an AIFunction that ends an active conversation.
1 2 3 4 5 6 7 8 91011121314151617181920
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);AIFunctionendConversationTool=tavusClient.AsEndConversationTool();IChatClientchatClient=/* your chat client */;varoptions=newChatOptions{Tools=[endConversationTool],};varresponse=awaitchatClient.GetResponseAsync("End conversation c_abc123",options);Console.WriteLine(response.Text);
List Personas Tool
Use AsListPersonasTool() to create an AIFunction that lists all available personas.
1 2 3 4 5 6 7 8 91011121314151617181920
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);AIFunctionlistPersonasTool=tavusClient.AsListPersonasTool();IChatClientchatClient=/* your chat client */;varoptions=newChatOptions{Tools=[listPersonasTool],};varresponse=awaitchatClient.GetResponseAsync("What personas are available?",options);Console.WriteLine(response.Text);
List Replicas Tool
Use AsListReplicasTool() to create an AIFunction that lists all available replicas (AI video avatars).
1 2 3 4 5 6 7 8 91011121314151617181920
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);AIFunctionlistReplicasTool=tavusClient.AsListReplicasTool();IChatClientchatClient=/* your chat client */;varoptions=newChatOptions{Tools=[listReplicasTool],};varresponse=awaitchatClient.GetResponseAsync("What replicas do I have and what is their training status?",options);Console.WriteLine(response.Text);
Combining All Tools
You can provide all tools simultaneously, letting the model decide which to use.
usingMicrosoft.Extensions.AI;usingTavus;vartavusClient=newTavusClient(apiKey:Environment.GetEnvironmentVariable("TAVUS_API_KEY")!);varoptions=newChatOptions{Tools=[ tavusClient.AsCreateConversationTool(), tavusClient.AsListConversationsTool(), tavusClient.AsGetConversationTool(), tavusClient.AsEndConversationTool(), tavusClient.AsListPersonasTool(), tavusClient.AsListReplicasTool(), ],};IChatClientchatClient=/* your chat client */;varmessages=newList<ChatMessage>{new(ChatRole.User,"List my available personas and replicas, then start a conversation "+"using the first persona."),};while(true){varresponse=awaitchatClient.GetResponseAsync(messages,options);messages.AddRange(response.ToChatMessages());if(response.FinishReason==ChatFinishReason.ToolCalls){varresults=awaitresponse.CallToolsAsync(options);messages.AddRange(results);continue;}Console.WriteLine(response.Text);break;}
Tool Details
Method
Tool Name
Description
AsCreateConversationTool()
CreateConversation
Creates a real-time video conversation with a Tavus AI replica
AsListConversationsTool()
ListConversations
Lists all video conversations with status
AsGetConversationTool()
GetConversation
Gets details and transcript of a specific conversation