-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathProgram.cs
90 lines (77 loc) · 4.3 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using Microsoft.Extensions.Configuration;
using System.Diagnostics;
namespace VectorIndexScenarioSuite
{
internal class Program
{
static async Task Main(string[] args)
{
// Setup configuration builder
var builder = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
.AddCommandLine(args);
var configurations = builder.Build();
TraceConfigKeyValues(configurations);
string scenarioName = configurations["AppSettings:scenario:name"] ?? throw new ArgumentNullException("AppSettings:scenario:name");
Console.WriteLine();
Console.WriteLine($"Setting up {scenarioName}");
Scenario scenario = CreateScenario(configurations);
scenario.Setup();
Console.WriteLine();
Console.WriteLine($"Running {scenarioName} scenario. StartTime: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
await scenario.Run();
stopwatch.Stop();
Console.WriteLine($"Scenario run took: {stopwatch.Elapsed.TotalSeconds} seconds.");
Console.WriteLine();
Console.WriteLine($"Finishing {scenarioName} scenario. EndTime: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
scenario.Stop();
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
bool waitForUserInputBeforeExit = Convert.ToBoolean(configurations["AppSettings:waitForUserInputBeforeExit"]);
if(waitForUserInputBeforeExit)
{
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
}
}
static void TraceConfigKeyValues(IConfiguration configurations)
{
Console.WriteLine("Executing VectorIndexScenarioSuite.");
foreach (var configuration in configurations.AsEnumerable())
{
Console.WriteLine($"{configuration.Key} = {configuration.Value}");
}
}
static Scenario CreateScenario(IConfiguration configurations)
{
string scenarioName = configurations["AppSettings:scenario:name"] ?? throw new ArgumentNullException("AppSettings:scenario:name");
Scenarios scenarios = ScenarioParser.Parse(scenarioName);
switch (scenarios)
{
case Scenarios.MSMarcoEmbeddingOnly:
return new MSMarcoEmbeddingOnlyScenario(configurations);
case Scenarios.MSTuringEmbeddingOnly:
return new MSTuringEmbeddingOnlyScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly:
return new WikiCohereEnglishEmbeddingOnlyScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly1MDeleteStreaming:
return new WikiCohereEnglishEmbeddingOnly1MDeleteStreamingScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly1MDeleteReplaceStreaming:
return new WikiCohereEnglishEmbeddingOnly1MDeleteReplaceStreamingScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly1MReplaceStreaming:
return new WikiCohereEnglishEmbeddingOnly1MReplaceStreamingScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly35MDeleteStreaming:
return new WikiCohereEnglishEmbeddingOnly35MDeleteStreamingScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly35MDeleteReplaceStreaming:
return new WikiCohereEnglishEmbeddingOnly35MDeleteReplaceStreamingScenario(configurations);
case Scenarios.WikiCohereEnglishEmbeddingOnly35MReplaceStreaming:
return new WikiCohereEnglishEmbeddingOnly35MReplaceStreamingScenario(configurations);
default:
throw new System.Exception($"Scenario {scenarioName} is not supported.");
}
}
}
}