如何在.NET OpenAI 2.1.0-beta.1中实现依赖注入及客户端配置?
关于Azure.AI.OpenAI客户端注册的问题解答
1. OpenAIClient的注册与线程安全性
- 可以将
OpenAIClient注册为单例,这是完全可行且符合官方最佳实践的方案。 OpenAIClient本身是线程安全的,多个线程可同时调用其方法,复用单例能避免重复创建客户端的资源开销。- 替代弃用的
AddOpenAIClient方法的注册示例:builder.Services.AddSingleton<OpenAIClient>(sp => { var endpoint = new Uri(builder.Configuration["AzureOpenAI:Endpoint"]); var credential = new AzureKeyCredential(builder.Configuration["AzureOpenAI:ApiKey"]); return new OpenAIClient(endpoint, credential); });
2. EmbeddingClient的注册与线程安全性
- 可以将指定模型的
EmbeddingClient注册为单例,你提供的注册方式是可行的。 EmbeddingClient同样是线程安全的,它基于线程安全的OpenAIClient构建,其方法支持多线程并发调用。- 注册指定模型的
EmbeddingClient为单例的示例:builder.Services.AddSingleton<IEmbeddingClient>(sp => { var openAIClient = sp.GetRequiredService<OpenAIClient>(); return openAIClient.GetEmbeddingClient("123"); // "123"为你的嵌入模型部署名称 }); - 这种方式能避免每次调用
GetEmbeddingClient创建新实例的开销,提升性能。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

