one-api
相当于是一个兼容 OpenAI api 的 api 网关(针对 api 的反向代理),借助 one-api 可以通过已有的 OpenAI 客户端调用非 OpenAI 大模型的 api,比如通义千问。
DashScope
是阿里云提供的模型服务灵积的英文名称,这里通过调用 DashScope api 使用通义千问 qwen-max
大模型。
以容器方式部署 one-api
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
部署之后,通过浏览器访问对应服务器地址的 3000 端口就可以登录控制台(默认用户名是 root,密码是 123456)。
首先需要创建渠道
(channel),这里创建类型为“阿里通义千问”渠道,默认填充的模型中就包含 qwen-max 模型,在“密钥”输入框输入阿里云灵积控制台“API-KEY管理”中创建的 api key
然后在 one-api 控制台创建 令牌
(token),这里创建的 token 就是在 Semantic Kernel 中使用的 OpenAI 的 apiKey
最后用 C# 写个简单的控制台程序,通过 OpenAIChatCompletionService
与通义千问大模型进行对话
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
var builder = Kernel.CreateBuilder();
builder.Services.AddOpenAIChatCompletion("qwen-max", "sk-one-api-token");
builder.Services.ConfigureHttpClientDefaults(b =>
b.ConfigurePrimaryHttpMessageHandler(() => new QwenRedirectingHandler()));
var kernel = builder.Build();
var prompt = @"<message role=""user"">博客园是什么网站</message>";
var answer = await kernel.InvokePromptAsync(prompt);
Console.WriteLine(answer);
class QwenRedirectingHandler() : DelegatingHandler(new HttpClientHandler())
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
request.RequestUri = new UriBuilder(request.RequestUri!) { Scheme = "http", Host = "one-api", Port = 3000 }.Uri;
return base.SendAsync(request, cancellationToken);
}
}
运行程序,通义千问给出下面的回答:
博客园是一个面向软件开发者的中文技术社区网站,创建于2004年。该网站主要提供博客空间、在线阅读和发布文章、分享开发技术信息、交流编程经验等功能服务。博客园汇集了众多的软件开发者和技术爱好者,内容覆盖程序设计、系统架构、数据库、人工智能、网络安全等多个领域,是IT从业人员学习、分享和成长的重要平台之一。
标签:Kernel,Semantic,千问,DashScope,api,OpenAI,通义
From: https://www.cnblogs.com/dudu/p/18016887