microsoft/semantic-kernel · error · InvalidOperationException
AZURE_OPENAI_ENDPOINT is not set.
Error message
AZURE_OPENAI_ENDPOINT is not set.
What it means
The Azure OpenAI ToolCall migration sample throws InvalidOperationException when AZURE_OPENAI_ENDPOINT is missing. This sample demonstrates function calling with the GetWeather KernelFunction, comparing SK and AF approaches. The endpoint backs the AzureOpenAIChatClient that processes tool-call rounds.
Source
Thrown at dotnet/samples/AgentFrameworkMigration/AzureOpenAI/Step02_ToolCall/Program.cs:11
// Copyright (c) Microsoft. All rights reserved.
using System.ComponentModel;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Extensions.AI;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using OpenAI.Chat;
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = System.Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o";
var userInput = "What is the weather like in Amsterdam?";
Console.WriteLine($"User Input: {userInput}");
[KernelFunction]
[Description("Get the weather for a given location.")]
static string GetWeather([Description("The location to get the weather for.")] string location)
=> $"The weather in {location} is cloudy with a high of 15°C.";
await SKAgent();
await SKAgent_As_AFAgentAsync();
await AFAgent();
async Task SKAgent()
{
var builder = Kernel.CreateBuilder().AddAzureOpenAIChatClient(deploymentName, endpoint, new AzureCliCredential());
View on GitHub (pinned to c028a0c7dc)
Solutions
- Set AZURE_OPENAI_ENDPOINT to your Azure OpenAI resource URL
- Optionally set AZURE_OPENAI_DEPLOYMENT_NAME (defaults to gpt-4o)
- Ensure az login is current for AzureCliCredential
- Verify the deployed model supports function/tool calling
Example fix
// before
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
// after
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
if (string.IsNullOrWhiteSpace(endpoint))
{
Console.Write("Enter Azure OpenAI endpoint: ");
endpoint = Console.ReadLine() ?? "";
} Defensive patterns
Strategy: validation
Validate before calling
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
if (string.IsNullOrWhiteSpace(endpoint))
{
Console.Error.WriteLine("AZURE_OPENAI_ENDPOINT is not set. Required for tool-calling samples.");
return;
} Type guard
static bool IsAzureOpenAIEndpointConfigured() =>
!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")); Try / catch
try
{
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
}
catch (InvalidOperationException ex) when (ex.Message.Contains("AZURE_OPENAI_ENDPOINT"))
{
Console.Error.WriteLine(ex.Message);
return;
} Prevention
- Verify the deployed model supports function calling before running tool-call samples
- Use a shared env-var setup script for all AzureOpenAI Step samples
- Ensure az login is current for AzureCliCredential
- Check that AZURE_OPENAI_DEPLOYMENT_NAME (if set) matches an actual deployment in the resource
When it happens
Trigger: Running AzureOpenAI/Step02_ToolCall without AZURE_OPENAI_ENDPOINT. The throw at line 11 fires before the GetWeather function is defined or any agent is constructed.
Common situations: Setting only AZURE_OPENAI_DEPLOYMENT_NAME but forgetting the endpoint; using an API-key-based approach in another sample and assuming this one reads keys from settings; the deployed model does not support function calling.
Related errors
- AZURE_OPENAI_ENDPOINT is not set.
- AZURE_OPENAI_ENDPOINT is not set.
- AZURE_OPENAI_ENDPOINT is not set.
- AZURE_OPENAI_ENDPOINT is not set.
- AZURE_OPENAI_ENDPOINT is not set.
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/8c8b3d2aa14da707.
Report an issue: GitHub.