#!/usr/bin/dotnet run #:package Microsoft.Extensions.AI@10.4.1 #:package Microsoft.Agents.AI.OpenAI@1.1.0 #:package Azure.AI.OpenAI@2.1.0 #:package Azure.Identity@1.13.1 using System.ComponentModel; using Microsoft.Agents.AI; using Microsoft.Extensions.AI; using Azure.AI.OpenAI; using Azure.Identity; using OpenAI.Chat; // Tool Function: Random Destination Generator // This static method will be available to the agent as a callable tool // The [Description] attribute helps the AI understand when to use this function // This demonstrates how to create custom tools for AI agents [Description("Provides a random vacation destination.")] static string GetRandomDestination() { // List of popular vacation destinations around the world // The agent will randomly select from these options var destinations = new List { "Paris, France", "Tokyo, Japan", "New York City, USA", "Sydney, Australia", "Rome, Italy", "Barcelona, Spain", "Cape Town, South Africa", "Rio de Janeiro, Brazil", "Bangkok, Thailand", "Vancouver, Canada" }; // Generate random index and return selected destination // Uses System.Random for simple random selection var random = new Random(); int index = random.Next(destinations.Count); return destinations[index]; } // Azure OpenAI with the Responses API (stable v1 endpoint). Sign in with `az login`. var azureEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set."); var deployment = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT") ?? "gpt-5-mini"; var azureClient = new AzureOpenAIClient(new Uri(azureEndpoint), new AzureCliCredential()); // Create AI Agent with Travel Planning Capabilities // Initialize complete agent pipeline: OpenAI client → Chat client → AI agent // Configure agent with name, instructions, and available tools // The agent can now plan trips using the GetRandomDestination function AIAgent agent = azureClient .GetChatClient(deployment) .AsAIAgent( instructions: "You are a helpful AI Agent that can help plan vacations for customers at random destinations", tools: [AIFunctionFactory.Create(GetRandomDestination)] ); // Execute Agent: Plan a Day Trip // Run the agent with streaming enabled for real-time response display // Shows the agent's thinking and response as it generates the content // Provides better user experience with immediate feedback await foreach (var update in agent.RunStreamingAsync("Plan me a day trip")) { await Task.Delay(10); Console.Write(update); }