{"record":{"id":"d26e898c132eac07","repo":"microsoft/semantic-kernel","slug":"openai-client-not-found","errorCode":null,"errorMessage":"OpenAI client not found.","messagePattern":"OpenAI client not found\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"dotnet/src/Agents/OpenAI/Extensions/AgentDefinitionExtensions.cs","lineNumber":163,"sourceCode":"            {\n                var endpoint = connection.TryGetEndpoint();\n                Verify.NotNull(endpoint, \"Endpoint must be specified when using Azure OpenAI.\");\n\n                if (connection.ExtensionData.TryGetValue(ApiKey, out var apiKey) && apiKey is not null)\n                {\n                    return OpenAIAssistantAgent.CreateAzureOpenAIClient(connection.GetApiKeyCredential(), endpoint, httpClient);\n                }\n\n                var tokenCredential = kernel.Services.GetRequiredService<TokenCredential>();\n                return OpenAIAssistantAgent.CreateAzureOpenAIClient(tokenCredential, endpoint, httpClient);\n            }\n\n            throw new InvalidOperationException($\"Invalid OpenAI client type '{connection.Type}' was specified.\");\n        }\n\n        // Use the client registered on the kernel\n        var client = kernel.GetAllServices<OpenAIClient>().FirstOrDefault();\n        return (OpenAIClient?)client ?? throw new InvalidOperationException(\"OpenAI client not found.\");\n    }\n\n    #region private\n    private const string Temperature = \"temperature\";\n    private const string TopP = \"top_p\";\n\n    private static float? GetTemperature(this AgentDefinition agentDefinition)\n    {\n        Verify.NotNull(agentDefinition);\n\n        if (agentDefinition?.Model?.Options?.TryGetValue(Temperature, out var temperature) ?? false)\n        {\n            return (float?)temperature;\n        }\n        return null;\n    }\n\n    private static float? GetTopP(this AgentDefinition agentDefinition)","sourceCodeStart":145,"sourceCodeEnd":181,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/dotnet/src/Agents/OpenAI/Extensions/AgentDefinitionExtensions.cs#L145-L181","documentation":"When an AgentDefinition has no ModelConnection, GetOpenAIClient falls back to resolving an OpenAIClient from the kernel's service provider. If none is registered (FirstOrDefault returns null), it throws because no client exists to make calls.","triggerScenarios":"Invoking an agent whose definition lacks a connection block while the Kernel has no OpenAIClient/AzureOpenAIClient service registered via AddOpenAIClient/AddAzureOpenAIClient.","commonSituations":"Forgot to register the OpenAI client in the DI container; registered it under a different interface or as a non-OpenAIClient type; DI scope/lifetime mismatch so the service is unavailable where the agent runs.","solutions":["Register a client before invoking: kernel.AddOpenAIClient(apiKey) or kernel.AddAzureOpenAIClient(endpoint, credential).","Alternatively, supply a ModelConnection in the agent definition so the client is built inline.","Verify the service is registered in the same Kernel instance passed to the agent.","Use kernel.GetAllServices<OpenAIClient>() in a startup check to fail fast with a clearer message."],"exampleFix":"// before\nvar agent = await OpenAIAssistantAgent.CreateFromDefinitionAsync(kernel, \"my-agent\");\nawait foreach (var m in agent.InvokeAsync(thread)) { }\n// after\nkernel.AddOpenAIClient(apiKey); // or AddAzureOpenAIClient\nvar agent = await OpenAIAssistantAgent.CreateFromDefinitionAsync(kernel, \"my-agent\");\nawait foreach (var m in agent.InvokeAsync(thread)) { }","handlingStrategy":"validation","validationCode":"if (agentDefinition?.Model?.Connection is null &&\n    !kernel.GetAllServices<OpenAIClient>().Any())\n    throw new InvalidOperationException(\"No OpenAIClient registered. Call kernel.AddOpenAIClient(...) or add a ModelConnection.\");","typeGuard":"static bool HasOpenAIClient(Kernel kernel) => kernel.GetAllServices<OpenAIClient>().Any();","tryCatchPattern":"try { var client = agentDefinition.GetOpenAIClient(kernel); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"OpenAI client not found\")) {\n    kernel.AddOpenAIClient(Environment.GetEnvironmentVariable(\"OPENAI_API_KEY\")!);\n}","preventionTips":["Register the OpenAIClient in your DI composition root.","Add a startup health check verifying the client resolves.","Keep the same Kernel instance for registration and agent invocation."],"tags":["dependency-injection","openai","configuration","missing-service"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}