namespace OllamaStudy.UseExtensionsAI; /// /// Ollama兼容OpenAI接口,可以直接使用OpenAI的SDK调用 /// public class OpenAISdkTest { private ITestOutputHelper _output; private IOptionsMonitor _ollamaOptionsMonitor; private OpenAIClient _defaultOpenAIClient; public OpenAISdkTest(ITestOutputHelper outputHelper, OpenAIClient defaultOpenAIClient, IOptionsMonitor ollamaOptionsMonitor) { _output = outputHelper; _defaultOpenAIClient = defaultOpenAIClient; _ollamaOptionsMonitor = ollamaOptionsMonitor; } #region 使用客户端库 /// /// 从OpenAIClient获取各种业务Client /// [Fact] public void GetClients_Test() { #pragma warning disable OPENAI001 Assert.NotNull(_defaultOpenAIClient); //音频客户端 var audioClient = _defaultOpenAIClient.GetAudioClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(audioClient); //聊天客户端 var chatClient = _defaultOpenAIClient.GetChatClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(chatClient); //嵌入客户端 var embeddingClient = _defaultOpenAIClient.GetEmbeddingClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(embeddingClient); //图像客户端 var imageClient = _defaultOpenAIClient.GetImageClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(imageClient); //微调客户端 var moderationClient = _defaultOpenAIClient.GetModerationClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(moderationClient); //文件客户端 var openAIFileClient = _defaultOpenAIClient.GetOpenAIFileClient(); Assert.NotNull(openAIFileClient); //模型客户端 var modelClient = _defaultOpenAIClient.GetOpenAIModelClient(); Assert.NotNull(modelClient); //助手客户端(仅评估) var assistantClient = _defaultOpenAIClient.GetAssistantClient(); Assert.NotNull(assistantClient); //批量客户端(仅评估) var batchClient = _defaultOpenAIClient.GetBatchClient(); Assert.NotNull(batchClient); //评估客户端(仅评估) var evaluationClient = _defaultOpenAIClient.GetEvaluationClient(); Assert.NotNull(evaluationClient); //微调客户端(仅评估) var FineTuningClient = _defaultOpenAIClient.GetFineTuningClient(); Assert.NotNull(FineTuningClient); //响应客户端(仅评估) var openAIResponseClient = _defaultOpenAIClient.GetOpenAIResponseClient(_ollamaOptionsMonitor.CurrentValue.Model); Assert.NotNull(openAIResponseClient); //实时客户端(仅评估) #pragma warning disable OPENAI002 var realtimeClient = _defaultOpenAIClient.GetRealtimeClient(); Assert.NotNull(realtimeClient); #pragma warning restore OPENAI002 //向量存储客户端(仅评估) var vectorStoreClient = _defaultOpenAIClient.GetVectorStoreClient(); Assert.NotNull(vectorStoreClient); #pragma warning restore OPENAI001 } #endregion #region 如何使用依赖注入 #endregion #region 如何将聊天完成与流式处理一起使用 #endregion #region 如何将聊天完成与工具和函数调用一起使用 #endregion #region 如何将聊天完成与结构化输出一起使用 #endregion #region 如何将聊天完成与音频一起使用 #endregion #region 如何将响应与流式处理和推理结合使用 #endregion #region 如何将响应与文件搜索一起使用 #endregion #region 如何将响应与网络搜索结合使用 #endregion #region 如何生成文本嵌入 #endregion #region 如何生成图像 #endregion #region 如何转录音频 #endregion #region 如何将助手与检索增强生成 (RAG) 结合使用。 #endregion #region 如何将助手与流媒体和视觉结合使用 #endregion #region 高级方案 #endregion }