using System.ClientModel; using Xunit.Abstractions; using OpenAI; using OpenAI.Chat; namespace OllamaStudy.UseExtensionsAI; /// /// Ollama兼容OpenAI接口,可以直接使用OpenAI的SDK调用 /// public class UseOpenAITest { private ITestOutputHelper _output; private IOptionsMonitor _ollamaOptionsMonitor; private OpenAIClient _defaultOpenAIClient; private ChatClient _chatClient; public UseOpenAITest(ITestOutputHelper outputHelper, OpenAIClient defaultOpenAIClient, IOptionsMonitor ollamaOptionsMonitor) { _output = outputHelper; _defaultOpenAIClient = defaultOpenAIClient; _ollamaOptionsMonitor = ollamaOptionsMonitor; _chatClient = _defaultOpenAIClient.GetChatClient(_ollamaOptionsMonitor.CurrentValue.Model); } /// /// 从OpenAIClient获取各种业务Client /// [Fact] public void GetClients_Test() { Assert.NotNull(_defaultOpenAIClient); //音频客户端 var audioClient = _defaultOpenAIClient.GetAudioClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(audioClient); //聊天客户端 var chatClient = _defaultOpenAIClient.GetChatClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(chatClient); //自动补全客户端 var completionClient = _defaultOpenAIClient; Assert.NotNull(completionClient); //模型客户端 var modelClient = _defaultOpenAIClient.GetOpenAIModelClient(); Assert.NotNull(modelClient); } #region 模型 /// /// 列出模型 测试 /// [Fact] public void List_Models_Test() { var modelClient = _defaultOpenAIClient.GetOpenAIModelClient(); OpenAI.Models.OpenAIModelCollection openAIModelCollection = modelClient.GetModels().Value; _output.WriteLine($"Ollama服务中,共有{openAIModelCollection.Count()}个模型,包括[{string.Join(",",openAIModelCollection)}]"); } #endregion }