diff --git a/shell/AIShell.Kernel/Shell.cs b/shell/AIShell.Kernel/Shell.cs index 91d57da0..50b8454b 100644 --- a/shell/AIShell.Kernel/Shell.cs +++ b/shell/AIShell.Kernel/Shell.cs @@ -694,7 +694,12 @@ internal async Task RunREPLAsync() while (ex.InnerException is { }) { sb ??= new(message, capacity: message.Length * 3); - sb.Append($"\n Inner -> {ex.InnerException.Message}"); + if (sb[^1] is not '\n') + { + sb.Append('\n'); + } + + sb.Append($" Inner -> {ex.InnerException.Message}"); ex = ex.InnerException; } @@ -703,8 +708,9 @@ internal async Task RunREPLAsync() message = sb.ToString(); } + string separator = message.EndsWith('\n') ? "\n" : "\n\n"; Host.WriteErrorLine() - .WriteErrorLine($"Agent failed to generate a response: {message}\n\n{stackTrace}") + .WriteErrorLine($"Agent failed to generate a response: {message}{separator}{stackTrace}") .WriteErrorLine(); } } diff --git a/shell/agents/AIShell.OpenAI.Agent/GPT.cs b/shell/agents/AIShell.OpenAI.Agent/GPT.cs index 42716f89..7f3b53bd 100644 --- a/shell/agents/AIShell.OpenAI.Agent/GPT.cs +++ b/shell/agents/AIShell.OpenAI.Agent/GPT.cs @@ -55,13 +55,16 @@ public GPT( Description = description; Endpoint = endpoint?.Trim().TrimEnd('/'); Deployment = deployment; - ModelName = modelName.ToLowerInvariant(); SystemPrompt = systemPrompt; Key = key; AuthType = authType; Dirty = false; - ModelInfo = ModelInfo.TryResolve(ModelName, out var model) ? model : null; + ModelInfo = ModelInfo.TryResolve(modelName, out var model) ? model : null; + + // OpenAI models require the model name to be lower case. e.g., 'gpt-4.1' works but not 'GPT-4.1'. + // However, custom endpoint may be case-sensitive on the model name, such as Foundry Local. + ModelName = ModelInfo is { } ? modelName.ToLowerInvariant() : modelName; bool noEndpoint = string.IsNullOrEmpty(Endpoint); bool noDeployment = string.IsNullOrEmpty(Deployment);