src/OpenAI.Plugin/Program.cs (36 lines of code) (raw):
OpenApiConfigurationOptions configOptions = new()
{
Info = new OpenApiInfo()
{
Version = "1.0.0",
Title = "Call Transcript Plugin",
Description = "This is a plugin that analyze a call given the transcript and a prompt.",
},
Servers = DefaultOpenApiConfigurationOptions.GetHostNames(),
OpenApiVersion = OpenApiVersionType.V3,
ForceHttps = false,
ForceHttp = false,
};
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices(services =>
{
services.AddSingleton<IOpenApiConfigurationOptions>(_ => configOptions);
services.AddTransient((provider) => CreateKernel(provider));
})
.Build();
host.Run();
Kernel CreateKernel(IServiceProvider provider)
{
const string DefaultSemanticPromptsFolder = "Prompts";
string semanticPromptsFolder = Environment.GetEnvironmentVariable("SEMANTIC_PLUGINS_FOLDER") ?? DefaultSemanticPromptsFolder;
var modelId = Environment.GetEnvironmentVariable("MODEL_ID")!;
var endpoint = Environment.GetEnvironmentVariable("ENDPOINT")!;
var apiKey = Environment.GetEnvironmentVariable("API_KEY")!;
var builder = Kernel.CreateBuilder();
builder.Services.AddLogging(c => c.SetMinimumLevel(LogLevel.Trace).AddDebug());
builder.Services.AddAzureOpenAIChatCompletion(modelId, endpoint, apiKey);
builder.Plugins.AddFromPromptDirectory(semanticPromptsFolder, "Prompts");
var kernel = builder.Build();
return kernel;
}