# Multi-turn Conversation with AI Agents This sample demonstrates how to implement multi-turn conversations with AI agents, where context is preserved across multiple agent runs using threads and conversation IDs. ## What this sample demonstrates - Creating an AI agent with instructions - Creating a project conversation to track conversations in the Foundry UI - Using threads with conversation IDs to maintain conversation context - Running multi-turn conversations with text output - Running multi-turn conversations with streaming output - Managing agent and conversation lifecycle (creation and deletion) ## Prerequisites Before you begin, ensure you have the following prerequisites: - .NET 10 SDK or later - Azure Foundry service endpoint and deployment configured - Azure CLI installed and authenticated (for Azure credential authentication) **Note**: This demo uses Azure CLI credentials for authentication. Make sure you're logged in with `az login` and have access to the Azure Foundry resource. For more information, see the [Azure CLI documentation](https://learn.microsoft.com/cli/azure/authenticate-azure-cli-interactively). Set the following environment variables: ```powershell $env:AZURE_FOUNDRY_PROJECT_ENDPOINT="https://your-foundry-service.services.ai.azure.com/api/projects/your-foundry-project" # Replace with your Azure Foundry resource endpoint $env:AZURE_FOUNDRY_PROJECT_DEPLOYMENT_NAME="gpt-4o-mini" # Optional, defaults to gpt-4o-mini ``` ## Run the sample Navigate to the FoundryAgents sample directory and run: ```powershell cd dotnet/samples/GettingStarted/FoundryAgents dotnet run --project .\FoundryAgents_Step02_MultiturnConversation ``` ## Expected behavior The sample will: 1. Create an agent named "JokerAgent" with instructions to tell jokes 2. Create a project conversation to enable visibility in the Azure Foundry UI 3. Create a thread linked to the conversation ID for context tracking 4. Run the agent with a text prompt and display the response 5. Send a follow-up message to the same thread, demonstrating context preservation 6. Create a new thread sharing the same conversation ID and run the agent with streaming 7. Send a follow-up streaming message to demonstrate multi-turn streaming 8. Clean up resources by deleting the agent and conversation ## Conversation ID vs PreviousResponseId When working with multi-turn conversations, there are two approaches: - **With Conversation ID**: By passing a `conversation.Id` to `GetNewThreadAsync()`, the conversation will be visible in the Azure Foundry Project UI. This is useful for tracking and debugging conversations. - **Without Conversation ID**: Threads created without a conversation ID still work correctly, maintaining context via `PreviousResponseId`. However, these conversations may not appear in the Foundry UI.