Skip to content

Commit fe9164e

Browse files
added Spectre.Console support (#4)
1 parent c6e3b3a commit fe9164e

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed

Directory.Packages.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@
1010
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" />
1111
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.11.2" />
1212
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.11.1" />
13+
<PackageVersion Include="Spectre.Console" Version="0.50.0" />
14+
<PackageVersion Include="Spectre.Console.Cli" Version="0.50.0" />
1315
</ItemGroup>
1416
</Project>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"$schema": "https://json.schemastore.org/launchsettings.json",
3+
"profiles": {
4+
"AI.HelloWorld.AppHost": {
5+
"commandName": "Project",
6+
"dotnetRunMessages": true,
7+
"launchBrowser": true,
8+
"applicationUrl": "https://localhost:17142;http://localhost:15099",
9+
"environmentVariables": {
10+
"ASPNETCORE_ENVIRONMENT": "Development",
11+
"DOTNET_ENVIRONMENT": "Development",
12+
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21049",
13+
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22281"
14+
}
15+
}
16+
}
17+
}

src/0-hello-world/AI.HelloWorld.Console/AI.HelloWorld.Console.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<ItemGroup>
1010
<PackageReference Include="CommunityToolkit.Aspire.OllamaSharp" />
1111
<PackageReference Include="Microsoft.Extensions.Hosting" />
12+
<PackageReference Include="Spectre.Console" />
13+
<PackageReference Include="Spectre.Console.Cli" />
1214
</ItemGroup>
1315

1416
<ItemGroup>

src/0-hello-world/AI.HelloWorld.Console/Program.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Microsoft.Extensions.Hosting;
33
using Microsoft.Extensions.AI;
44
using Microsoft.Extensions.DependencyInjection;
5+
using Spectre.Console;
56

67
var builder = new HostApplicationBuilder();
78

@@ -22,8 +23,21 @@
2223

2324
var chatClient = app.Services.GetRequiredService<IChatClient>();
2425

25-
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
26-
var resp = await chatClient.GetResponseAsync("How many feet are in a meter?", cancellationToken:cts.Token);
27-
28-
Console.WriteLine(resp);
26+
AnsiConsole.WriteLine(":robot: AI Hello World is ready for your questions! :rocket:");
27+
AnsiConsole.WriteLine("Type 'exit' to quit.");
28+
29+
var textPrompt = await AnsiConsole.AskAsync<string>("What would you like to ask the AI?");
30+
while (!textPrompt.Equals("exit", StringComparison.InvariantCultureIgnoreCase))
31+
{
32+
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
33+
var resp = await chatClient.GetResponseAsync(textPrompt, cancellationToken: cts.Token);
34+
35+
foreach (var u in resp.Messages)
36+
{
37+
AnsiConsole.WriteLine(u.Text);
38+
}
39+
40+
textPrompt = await AnsiConsole.AskAsync<string>("What would you like to ask the AI?");
41+
}
42+
2943
await app.WaitForShutdownAsync();

0 commit comments

Comments
 (0)