{"id":4288,"date":"2025-02-28T10:37:08","date_gmt":"2025-02-28T18:37:08","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/semantic-kernel\/?p=4288"},"modified":"2025-02-28T10:37:08","modified_gmt":"2025-02-28T18:37:08","slug":"release-the-agents-sk-agents-framework-rc1","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/agent-framework\/release-the-agents-sk-agents-framework-rc1\/","title":{"rendered":"Release the Agents! SK Agents Framework RC1"},"content":{"rendered":"<div><strong>Semantic Kernel Agent Framework Reaches Release Candidate 1<\/strong><\/div>\n<p>We&#8217;re excited to announce that with the release of Semantic Kernel 1.40 (<a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.SemanticKernel\">.NET<\/a>) and 1.22.0 (<a href=\"https:\/\/pypi.org\/project\/semantic-kernel\/\">Python<\/a>), we&#8217;re elevating the Semantic Kernel Agent Framework to <em>Release Candidate 1<\/em>. This marks a significant milestone in our journey toward providing a robust, versatile framework for building AI agents for enterprise applications.<\/p>\n<h5>Code Sample: Creating a Chat Agent with tool plugins<\/h5>\n<div>Creating an agent with Semantic Kernel is easy! Let&#8217;s look at a simple Python example that demonstrates how to create a chat completion agent that answers questions about a menu using Semantic Kernel plugins:<\/div>\n<div><\/div>\n<div>\n<pre class=\"prettyprint language-json\"><code class=\"language-json\">pip install semantic-kernel<\/code><\/pre>\n<pre class=\"prettyprint language-py\"><code class=\"language-py\"># Define a sample plugin for the menu\r\nclass MenuPlugin:\r\n\u00a0 \u00a0 \"\"\"A sample Menu Plugin used for the concept sample.\"\"\"\r\n\u00a0 \u00a0 @kernel_function(description=\"Provides a list of specials from the menu.\")\r\n\u00a0 \u00a0 def get_specials(self) -&gt; Annotated[str, \"Returns the specials from the menu.\"]:\r\n\u00a0 \u00a0 \u00a0 \u00a0 return \"\"\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 Special Soup: Clam Chowder\r\n\u00a0 \u00a0 \u00a0 \u00a0 Special Salad: Cobb Salad\r\n\u00a0 \u00a0 \u00a0 \u00a0 Special Drink: Chai Tea\r\n\u00a0 \u00a0 \u00a0 \u00a0 \"\"\"\r\n\u00a0 \u00a0 @kernel_function(description=\"Provides the price of the requested menu item.\")\r\n\u00a0 \u00a0 def get_item_price(\r\n\u00a0 \u00a0 \u00a0 \u00a0 self, menu_item: Annotated[str, \"The name of the menu item.\"]\r\n\u00a0 \u00a0 ) -&gt; Annotated[str, \"Returns the price of the menu item.\"]:\r\n\u00a0 \u00a0 \u00a0 \u00a0 return \"$9.99\"\r\n\r\nasync def main():\r\n\u00a0 \u00a0 agent = ChatCompletionAgent(\r\n\u00a0 \u00a0 \u00a0 \u00a0 service=OpenAzureAIChatCompletion(),\r\n\u00a0 \u00a0 \u00a0 \u00a0 name=\"HostAgent\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 instructions=\"Answer questions about the menu.\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 plugins=[MenuPlugin()],\r\n\u00a0 \u00a0 )\r\n\u00a0 \u00a0 chat_history = ChatHistory()\r\n\u00a0 \u00a0 chat_history.add_user_message(\"What is the special soup and how much does it cost?\")\r\n\u00a0 \u00a0 response = await agent.get_response(chat_history)\r\n\u00a0 \u00a0 print(f\"# {response.name}: {response.content}\")<\/code><\/pre>\n<\/div>\n<div>You can see this full sample here: <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/blob\/main\/python\/samples\/getting_started_with_agents\/chat_completion\/step3_chat_completion_agent_plugin_simple.py\">Chat Completion Agent with Plugins<\/a>.<\/div>\n<div><\/div>\n<div>The same functionality is available in C# with equally clean syntax:<\/div>\n<div>\n<pre class=\"prettyprint language-json\"><code class=\"language-json\">dotnet add package Microsoft.SemanticKernel\r\ndotnet add package Microsoft.SemanticKernel.Agents.core\r\ndotnet add package Microsoft.SemanticKernel.core\r\ndotnet add package Microsoft.SemanticKernel.Connectors.AzureOpenAI<\/code><\/pre>\n<\/div>\n<div>\n<pre class=\"prettyprint language-cs language-csharp\"><code class=\"language-cs language-csharp\">var builder = Kernel.CreateBuilder();\r\nbuilder.AddAzureOpenAIChatCompletion(\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Env.GetString(\"OPENAI_CHAT_MODEL_ID\"),\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Env.GetString(\"OPENAI_API_KEY\"));\r\nvar kernel = builder.Build();\r\n\r\nChatCompletionAgent agent = new()\r\n{\r\n\u00a0 \u00a0 Instructions = \"Answer questions about the menu.\",\r\n\u00a0 \u00a0 Name = \"HostAgent\",\r\n\u00a0 \u00a0 Kernel = kernel,\r\n\u00a0 \u00a0 Arguments = new KernelArguments(new PromptExecutionSettings() {\r\n\u00a0 \u00a0 \u00a0 \u00a0 FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()\r\n\u00a0 \u00a0 }),\r\n};\r\n\r\nagent.Kernel.Plugins.Add(KernelPluginFactory.CreateFromType&lt;MenuPlugin&gt;());\r\n\r\nChatHistory chat = [];\r\nChatMessageContent message = new(AuthorRole.User, \"What is the special soup and how much does it cost?\");\r\nchat.Add(message);\r\n\r\nawait foreach (ChatMessageContent response in agent.InvokeAsync(chat))\r\n{\r\n\u00a0 \u00a0 chat.Add(response);\r\n\u00a0 \u00a0 Console.WriteLine(response.Content);\r\n\u00a0 \u00a0 \/\/ Output: # Host: The special soup is Clam Chowder for $9.99.\r\n}<\/code><\/pre>\n<\/div>\n<p>You can see this full sample here: <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/blob\/main\/dotnet\/samples\/GettingStartedWithAgents\/Step02_Plugins.cs\">Chat Completion Agent with Plugins<\/a>.<\/p>\n<h5>Multi-Provider Agent Support<\/h5>\n<div>In addition to this important milestone, we&#8217;re previewing expanded agent provider capabilities. Semantic Kernel now supports agents from:<\/div>\n<ul>\n<li>Azure AI Agent Service (<a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/main\/dotnet\/src\/Agents\/AzureAI\">C#<\/a>, <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/fd27470c86709cb86d6f61897dadedbf7a7b3421\/python\/semantic_kernel\/agents\/azure_ai\">Python)<\/a><\/li>\n<li>AutoGen (<a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/fd27470c86709cb86d6f61897dadedbf7a7b3421\/python\/semantic_kernel\/agents\/autogen\">Python<\/a>)<\/li>\n<li>AWS Bedrock (<a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/main\/dotnet\/src\/Agents\/Bedrock\">C#<\/a>, <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/fd27470c86709cb86d6f61897dadedbf7a7b3421\/python\/semantic_kernel\/agents\/bedrock\">Python<\/a>)<\/li>\n<li>Crew AI (<a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/blob\/main\/dotnet\/samples\/Concepts\/Plugins\/CrewAI_Plugin.cs\">C#<\/a>, <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/main\/python\/semantic_kernel\/core_plugins\/crew_ai\">Python<\/a>)<\/li>\n<li>OpenAI Assistants (<a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/main\/dotnet\/src\/Agents\/OpenAI\">C#<\/a>, <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/tree\/fd27470c86709cb86d6f61897dadedbf7a7b3421\/python\/semantic_kernel\/agents\/open_ai\">Python<\/a>)<\/li>\n<\/ul>\n<div>This multi-provider approach gives developers the most flexibility in choosing the right AI service for their specific use cases while maintaining a consistent development experience.<\/div>\n<div><\/div>\n<div>For example to use Azure AI Agents, when you create you agent simply use the appropriate provider class and agent definition:<\/div>\n<div>\n<pre class=\"prettyprint language-py\"><code class=\"language-py\">agent = AzureAIAgent(\r\n\u00a0 \u00a0 client=client,\r\n\u00a0 \u00a0 definition=agent_definition,\r\n)<\/code><\/pre>\n<\/div>\n<div>&#8230; and service-backed thread<\/div>\n<div>\n<pre class=\"prettyprint language-py\"><code class=\"language-py\">thread = await client.agents.create_thread()<\/code><\/pre>\n<\/div>\n<p>&#8230; and the rest is the same!<\/p>\n<h5>What&#8217;s Next?<\/h5>\n<p>This Release Candidate represents a significant step forward in our commitment to providing a unified framework for AI agent development. We know that building a stable API is important for developing and deploying applications at scale.<\/p>\n<p>We encourage you to try out these new capabilities and let us know what you think. Your input is invaluable as we work toward a full release in the coming weeks.<\/p>\n<p>For more information, check out our <a href=\"https:\/\/learn.microsoft.com\/en-us\/semantic-kernel\/\">documentation<\/a>\u00a0and examples on GitHub, and join the conversation in our <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\/discussions\">community channels<\/a>.<\/p>\n<p>Next up, the team is focusing on integration with AutoGen to build amazing multi-agent systems! Stay tuned for more updates as we continue to evolve the Semantic Kernel Agent Framework.<\/p>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Semantic Kernel Agent Framework Reaches Release Candidate 1 We&#8217;re excited to announce that with the release of Semantic Kernel 1.40 (.NET) and 1.22.0 (Python), we&#8217;re elevating the Semantic Kernel Agent Framework to Release Candidate 1. This marks a significant milestone in our journey toward providing a robust, versatile framework for building AI agents for enterprise [&hellip;]<\/p>\n","protected":false},"author":173663,"featured_media":2808,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[17,1],"tags":[88],"class_list":["post-4288","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","category-semantic-kernel","tag-agents"],"acf":[],"blog_post_summary":"<p>Semantic Kernel Agent Framework Reaches Release Candidate 1 We&#8217;re excited to announce that with the release of Semantic Kernel 1.40 (.NET) and 1.22.0 (Python), we&#8217;re elevating the Semantic Kernel Agent Framework to Release Candidate 1. This marks a significant milestone in our journey toward providing a robust, versatile framework for building AI agents for enterprise [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/4288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/users\/173663"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/comments?post=4288"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/4288\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/media\/2808"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/media?parent=4288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/categories?post=4288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/tags?post=4288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}