in src/WebJobs.Extensions.OpenAI/OpenAIWebJobsBuilderExtensions.cs [24:58]
public static IWebJobsBuilder AddOpenAIBindings(this IWebJobsBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}
// Register the WebJobs extension, which enables the bindings.
builder.AddExtension<OpenAIExtension>();
// Service objects that will be used by the extension
builder.Services.AddSingleton<TextCompletionConverter>();
builder.Services.AddSingleton<EmbeddingsConverter>();
builder.Services.AddSingleton<EmbeddingsStoreConverter>();
builder.Services.AddSingleton<SemanticSearchConverter>();
builder.Services.AddSingleton<AssistantBindingConverter>();
builder.Services.AddOptions<OpenAIConfigOptions>()
.Configure<IConfiguration>((options, config) =>
{
config.GetSection("azurefunctionsjobhost:extensions:openai").Bind(options);
});
builder.Services.AddSingleton<IAssistantService, DefaultAssistantService>();
builder.Services
.AddSingleton<AssistantSkillManager>()
.AddSingleton<IAssistantSkillInvoker>(p => p.GetRequiredService<AssistantSkillManager>());
builder.Services.AddSingleton<AssistantSkillTriggerBindingProvider>();
builder.Services.AddAzureClientsCore(); // Adds AzureComponentFactory
builder.Services.AddSingleton<OpenAIClientFactory>();
return builder;
}