A detailed comparison of ChatCompletionAgent and AssistantAgent in Semantic Kernel for C#/.NET. ChatCompletionAgent is a lightweight, model-agnostic wrapper around any chat completion service (OpenAI, Azure OpenAI, Ollama) with in-memory state management you control. AssistantAgent bridges to OpenAI's Assistants API, providing cloud-managed persistent threads, built-in code interpreter, and file search at the cost of vendor lock-in and higher pricing. The post covers code examples for both, a side-by-side technical comparison table, when to use each, migration considerations, mixing both in AgentGroupChat, and cost/performance tradeoffs. The recommendation is to default to ChatCompletionAgent and only adopt AssistantAgent when code execution or managed file search are genuinely needed.
Table of contents
ChatCompletionAgent: The Lightweight AgentAssistantAgent: OpenAI Assistants API IntegrationChatCompletionAgent vs AssistantAgent: A Technical ComparisonWhen to Use ChatCompletionAgentWhen to Use AssistantAgentMigration Path: Going from ChatCompletionAgent to AssistantAgentUsing Both Together in AgentGroupChatCost and Performance TradeoffsFrequently Asked QuestionsConclusionSort: