using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OllamaStudy.UseExtensionsAI
{
///
/// OpenAI的API 测试
/// Ollama兼容OpenAI接口,可以直接使用OpenAI的SDK调用
///
public class OpenAIAPITest
{
private readonly ITestOutputHelper _output;
private readonly IOptionsMonitor _ollamaOptionsMonitor;
private readonly IHttpClientFactory _httpClientFactory;
private readonly HttpClient _defaultHttpClient;
private readonly HttpClient _ollamaHttpClient;
private readonly HttpClient _uiUiAPIHttpClient;
private readonly HttpClient _bailianHttpClient;
private readonly HttpClient _zipuHttpClient;
public OpenAIAPITest
(
ITestOutputHelper outputHelper,
OpenAIClient defaultOpenAIClient,
IOptionsMonitor ollamaOptionsMonitor,
IHttpClientFactory httpClientFactory
)
{
_output = outputHelper;
_ollamaOptionsMonitor = ollamaOptionsMonitor;
_httpClientFactory = httpClientFactory;
_defaultHttpClient = _httpClientFactory.CreateClient("OpenAIHttpClient");
_ollamaHttpClient = _httpClientFactory.CreateClient("OllamaHttpClient");
_uiUiAPIHttpClient = _httpClientFactory.CreateClient("UiUiAPIHttpClient");
_bailianHttpClient = _httpClientFactory.CreateClient("BailianHttpClient");
_zipuHttpClient = _httpClientFactory.CreateClient("ZiPuHttpClient");
}
#region 各种业务Client
///
/// 从OpenAIClient获取各种业务 Client
///
[Fact]
public void GetClients_Test()
{
Assert.NotNull(_defaultHttpClient);
Assert.NotNull(_ollamaHttpClient);
Assert.NotNull(_uiUiAPIHttpClient);
Assert.NotNull(_bailianHttpClient);
Assert.NotNull(_zipuHttpClient);
}
#endregion
#region 音频
[Fact]
public async Task Audio_Test()
{
var requetData = new
{
//语音模型
model = "gpt-4o-mini-tts",
//要生成音频的文本。最大长度为4096个字符。
input = "你好,上海今天的天气非常好,很适合户外游玩!",
//生成音频时使用的语音。支持的语音有:alloy、echo、fable、onyx、nova 和 shimmer。
voice = "alloy",
//默认为 mp3 音频的格式。支持的格式有:mp3、opus、aac 和 flac。
response_format = "mp3",
//默认为 1 生成的音频速度。选择0.25到4.0之间的值。1.0是默认值。
speed = 1.0f,
};
using var requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://sg.uiuiapi.com/v1/audio/speech")
{
Content = JsonContent.Create(requetData)
};
var responseMessage = await _uiUiAPIHttpClient.SendAsync(requestMessage);
responseMessage.EnsureSuccessStatusCode();
//处理响应
var responseObject = await responseMessage.Content.ReadAsByteArrayAsync();
using FileStream stream = File.OpenWrite($"{Guid.NewGuid()}.mp3");
stream.Write(responseObject);
}
#endregion
#region 聊天
#endregion
#region 自动补全
#endregion
#region 嵌入
#endregion
#region 微调
#endregion
#region 文件
#endregion
#region 图像
#endregion
#region 模型
///
/// 列出模型 测试
///
[Fact]
public void List_Models_Test()
{
}
#endregion
#region 审查
#endregion
#region 助手测试版
#endregion
#region 线程数
#endregion
#region 留言
#endregion
#region 运行
#endregion
#region 已弃用-音频
#endregion
}
}