<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Pulumi Copilot Series</title><link>https://www.pulumi.com/blog/series/pulumi-copilot/</link><description>Pulumi blog posts: Pulumi Copilot Series.</description><language>en-us</language><pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate><item><title>Pulumi Copilot is Now Available in VS Code</title><link>https://www.pulumi.com/blog/copilot-in-vscode/</link><pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/copilot-in-vscode/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/copilot-in-vscode/index.png" /&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Learn about Neo →&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Programming languages offer dozens of advantages for writing Infrastructure as Code (IaC). One of them is that Large Language Models are effective at using general-purpose programming languages, thanks to the vast amount of high-quality training data available. Building on this advantage, we introduced Pulumi AI and Pulumi Copilot last year to enhance Infrastructure-as-Code development with generative AI capabilities. These tools have significantly streamlined infrastructure deployment for tens of thousands of developers.&lt;/p&gt;
&lt;p&gt;Today, we are thrilled to announce that Pulumi Copilot is now available directly within &lt;a href="https://marketplace.visualstudio.com/items?itemName=pulumi.pulumi-vscode-copilot"&gt;Pulumi Copilot Chat Extension&lt;/a&gt;. By simply typing @pulumi in Copilot Chat, developers can now access the power of Pulumi Copilot right within their IDE, saving them time on writing IaC and getting infrastructure deployed.&lt;/p&gt;
&lt;h2 id="video-walk-through"&gt;Video Walk Through&lt;/h2&gt;
&lt;p&gt;Hear Adam and Eron from Pulumi walk through this new feature in our PulumiTV introduction to the Visual Studio Code extension.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/qdwIImlI-rA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-is-pulumi-copilot"&gt;What is Pulumi Copilot?&lt;/h2&gt;
&lt;p&gt;Pulumi Copilot is an AI-powered conversational assistant that seamlessly integrates with Pulumi Cloud, helping users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explore and manage cloud infrastructure&lt;/li&gt;
&lt;li&gt;Gain insights into resources, policies, and deployments&lt;/li&gt;
&lt;li&gt;Troubleshoot errors and optimize configurations&lt;/li&gt;
&lt;li&gt;Author and deploy Pulumi IaC more effectively&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pulumi Copilot combines industry-leading AI models with Pulumi specific knowledge like the latest versions of providers, IaC best practices, and context from Pulumi Cloud on your environment.&lt;/p&gt;
&lt;h3 id="the-pulumi-copilot-rest-api"&gt;The Pulumi Copilot REST API&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://marketplace.visualstudio.com/items?itemName=pulumi.pulumi-vscode-copilot"&gt;Pulumi Tools Visual Studio Code extension&lt;/a&gt; is powered by the recently announced &lt;a href="https://www.pulumi.com/blog/pulumi-copilot-rest"&gt;Pulumi Copilot REST API&lt;/a&gt;, which enables developers to integrate Pulumi Copilot&amp;rsquo;s capabilities into their own tools and platforms. Just as we&amp;rsquo;ve built this extension to bring Pulumi Copilot directly into your development environment, you can use the same REST API to create your own innovative integrations, whether that&amp;rsquo;s a custom CLI tool, a chat bot, or another IDE extension. The API&amp;rsquo;s support for multi-turn conversations and contextual understanding makes it possible to build rich, interactive experiences like the one we&amp;rsquo;re delivering today.&lt;/p&gt;
&lt;h2 id="how-to-use-pulumi-copilot-in-visual-studio-code"&gt;How to Use Pulumi Copilot in Visual Studio Code&lt;/h2&gt;
&lt;p&gt;Using Pulumi Copilot in Visual Studio Code (VS Code) is as simple as 1-2-3:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the &lt;a href="https://marketplace.visualstudio.com/items?itemName=pulumi.pulumi-vscode-copilot"&gt;Pulumi VS Code extension&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open VS Code and navigate to Copilot Chat (icon to the right of the search bar)&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;@pulumi&lt;/code&gt; to activate Pulumi Copilot&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can then ask questions about your infrastructure, generate code, check deployment status, debug Pulumi errors, and more.&lt;/p&gt;
&lt;p&gt;This seamless integration brings Pulumi&amp;rsquo;s intelligence directly into the developer workflow.&lt;/p&gt;
&lt;p&gt;Pulumi Copilot respects all role-based access control (RBAC) settings in Pulumi Cloud, ensuring that AI-generated responses are scoped only to authorized users within an organization.&lt;/p&gt;
&lt;h2 id="key-use-cases"&gt;Key Use Cases&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s explore four powerful ways to use Pulumi Copilot in VS Code:&lt;/p&gt;
&lt;h3 id="infrastructure-code-generation"&gt;Infrastructure Code Generation&lt;/h3&gt;
&lt;p&gt;With Pulumi Copilot in VS Code, developers can generate Pulumi programs for new use cases, solving the blank page problem and getting you from 0 to 0.9.&lt;/p&gt;
&lt;p&gt;Simply describe what you want to build and Pulumi Copilot will generate the infrastructure code for you. For example, ask &amp;ldquo;Create an AWS S3 bucket with versioning enabled and encrypted with a KMS key&amp;rdquo; and Copilot will generate the complete Pulumi program. Or ask Pulumi Copilot to extend an existing project such as adding a ManagedNodeGroup to your AWS EKS cluster.&lt;/p&gt;
&lt;h3 id="terraform-to-pulumi-migration"&gt;Terraform to Pulumi Migration&lt;/h3&gt;
&lt;p&gt;Migrating from Terraform to Pulumi? Just point Copilot at your Terraform files and ask it to convert them. For example:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open your &lt;code&gt;main.tf&lt;/code&gt; file in VS Code&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;@pulumi convert this Terraform configuration to TypeScript&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copilot will analyze your Terraform code and generate equivalent Pulumi code in &lt;code&gt;index.ts&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The conversion maintains your existing resource configurations while taking advantage of Pulumi&amp;rsquo;s native programming language features.&lt;/p&gt;
&lt;h3 id="resource-discovery"&gt;Resource Discovery&lt;/h3&gt;
&lt;p&gt;Pulumi Copilot can search across your entire infrastructure to find resource usage patterns. Ask questions like &amp;ldquo;Do we use AWS Lambda functions in any other stacks?&amp;rdquo; or &amp;ldquo;Show me all S3 buckets with public access enabled.&amp;rdquo; Copilot will search your codebase and Pulumi Cloud to provide comprehensive answers about your infrastructure.&lt;/p&gt;
&lt;h3 id="error-resolution"&gt;Error Resolution&lt;/h3&gt;
&lt;p&gt;When you encounter errors in the terminal during Pulumi operations, Copilot can help explain and resolve them. Simply copy the error message and ask Copilot to explain it. For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Error: Error creating S3 Bucket &lt;span class="o"&gt;(&lt;/span&gt;my-bucket&lt;span class="o"&gt;)&lt;/span&gt;: BucketAlreadyExists: The requested bucket name is not available
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copilot will explain the error in plain language, suggest potential solutions, provide code examples for fixing the issue, and reference similar issues from your organization&amp;rsquo;s history.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Pulumi Copilot is free to use for all organizations in Pulumi Cloud. Organization administrators can enable Pulumi Copilot by navigating to:
Settings &amp;gt; Access Management &amp;gt; Pulumi Copilot in the Pulumi Cloud console.&lt;/p&gt;
&lt;p&gt;Try it now in VS Code and experience AI-driven cloud infrastructure management right in your IDE.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://app.pulumi.com/signup"&gt;👉 Start Using Pulumi Copilot&lt;/a&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=pulumi.pulumi-vscode-copilot"&gt;👉 Start Using Pulumi Copilot in Visual Studio Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can&amp;rsquo;t wait to see what you build with Pulumi Copilot! 🚀&lt;/p&gt;</description><author>Meagan Cojocar</author><author>Eron Wright</author><category>releases</category><category>features</category></item><item><title>Announcing the Pulumi Copilot REST API Preview</title><link>https://www.pulumi.com/blog/pulumi-copilot-rest/</link><pubDate>Thu, 12 Dec 2024 15:15:42 -0500</pubDate><guid>https://www.pulumi.com/blog/pulumi-copilot-rest/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumi-copilot-rest/index.png" /&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Learn about Neo →&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We built Pulumi Copilot to automate a broad spectrum of cloud management activities using the power of LLMs. Since its initial release earlier this year, hundreds of customers have used Pulumi Copilot to understand and manage cloud infrastructure more effectively and securely, and it is only getting better by the day.&lt;/p&gt;
&lt;p&gt;Today, we&amp;rsquo;re excited to announce the availability of the Pulumi Copilot REST API. This new API exposes the full power of Pulumi Copilot, enabling you to integrate infrastructure AI into your own tools, applications, and platforms. While currently in preview, we are eager to get your feedback to ensure it works for anything you can dream up.&lt;/p&gt;
&lt;h2 id="enhancing-copilot-capabilities"&gt;Enhancing Copilot Capabilities&lt;/h2&gt;
&lt;p&gt;With the Copilot REST API, you can extend the Copilot capabilities available in the Pulumi Console in the following ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build Copilot capabilities into your platforms and tools, such as the CLI, development portals, Github actions and so on.&lt;/li&gt;
&lt;li&gt;Support multi-user interaction in workplace collaboration platforms such as Slack and Teams.&lt;/li&gt;
&lt;li&gt;Automate execution of Copilot queries based on scheduled triggers or events, such as deployment completions.&lt;/li&gt;
&lt;li&gt;Access Copilot from mobile clients through platforms like Slack or Teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="implementation-guide"&gt;Implementation Guide&lt;/h2&gt;
&lt;h3 id="initial-configuration"&gt;Initial Configuration&lt;/h3&gt;
&lt;p&gt;To begin using the Copilot API, set up the following environment variables:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PULUMI_COPILOT_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://api.pulumi.com/api/ai/chat/preview&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PULUMI_ACCESS_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pul-...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: You can obtain your &lt;code&gt;PULUMI_ACCESS_TOKEN&lt;/code&gt; from the Pulumi Console.&lt;/p&gt;
&lt;h3 id="understanding-cloud-context"&gt;Understanding Cloud Context&lt;/h3&gt;
&lt;p&gt;All Copilot API interactions require two essential parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Organization context through the &lt;code&gt;orgId&lt;/code&gt; field - this is conceptually similar to the organization you select in the dropdown menu on the left-hand side of the Pulumi Console&lt;/li&gt;
&lt;li&gt;Resource URL from the Pulumi Console, which must begin with &lt;code&gt;https://app.pulumi.com&lt;/code&gt; - think of this as the browser URL you see when navigating the Pulumi Console. This URL helps Copilot understand the context of your query. While you can provide the base URL (&lt;code&gt;https://app.pulumi.com&lt;/code&gt;), you can also point to specific resources or updates for more targeted queries. For example, &lt;code&gt;https://app.pulumi.com/myorg/my-demo-project/my-stack/updates/5&lt;/code&gt; would allow you to ask questions about that specific update&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These parameters provide the necessary context for queries about specific resources or updates, allowing Copilot to respond with relevant information just as it would in the Console interface.&lt;/p&gt;
&lt;h3 id="making-api-requests"&gt;Making API Requests&lt;/h3&gt;
&lt;p&gt;Here&amp;rsquo;s an example of a basic API request:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -L &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$PULUMI_COPILOT_URL&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-H &lt;span class="s2"&gt;&amp;#34;Authorization: token &lt;/span&gt;&lt;span class="nv"&gt;$PULUMI_ACCESS_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-H &lt;span class="s2"&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-d &lt;span class="s1"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;query&amp;#34;: &amp;#34;Who are the users in my org?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;state&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;client&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;cloudContext&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;orgId&amp;#34;: &amp;#34;pulumi&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;url&amp;#34;: &amp;#34;https://app.pulumi.com&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="supporting-multi-turn-conversations"&gt;Supporting Multi-turn Conversations&lt;/h3&gt;
&lt;p&gt;The API supports continuous dialogues, in which participants can refer to information shared earlier in the chat. This is supported through conversation IDs that are received with the response:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;conversationId&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;369a280c-63f3-4ee6-a13d-c1035a3d05de&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This ID enables follow-up queries that maintain context:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -L &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$PULUMI_COPILOT_URL&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-H &lt;span class="s2"&gt;&amp;#34;Authorization: token &lt;/span&gt;&lt;span class="nv"&gt;$PULUMI_ACCESS_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-H &lt;span class="s2"&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-d &lt;span class="s1"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;conversationId&amp;#34;:&amp;#34;369a280c-63f3-4ee6-a13d-c1035a3d05de&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;query&amp;#34;: &amp;#34;Who of them are admins?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;state&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;client&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;cloudContext&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;orgId&amp;#34;: &amp;#34;pulumi&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;url&amp;#34;: &amp;#34;https://app.pulumi.com&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="moving-forward"&gt;Moving Forward&lt;/h2&gt;
&lt;p&gt;As we continue to evole our AI efforts, your feedback is essential. We are particularly interested in hearing about your implementation experiences, including features that work well, areas that need improvement, or capabilities you&amp;rsquo;d like to see added. You can consult the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/copilot/api"&gt;documentation&lt;/a&gt; and peruse the &lt;a href="https://github.com/pulumi/copilot-api-samples/tree/main/samples"&gt;samples&lt;/a&gt;. Please submit any feedback by opening an &lt;a href="https://github.com/pulumi/copilot-api-samples/issues"&gt;issue&lt;/a&gt; or by reaching out to us via our &lt;a href="https://pulumi-community.slack.com/archives/C055KGGFB1N"&gt;Community Slack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can&amp;rsquo;t wait to see what you can build with Pulumi Copilot REST API!&lt;/p&gt;</description><author>Artur Laksberg</author><category>features</category><category>ai</category><category>llm</category><category>copilot</category></item><item><title>AI Engineering Lessons from Building Pulumi Copilot</title><link>https://www.pulumi.com/blog/copilot-lessons/</link><pubDate>Thu, 12 Dec 2024 13:56:13 -0500</pubDate><guid>https://www.pulumi.com/blog/copilot-lessons/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/copilot-lessons/index.png" /&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Learn about Neo →&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Building AI-powered developer tools comes with unique challenges, and now that we&amp;rsquo;ve &lt;strong&gt;&lt;a href="https://www.pulumi.com/blog/pulumi-copilot-rest/"&gt;launched our REST API&lt;/a&gt;&lt;/strong&gt;, we want to share some lessons we&amp;rsquo;ve learned building Pulumi Copilot, an AI assistant for cloud infrastructure.&lt;/p&gt;
&lt;p&gt;One of the big challenges was determining what &amp;lsquo;working&amp;rsquo; really meant. So when a message landed in our feedback channel after months of rigorous testing - &amp;lsquo;Your tool doesn&amp;rsquo;t know anything!&amp;rsquo; - it caused some mild panic. We&amp;rsquo;d just made some changes, so we braced for the worst. But our evals were still looking strong, so what was going on?&lt;/p&gt;
&lt;p&gt;The user was attempting to force-delete a stack that still contained resources. But when we dug deeper, we found something fascinating: Copilot had confidently suggested a &amp;lsquo;&amp;ndash;force&amp;rsquo; flag, which would have been a logical solution&amp;hellip; except this flag doesn&amp;rsquo;t exist in Pulumi. Our AI was hallucinating exactly what the user wanted. But this wasn&amp;rsquo;t just a bug - it was the first of many insights that would reshape how we approach AI-powered tools.&lt;/p&gt;
&lt;p&gt;To understand how we got here - and why this &amp;ldquo;error&amp;rdquo; actually taught us something valuable about our product - let&amp;rsquo;s start with the core challenge we faced: balancing traditional software engineering with this new world of prompt engineering.&lt;/p&gt;
&lt;h2 id="engineering-for-reality-prompt-engineering-vs-software-engineering"&gt;Engineering for Reality: Prompt Engineering vs Software Engineering&lt;/h2&gt;
&lt;p&gt;&lt;img src="soft-eng.png" alt="Software Engineering vs Prompt Engineering"&gt;&lt;/p&gt;
&lt;p&gt;When building LLM-powered applications, it&amp;rsquo;s tempting to throw every task at the model. Modern LLMs can generate code, format text, and create clickable links. But this approach carries hidden costs.&lt;/p&gt;
&lt;p&gt;Working on Copilot taught us a key lesson: let the LLM do what it does best and use good old imperative code for everything else.&lt;/p&gt;
&lt;p&gt;Take a seemingly simple feature: listing a user&amp;rsquo;s Pulumi stacks with clickable links based on data from a backend API. Our first implementation used a complex prompt instructing the LLM to construct URLs in the format &lt;code&gt;app.pulumi.com/org/project/stack&lt;/code&gt;. The prompt explained the format, provided examples, and asked the LLM to generate these links from JSON data it had.&lt;/p&gt;
&lt;p&gt;It worked - almost all of the time. But we were seeing occasional malformed URLs and more importantly, this was burning input tokens (and money) on a complicated prompt that made AI construct strings that could be deterministically generated.&lt;/p&gt;
&lt;p&gt;The solution was straightforward: generate the full links in the backend service and include them directly in the context. The LLM then needs no instructions on how to create them. Simple stuff, but it gave faster responses and perfect URLs at a lower cost.&lt;/p&gt;
&lt;p&gt;When you find yourself writing elaborate prompts to handle structured data transformations, stop and ask: Could traditional code do this better? Could this be decomposed so that the LLM does less?&lt;/p&gt;
&lt;p&gt;To validate this approach, we tested Copilot ourselves to see what worked.&lt;/p&gt;
&lt;h2 id="copilot-in-action-real-world-dogfooding"&gt;Copilot in Action: Real-World Dogfooding&lt;/h2&gt;
&lt;p&gt;The internal testing phase taught us invaluable lessons about how people would actually use the tool. We watched our team try Copilot in their daily work, and three common use cases emerged:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debugging Deployments:&lt;/strong&gt; LLMs clearly excel at summarization. One of the first questions our internal users asked was, &amp;lsquo;Why did my latest infrastructure deployment fail?&amp;rsquo; Using Copilot to extract a clear natural language explanation requests like these has been a clear win.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Understanding Complex Infrastructure:&lt;/strong&gt; Copilot helped our engineers gain insights into Pulumi&amp;rsquo;s own infrastructure. Asking, &amp;lsquo;How many resources are in production?&amp;rsquo; &amp;lsquo;What expensive compute is running&amp;rsquo; or &amp;lsquo;What version are the EKS clusters in EU?&amp;quot; shows the value of allowing users to express infrastructure questions in natural language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generating Code:&lt;/strong&gt; One of the first queries logged was, &amp;lsquo;I want a static website on AWS behind a CloudFront CDN.&amp;rsquo; Another came from a Solutions Engineer, tasked with demonstrating Pulumi&amp;rsquo;s CrossGuard policy engine to a prospect, asking Copilot to generate policy code.&lt;/p&gt;
&lt;p&gt;These early experiences showed the value of Copilot. But they also revealed the need for a systematic approach to handling diverse user queries. This led to the development of what we call skills.&lt;/p&gt;
&lt;h2 id="skillful-slicing-modular-mastery"&gt;Skillful Slicing: Modular Mastery&lt;/h2&gt;
&lt;p&gt;As Copilot grew, we broke it into smaller pieces we call skills. Each skill does one specific job. The Insights skill handles queries about resource usage and configuration (&amp;ldquo;How many S3 buckets do I have?&amp;rdquo;), the Cloud Skill interacts with the Pulumi Service API to manage infrastructure (&amp;ldquo;Show me my stacks.&amp;rdquo;), the Code Skill generates Pulumi code snippets (&amp;ldquo;Write a Typescript program&amp;hellip;&amp;rdquo;), and the Docs Skill retrieves information from Pulumi documentation (&amp;ldquo;How do I use &lt;a href="https://www.pulumi.com/docs/iac/concepts/update-plans/"&gt;update plans&lt;/a&gt;?&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;When you ask Copilot something, it figures out what you need and picks the right skill for the job – like a manager deciding which expert to send your question to. This &lt;a href="https://platform.openai.com/docs/guides/function-calling"&gt;function-calling&lt;/a&gt; approach, orchestrated by a component we call the &amp;ldquo;outer loop,&amp;rdquo; allows Copilot to access and process information beyond its internal knowledge base.&lt;/p&gt;
&lt;p&gt;Fortunately, Pulumi Cloud already exposes a &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/reference/cloud-rest-api/"&gt;rich API&lt;/a&gt; - in fact, this is what powers the Pulumi Console and the Pulumi CLI - so all we had to do is to build a &lt;em&gt;skill&lt;/em&gt; that maps the user query to the appropriate Pulumi Cloud REST API. A question like &amp;ldquo;Show me my stacks&amp;rdquo; translates into the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/reference/cloud-rest-api/#list-stacks"&gt;List Stacks&lt;/a&gt; API call. A question like &amp;lsquo;Show me my untagged EC2 instances&amp;rsquo; is a bit more complex but it breaks down into clear components - resource type (EC2), filter condition (untagged) - that route to the Insights skill. This mapping helped us handle the many ways users phrase the same technical request.&lt;/p&gt;
&lt;p&gt;Refining this routing system revealed another opportunity: streamlining the Debug button workflow.&lt;/p&gt;
&lt;h2 id="debug-dispatch"&gt;Debug Dispatch&lt;/h2&gt;
&lt;p&gt;&lt;img src="optimize.png" alt="Before and After"&gt;&lt;/p&gt;
&lt;p&gt;Originally, when a user clicked &amp;lsquo;Debug with Copilot&amp;rsquo;, the system would send a text query like &amp;ldquo;Analyze this update and explain any errors.&amp;rdquo; Copilot would then:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Determines the user wants to analyze an update&lt;/li&gt;
&lt;li&gt;Identifies which API to call&lt;/li&gt;
&lt;li&gt;Calls the API&lt;/li&gt;
&lt;li&gt;Summarize the result&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Having the LLM figure out what the user wants is the right approach in general, but in this case, we already know the user&amp;rsquo;s intent - they clicked a debug button. So, we can directly call the analysis API to get the results and use the LLM solely for what it does best: summarizing technical output into clear, actionable explanations.&lt;/p&gt;
&lt;p&gt;This is another small win for the &amp;ldquo;Software Engineering over Prompt Engineering&amp;rdquo; approach. Traditional code handles the predictable parts, while AI focuses on the human-facing explanations.&lt;/p&gt;
&lt;p&gt;But while minimizing the LLM workload helped with efficiency, we soon faced an even trickier challenge: the deceptive polish of AI-generated outputs.&lt;/p&gt;
&lt;h2 id="the-illusion-of-correctness"&gt;The Illusion of Correctness&lt;/h2&gt;
&lt;p&gt;&lt;img src="false-info.png" alt="Before and After"&gt;&lt;/p&gt;
&lt;p&gt;Large language models excel at generating well-structured, grammatically correct output. They make neat tables, tell good stories, and generally sound confident. That&amp;rsquo;s what makes them dangerous because this polished presentation can mask underlying flaws in the information itself, creating a false sense of confidence for users.&lt;/p&gt;
&lt;p&gt;One of our early testers, Pablo, a data engineer at Pulumi, encountered this firsthand. He posed a query to Pulumi Copilot, asking for a summary of resources within a specific project. The response he received was impeccably formatted, neatly categorizing resources by type and providing counts for each. It &lt;em&gt;looked&lt;/em&gt; right, and for us humans sometimes looking right carries a lot of weight.&lt;/p&gt;
&lt;p&gt;However, a closer inspection revealed the numbers were way off. Copilot had asked for the wrong data and then summarized it beautifully - but incorrectly. This highlighted our next challenge: how do you systematically test a system that can be confidently wrong while sounding completely right?&lt;/p&gt;
&lt;h2 id="testing-the-untestable-validating-llm-outputs"&gt;Testing the Untestable: Validating LLM Outputs&lt;/h2&gt;
&lt;p&gt;When testing traditional code, we expect consistent, predictable outputs. With LLMs, even correct answers can vary. Here&amp;rsquo;s how we tackle this challenge.&lt;/p&gt;
&lt;p&gt;Our first approach was simple: keyword checks. For example, when testing the update analysis feature, we checked if the LLM&amp;rsquo;s response included the word &amp;ldquo;security&amp;rdquo; and described the error. This worked for straightforward cases but broke down quickly. Take a question like, &amp;ldquo;How many Lambdas am I running?&amp;rdquo; The LLM might give the right numbers but skip the word &amp;ldquo;running,&amp;rdquo; failing the test even though the answer was correct.&lt;/p&gt;
&lt;p&gt;These early failures revealed the limitations of keyword-based validation and underscored the need for a more nuanced approach. Inspired by platforms like LangSmith and Promptfoo, we began leveraging LLMs themselves as evaluators. For deterministic tasks, simple keyword checks suffice, but for more complex scenarios—like assessing whether a response answers a specific question—we rely on an &amp;ldquo;LLM Judge.&amp;rdquo; This approach balances efficiency and flexibility, reserving LLM evaluation for cases where it truly adds value. The test suite now integrates both methods, running against every code change to validate response content, accuracy, and format.&lt;/p&gt;
&lt;p&gt;&lt;img src="promptfoo.png" alt="Example PromptFoo Eval"&gt;&lt;/p&gt;
&lt;p&gt;The eval suite keeps getting more robust, which means that when new AI models drop, we can quickly catch any weirdness before it hits production. The generative AI space moves crazy fast and the code changes a lot, but the evals are a safety net - catching hallucinations, maintaining quality, and making sure we don&amp;rsquo;t ship anything that&amp;rsquo;ll annoy our users.&lt;/p&gt;
&lt;p&gt;So, while hallucinations are now much rarer, what about that one with the &lt;code&gt;--force&lt;/code&gt; flag? Yes, it&amp;rsquo;s &amp;ldquo;just another bug,&amp;rdquo; but it taught us something fascinating about these AI errors.&lt;/p&gt;
&lt;div class="note note-tip"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-lightbulb-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;
&lt;p&gt;&lt;strong&gt;You might also like:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/codegen-learnings/"&gt;
A Recipe for a Better AI-based Code Generator
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/pulumi-copilot-rest/"&gt;
Announcing the Pulumi Copilot REST API Preview
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/pulumi-copilot/"&gt;
Introducing Pulumi Copilot: Intelligent Cloud Management
&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="llms-think-like-humans-sort-of"&gt;LLMs think like humans (sort of)&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;--force&lt;/code&gt; hallucination wasn&amp;rsquo;t totally wrong - it was revealing what users intuitively expect from the CLI, and the LLM accidentally showed us what was missing. Force deletion is a common pattern across developer tools, and the LLM, trained on vast amounts of documentation and code, simply reflects these established conventions.&lt;/p&gt;
&lt;p&gt;This has fundamentally changed how we view hallucinations. While the team works constantly to minimize them – and our eval work means they happen way less frequently – some of them are clearly product signals. The LLM, in this light, becomes an unexpected source of user research, drawing on its training across thousands of developer tools and experiences.&lt;/p&gt;
&lt;p&gt;This insight is one of the key lessons of building Copilot:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Minimize LLM Usage:&lt;/strong&gt; Let traditional code handle deterministic tasks, reserve LLMs for natural language work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decompose into Skills:&lt;/strong&gt; Break complex tasks into modular units that combine LLM and traditional code appropriately&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test Rigorously:&lt;/strong&gt; Use multiple validation approaches, including LLMs testing LLMs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn from Hallucinations:&lt;/strong&gt; Sometimes incorrect outputs reveal user expectations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn from Users Continuously:&lt;/strong&gt; User interactions improve our AI systems - from training better skills to catching hallucinations and revealing product opportunities.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These lessons helped shape our latest release: &lt;strong&gt;&lt;a href="https://www.pulumi.com/blog/pulumi-copilot-rest/"&gt;the Pulumi Copilot REST API&lt;/a&gt;&lt;/strong&gt;, now available in preview. You can integrate these same capabilities and skills into your own tools and workflows. Whether you&amp;rsquo;re building CLI extensions, chat integrations, or automated deployment checks, the API provides a contextual understanding of Copilot. &lt;strong&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/copilot/api/"&gt;Try it out&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We can&amp;rsquo;t wait to see what you build!&lt;/p&gt;</description><author>Artur Laksberg</author><author>Simon Howe</author><author>Adam Gordon Bell</author><category>copilot</category><category>ai</category><category>infrastructure-as-code</category></item><item><title>Pulumi Copilot is Now Integrated with Pulumi Docs: A New Way to Learn and Explore</title><link>https://www.pulumi.com/blog/copilot-in-docs/</link><pubDate>Thu, 24 Oct 2024 23:59:00 -0700</pubDate><guid>https://www.pulumi.com/blog/copilot-in-docs/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/copilot-in-docs/index.png" /&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Learn about Neo →&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/copilot/"&gt;Pulumi Copilot&lt;/a&gt; has been making our customers&amp;rsquo; day-to-day tasks easier since its release, and today we’re excited to expand its capabilities—Pulumi Copilot is now available across Pulumi Documentation and pulumi.com, and comes equipped with a powerful new Documentation Skill!&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="Copilot in Docs"
autoplay muted playsinline
loop &gt;
&lt;source src="./copilot-in-docs.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;These additions make learning about Pulumi more interactive and intuitive by allowing users to explore cloud infrastructure concepts directly within the documentation through a conversational interface. Whether you’re a seasoned Pulumi user or just starting out, Pulumi Copilot is here to help you when you need it most, where you need it most.&lt;/p&gt;
&lt;h2 id="new-enhancements-in-pulumi-copilot"&gt;New Enhancements in Pulumi Copilot&lt;/h2&gt;
&lt;h3 id="expanded-website-integration"&gt;Expanded Website Integration&lt;/h3&gt;
&lt;p&gt;Pulumi Copilot is now embedded throughout the Pulumi website, providing contextual assistance no matter where you are. Whether you’re exploring documentation, reading a blog post, browsing the Pulumi registry, or reviewing case studies, Pulumi Copilot offers helpful suggestions, explanations, and links to guide you to relevant resources.&lt;/p&gt;
&lt;h3 id="pulumi-documentation-skill"&gt;Pulumi Documentation Skill&lt;/h3&gt;
&lt;p&gt;The new Documentation Skill is designed to make Pulumi’s docs more accessible from wherever. You can ask questions like &amp;ldquo;How do I use the dependsOn resource option?&amp;rdquo; or “How do I use SAML in my organization?&amp;quot; or &amp;ldquo;How can I store and retrieve secrets using Pulumi ESC?&amp;rdquo; and Pulumi Copilot will answer them by searching through our documentation on your behalf. This new skill is available everywhere Pulumi Copilot is: in Pulumi Cloud, in Pulumi documentation, across the Pulumi website, and the Registry.&lt;/p&gt;
&lt;h2 id="try-pulumi-copilot-today"&gt;Try Pulumi Copilot Today&lt;/h2&gt;
&lt;p&gt;Pulumi Copilot’s new Documentation Skill and website integration are available now! These features are free to use today. You can unlock more messages by being logged in to Pulumi Cloud.&lt;/p&gt;
&lt;p&gt;To get started, visit the Pulumi Cloud console and enable Pulumi Copilot in your settings under Access Management.&lt;/p&gt;
&lt;p&gt;Pulumi Copilot is already making waves, and with these latest enhancements, it’s now easier than ever to manage and learn about your cloud infrastructure. We can’t wait for you to experience it firsthand!&lt;/p&gt;</description><author>Meagan Cojocar</author><author>Artur Laksberg</author><category>releases</category><category>features</category></item><item><title>Enhancing Pulumi Copilot: Introducing System Prompts for Your Organization</title><link>https://www.pulumi.com/blog/copilot-system-prompts/</link><pubDate>Thu, 10 Oct 2024 00:00:00 -0700</pubDate><guid>https://www.pulumi.com/blog/copilot-system-prompts/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/copilot-system-prompts/index.png" /&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Learn about Neo →&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We are excited to announce a new feature for Pulumi Copilot: System Prompts. This enhancement empowers organizations to customize Pulumi Copilot&amp;rsquo;s responses for your organization, making your interactions with our AI assistant even more personalized to save you even more time.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/copilot/"&gt;Pulumi Copilot&lt;/a&gt; is a conversational chat interface integrated throughout Pulumi Cloud, enabling users to quickly accomplish a variety of cloud infrastructure management tasks by leveraging the power of large language models plus the rich capabilities of Pulumi Cloud. &lt;a href="https://www.pulumi.com/blog/pulumi-copilot/"&gt;We released Pulumi Copilot in June this year&lt;/a&gt;, and have seen remarkable uptake across our customer base. We are excited to be announcing enhancements on the Pulumi Copilot experience- keep an eye out for more to come in the near future.&lt;/p&gt;
&lt;p&gt;System prompts allow organization administrators to set default preferences and guidelines for Pulumi Copilot. By configuring these prompts, you can tailor Pulumi Copilot&amp;rsquo;s behavior to better suit your team&amp;rsquo;s needs and policies. Here are some ways you might use organization system prompts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Set a Default Programming Language:&lt;/strong&gt; Ensure that all code snippets and examples provided by Pulumi Copilot are in your team&amp;rsquo;s preferred language.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Specify a Default Cloud Provider:&lt;/strong&gt; Streamline resource searches and code generation by focusing on your primary cloud environment. Specify providers your organization prefers to use, such as using Azure Native instead of Azure Classic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enforce Compliance Guidelines:&lt;/strong&gt; Instruct Copilot to generate code and provide guidance that adheres to specific compliance standards, such as SOC 2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standardize Infrastructure Components:&lt;/strong&gt; Provide example code templates for resources to ensure consistency across your organization&amp;rsquo;s projects, such as &amp;ldquo;here is how we create VPCs&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-to-set-organization-system-prompts"&gt;How to Set Organization System Prompts&lt;/h2&gt;
&lt;p&gt;&lt;img src="org-system-prompts.png" alt="Access Management Copilot section in the UI"&gt;&lt;/p&gt;
&lt;p&gt;Setting up system prompts is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to Pulumi Cloud and go to your organization&amp;rsquo;s settings in the left hand navigation&lt;/li&gt;
&lt;li&gt;Under the settings menu, select &amp;ldquo;Access Management.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;In the Copilot section, you&amp;rsquo;ll find the option to set your system prompts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Though the system prompt supports 10k characters of context, we recommend keeping it concise to ensure optimal performance. See more information on setting system prompts &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/copilot/"&gt;in our Pulumi Copilot documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="wrapping-it-up"&gt;Wrapping it up&lt;/h2&gt;
&lt;p&gt;This is just the beginning. We&amp;rsquo;re dedicated to making Pulumi Copilot an indispensable part of your cloud infrastructure management toolkit. Stay tuned for more updates and enhancements based on your feedback.&lt;/p&gt;
&lt;p&gt;If you have suggestions or encounter any issues, please let us know through our &lt;a href="https://github.com/pulumi/pulumi-cloud-requests"&gt;Pulumi Cloud requests GitHub repository&lt;/a&gt;.&lt;/p&gt;</description><author>Meagan Cojocar</author><author>Artur Laksberg</author><category>features</category><category>releases</category></item><item><title>Introducing Pulumi Copilot: Intelligent Cloud Management</title><link>https://www.pulumi.com/blog/pulumi-copilot/</link><pubDate>Wed, 12 Jun 2024 04:00:00 -0700</pubDate><guid>https://www.pulumi.com/blog/pulumi-copilot/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumi-copilot/index.png" /&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Note: This post discusses Pulumi Copilot, which Pulumi Neo has replaced. &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Learn about Neo →&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;AI is transforming how users interact with every category of technology today, and cloud infrastructure is no exception. Last year we launched &lt;a href="https://www.pulumi.com/ai/"&gt;Pulumi AI&lt;/a&gt; to combine generative AI with Pulumi’s knowledge of cloud infrastructure, helping users solve complex cloud development problems using Infrastructure-as-Code. Pulumi AI has seen rapid adoption and engagement, with tens of thousands of users leveraging Pulumi AI over the last year.&lt;/p&gt;
&lt;p&gt;Today, we’re excited to introduce &lt;a href="https://www.pulumi.com/product/copilot/"&gt;&lt;strong&gt;Pulumi Copilot&lt;/strong&gt;&lt;/a&gt;, a huge leap forward in applying AI to cloud infrastructure management. Pulumi Copilot is a new conversational chat interface integrated throughout Pulumi Cloud, enabling Pulumi Cloud users to quickly accomplish a variety of cloud infrastructure management tasks by leveraging the power of large language models plus the rich capabilities of Pulumi Cloud.&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="Pulumi Copilot Demo"
autoplay muted playsinline
loop &gt;
&lt;source src="demo.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;Through Pulumi Copilot, you can explore your cloud infrastructure and gain insights across an incredible breadth of use cases, including:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-copilot/use-cases.png" alt="List of Pulumi Copilot Use Cases"&gt;&lt;/p&gt;
&lt;h2 id="pulumi-copilot-key-features"&gt;Pulumi Copilot Key Features&lt;/h2&gt;
&lt;h3 id="access-any-data-in-pulumi-cloud"&gt;Access any data in Pulumi Cloud&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The state of every resource you are managing with Pulumi across &lt;em&gt;any&lt;/em&gt; Cloud, &lt;em&gt;any&lt;/em&gt; account, and &lt;em&gt;any&lt;/em&gt; region. With &lt;a href="https://www.pulumi.com/product/pulumi-insights"&gt;Pulumi Insights&amp;rsquo;&lt;/a&gt; Cloud Supergraph support for 160+ cloud providers, this offers an unprecedented breadth of cloud infrastructure data to explore and interrogate with Pulumi Copilot.&lt;/li&gt;
&lt;li&gt;Pulumi stacks, projects, updates, deployments, environments, policies, audit logs and more - enabling historical understanding of what happened when, by who, and why across all of your cloud engineering systems managed by Pulumi.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="pulumi-iac-authoring-and-deployment"&gt;Pulumi IaC Authoring and Deployment&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The same great Pulumi AI features for authoring IaC are now available inside Pulumi Copilot as well, enabling you to quickly solve new IaC problems within Pulumi Cloud, and even deploy code directly from Pulumi Copilot.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="access-cloud-metadata-from-the-clouds-themselves"&gt;Access cloud metadata from the clouds themselves&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Through the use of new skills, Pulumi Copilot can access cloud metadata in real time in AWS, Azure, Kubernetes, and more, allowing it to join Pulumi&amp;rsquo;s IaC world view with information about usage, costs, and more – as well as infrastructure not yet under the management of Pulumi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pulumi Copilot combines the best generative AI models available in the industry today with Pulumi Copilot “skills” which enable Pulumi Copilot to access the data and actions from within Pulumi Cloud needed to help you with your questions and explorations. Pulumi Copilot also incorporates the context of where the user is in the Pulumi Cloud console to easily answer questions about “this stack”, or “the latest update”, offering an even more natural, conversational and persistent experience across Pulumi Cloud.&lt;/p&gt;
&lt;p&gt;Pulumi Copilot is Enterprise-Ready on day one - it adheres to all the same identity and role based access control (RBAC) rules that exist across Pulumi Cloud, ensuring that users only have access to stacks, environments and resources that they have permissions for within Pulumi Cloud. This means that each organization gets AI generated responses based solely on their own organizational data.&lt;/p&gt;
&lt;p&gt;Pulumi Copilot is available now in public beta, and is free while in beta for all organizations in Pulumi Cloud. Organization administrators can turn on Pulumi Copilot for their organization by going to &lt;strong&gt;Settings &amp;gt; Access Management &amp;gt; Pulumi Copilot&lt;/strong&gt; within the Pulumi Cloud console.&lt;/p&gt;
&lt;p&gt;Try Pulumi Copilot now at &lt;a href="https://app.pulumi.com/signin"&gt;https://app.pulumi.com/&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/m4kb2k_chyM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="walkthrough-of-pulumi-copilot"&gt;Walkthrough of Pulumi Copilot&lt;/h2&gt;
&lt;p&gt;Let’s jump in and take Pulumi Copilot for a spin!&lt;/p&gt;
&lt;p&gt;We can start off simple - it’s a conversational chat, so we can introduce ourselves. Pulumi Copilot knows who we are from context and we get a light hearted programming related joke.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./joke.png" alt="Chat interface window of Pulumi Copilot" width="400" alt="Greeting"/&gt;&lt;/p&gt;
&lt;p&gt;Perhaps we need to gain access to additional infrastructure within Pulumi Cloud and need to contact an admin, we can ask who the admins are.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./admins.png" alt="Chat interface window of Pulumi Copilot where the user asks who the admins of the org are" width="400" alt="Admins"/&gt;&lt;/p&gt;
&lt;p&gt;We get a hyperlink at the end, enabling us to jump directly to the members page, where we can see all of the details about the members and admins of the organization. Pulumi Copilot helps to not just get information, but then navigate within the Pulumi Cloud console to continue to explore.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-copilot/admins-console.png" alt="Pulumi Cloud screenshot with copilot window open. The dashboard depicts the Admins in the Console"&gt;&lt;/p&gt;
&lt;p&gt;Pulumi Copilot has access to everything that Pulumi Cloud manages, including &lt;a href="https://www.pulumi.com/docs/esc"&gt;Pulumi ESC&lt;/a&gt; environments. We can find all of the environments we have that manage access to GitHub through a natural language query, and then ask a follow up question to get a direct link to where each environment is defined.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./environments.png" alt="ESC Environments in Pulumi Copilot window" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;If we do a Pulumi update, and it fails, we often get a complex error message, caused by some combination of a coding problem or a cloud provider configuration problem or a transient failure in cloud providers backing service. We can use Pulumi Copilot to ask why an update failed, and get a plain language explanation, leveraging the AI’s existing knowledge of programming languages and cloud providers, combined with access to all of the update logs from within Pulumi Cloud. Notably, we can ask why “this” update failed, taking advantage of the context of the page we are on within Pulumi Cloud to understand which update we are referring to.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-copilot/cloud-update-why-fail.png" alt="Why did this fail? question posed in Pulumi Copilot"&gt;&lt;/p&gt;
&lt;p&gt;Perhaps we received an email from our compliance team telling us there was an issue with the VPC with id &lt;code&gt;vpc-04a116f7075fb7ca5&lt;/code&gt;, but we have no idea where that is. Given we have hundreds of AWS accounts and dozens of regions in each of these accounts, finding this resource isn’t simple. We can just ask Pulumi Copilot, and it immediately tells us what AWS account it is in. We can follow this up with a question about which Pulumi project and stack is managing it, and get a link to go directly to the stack to learn more about how it is configured.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./vpc-id.png" alt="Pulumi Copilot window inquiring about AWS account associated with a specific VPC, project, and stack" width="400" alt="What AWS account is this ID in?"/&gt;&lt;/p&gt;
&lt;p&gt;All of the capabilities of Pulumi AI for writing Pulumi IaC code are also available in Pulumi Copilot, so we can ask how to write a program for a new use case. But we can also have Pulumi Copilot incorporate information from an existing stack, leveraging multiple Pulumi Copilot skills to help with this task.&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="Write and Deploy"
autoplay muted playsinline
loop &gt;
&lt;source src="code.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;If we are thinking about removing some infrastructure we may want to know what other infrastructure potentially depends on it. We can get a list of stacks which depend on our stack, with hyperlinks directly to those stacks so we can explore their dependencies and take action to update them.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-copilot/stack-references.png" alt="Stack references check in Pulumi Copilot window"&gt;&lt;/p&gt;
&lt;p&gt;If we’re getting started on compliance with a new compliance framework, we can get guidance on areas to focus on for compliance review, ahead of applying more formal compliance tools like &lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/compliance-ready-policies/"&gt;Pulumi Crossguard Compliance Ready Policies&lt;/a&gt;.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./fedramp.png" alt="Pulumi Copilot question about getting FedRAMP compliant" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;And we can get insights into what infrastructure is exposed to the internet which we may need to look deeper into with a quick question:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./insecure-endpoints.png" alt="Pulumi Copilot question asking if any insecure endpoints exist" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;And our questions don’t have to be limited to English. Early Spanish-speaking users have found themselves working with Pulumi Copilot in their native language, getting responses automatically in the same language of their question.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./spanish.png" alt="Pulumi Copilot where user asks question in Spanish" width="400" alt="Español"/&gt;&lt;/p&gt;
&lt;p&gt;All of these examples are just scratching the surface of what Pulumi Copilot can already do today. One of the most exciting things about conversational chat interfaces is their wonderfully wide surface area of potential applications - almost any question you might have related to Cloud Infrastructure managed within Pulumi Cloud is something Pulumi Copilot can help with!&lt;/p&gt;
&lt;h2 id="future-of-pulumi-copilot"&gt;Future of Pulumi Copilot&lt;/h2&gt;
&lt;p&gt;All of the examples above are things you can do today, but we’re not stopping there. There’s a lot more coming up, and we wanted to give a sneak peek into some of the directions we’re taking Pulumi Copilot based on early customer feedback.&lt;/p&gt;
&lt;h3 id="taking-action"&gt;Taking Action&lt;/h3&gt;
&lt;p&gt;In the initial Beta, Pulumi Copilot is restricted to get data and answer questions, but cannot take action directly, beyond guiding users to a place within the Pulumi Cloud console to take the action themselves. In the near future, we will be extending Pulumi Copilot with the ability to propose actions and then act on them with user approval.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/414"&gt;pulumi/cloud-requests#414&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id="pulumi-cli-integration"&gt;Pulumi CLI Integration&lt;/h3&gt;
&lt;p&gt;One of the most common requests we have gotten from early Pulumi Copilot users has been for integration into the Pulumi CLI where many users spend much of their time day-to-day. We have started experimenting with CLI integration to help with diagnosing Pulumi update failures, and will be adding this to the CLI in the near future.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/415"&gt;pulumi/cloud-requests#415&lt;/a&gt; for more details.&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="CLI errors"
autoplay muted playsinline
loop &gt;
&lt;source src="errors.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h3 id="pulumi-docs-website-integration"&gt;Pulumi Docs Website Integration&lt;/h3&gt;
&lt;p&gt;Pulumi Copilot is initially offered as part of Pulumi Cloud. But we are working to extend Pulumi Copilot across the rest of pulumi.com, including integration with the Pulumi Docs website. A new Pulumi Docs skill will allow Pulumi Copilot to help users learn Pulumi concepts and chat with Copilot about these to go deeper on concepts than what is already provided directly within the Pulumi Docs website.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/417"&gt;pulumi/cloud-requests#417&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-copilot/docs.png" alt="Pulumi Copilot integrated with Pulumi Docs website"&gt;&lt;/p&gt;
&lt;h3 id="cloud-cli-skills"&gt;Cloud CLI Skills&lt;/h3&gt;
&lt;p&gt;While Pulumi Copilot already has access to all the Cloud Infrastructure you are managing with Pulumi Cloud, there are many cases where it is useful to reach out to AWS directly to ask questions, get operational metrics, and take action. We are already working on extending Pulumi Copilot with the ability to run aws and kubectl CLI commands, using short-lived credentials from one of your Pulumi ESC environments. A sneak peek of that in action - showing how the AWS skill, combined with the ability to get details about resources and ESC environments from within Pulumi Cloud can enable collecting operational metrics from AWS and presenting them for analysis.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/416"&gt;pulumi/cloud-requests#416&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="./cloudwatch.png" alt="AWS CLI Skill" width="700" /&gt;&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We’re excited to introduce Pulumi Copilot, the first conversational AI for general multi-cloud infrastructure management. Pulumi Copilot is the next big step toward reimagining cloud infrastructure management via AI-based user experiences. We’re just getting started, with many improvements and new capabilities coming soon on top of the core Pulumi Copilot foundation. Pulumi Copilot is brand new and improving quickly in response to user feedback. If you have questions or suggestions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pulumi/pulumi-cloud-requests"&gt;Open an issue in GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/contact/"&gt;Reach out to schedule a demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.pulumi.com/"&gt;Join the Pulumi Community on Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/copilot"&gt;Check out the Pulumi Copilot docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pulumi Copilot is available now in public beta, and is free while in beta for all organizations in Pulumi Cloud. Organization administrators can turn on Pulumi Copilot for their organization by going to &lt;strong&gt;Settings &amp;gt; Access Management &amp;gt; Pulumi Copilot&lt;/strong&gt; within the Pulumi Cloud console.&lt;/p&gt;
&lt;p&gt;Get started with Pulumi Copilot in &lt;a href="https://app.pulumi.com/signin"&gt;Pulumi Cloud&lt;/a&gt;.&lt;/p&gt;</description><author>Luke Hoban</author><category>ai</category><category>copilot</category><category>insights</category></item></channel></rss>