当前位置:首页 > AI > 正文内容

开始体会经过 Semantic Kernel 与自己布置的通义千问开源大模型进行对话

邻居的猫1个月前 (12-09)AI1554

新年之前被 Semantic Kernel 所招引,开端了解它,学习它。

在写这篇博文之前读了一些英文博文,趁便在这儿共享一下:

  • Intro to Semantic Kernel – Part One
  • Intro to Semantic Kernel – Part Two
  • Build a custom Copilot experience with your private data using and Kernel Memory
  • Semantic Kernel: The New Way to Create Artificial Intelligence Applications
  • Semantic Kernel: A bridge between large language models and your code

为了便利学习与体会以及写代码实践 Semantic Kernel,计划自己布置一个对中文友爱的开源大模型,所以挑选了通义千问

依据通义千问开源库房中的 README,经过一番折腾,总算布置成功,详见博文 以容器办法布置通义千问 Qwen

紧接着便是测验经过 Semantic Kernel 与自己布置的通义千问进行对话,在昨天晚上睡觉前开始测验成功,经过这篇博文记载一下。

首要面对的问题是 Semantic Kernel 与通义千问之间互不支撑(内置支撑),Semantic Kernel 现在只内置支撑 OpenAI 与 Azure OpenAI。走运的是,通义千问完成了一个四两拔千斤的奇妙才能——供给了兼容 OpenAI api 的 api,所以这个大问题方便的处理为一个小问题——怎么诈骗 Semantic Kernel 让它在恳求 OpenAI api 时改道恳求自己布置的通义千问模型服务?

在 Semantic Kernel github issue 的一个谈论中发现了一个偷梁换柱的奇妙办法——经过 DelegatingHandler 修正 HttpClient 恳求的 url。

对应到这儿的场景便是修正所恳求的 OpenAI api url 中的 schemehost,也便是将 https://api.openai.com 替换为 http://localhost:8901,完成代码如下

class QwenRedirectingHandler() : DelegatingHandler(new HttpClientHandler())
{
    protected override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.RequestUri = new UriBuilder(request.RequestUri!) { Scheme = "http", Host = "localhost", Port = 8901 }.Uri;
        return base.SendAsync(request, cancellationToken);
    }
}

偷梁换柱之后本认为开始体会小功乐成,却遇到一个小波折,在用下面的代码发送 prompt 时报错

var prompt = @"博客园是什么网站";
var result = await kernel.InvokePromptAsync(prompt);
Console.WriteLine(result);

过错来自通义千问的呼应

{"detail":"Invalid request: Expecting at least one user message."}

后来参阅大众号文章运用阿里通义千问和Semantic Kernel,10分钟建立常识助手中的代码处理了

var prompt = @"<message role=""user"">博客园是什么网站</message>";
var summarize = kernel.CreateFunctionFromPrompt(prompt);
var result = kernel.InvokeStreamingAsync(summarize);

await foreach (var item in result)
{
    Console.Write(item.ToString());
}

处理这个问题后,控制台就能看到来自通义千问慢悠悠的吐字答复:

博客园(CNG.cn)是我国最大的IT社区,也是一个专业的程序员学习沟通的渠道。它供给了一个能够让程序员沟通思想、共享经历的环境,并且有多重功用支撑用户创立个人博客和参加评论。

注:这儿运用的通义千问模型版本是 Qwen-7B-Chat

到此,开始体会 Semantic Kernel 就小功乐成了,下面是完好代码。

using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;

var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion("gpt-3.5-turbo", "***");
builder.Services.ConfigureHttpClientDefaults(b =>
    b.ConfigurePrimaryHttpMessageHandler(() => new QwenRedirectingHandler()));

var kernel = builder.Build();

var prompt = @"<message role=""user"">博客园是什么网站</message>";
var summarize = kernel.CreateFunctionFromPrompt(prompt);
var result = kernel.InvokeStreamingAsync(summarize);

await foreach (var item in result)
{
    Console.Write(item.ToString());
}

class QwenRedirectingHandler() : DelegatingHandler(new HttpClientHandler())
{
    protected override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.RequestUri = new UriBuilder(request.RequestUri!) { Scheme = "http", Host = "localhost", Port = 8901 }.Uri;
        return base.SendAsync(request, cancellationToken);
    }
}

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=405

分享给朋友:

“开始体会经过 Semantic Kernel 与自己布置的通义千问开源大模型进行对话” 的相关文章

深入探讨Function Calling:完成外部函数调用的作业原理

深入探讨Function Calling:完成外部函数调用的作业原理

导言 Function Calling 是一个答应大型言语模型(如 GPT)在生成文本的进程中调用外部函数或服务的功用。Function Calling答应咱们以 JSON 格局向 LLM 模型描绘函数,并运用模型的固有推理才能来决议在生成呼应之前是否调用该函数。模型自身不履行函数,而是生成包括函数...

机器学习苹果电脑,性能与框架的双重优势

机器学习苹果电脑,性能与框架的双重优势

苹果电脑在机器学习领域有着广泛的应用和支持。以下是关于苹果电脑在机器学习方面的主要信息:1. 设备端机器学习: 苹果提供了强大的设备端机器学习功能,如Core ML和Create ML,这些工具可以帮助开发者构建、训练和部署机器学习模型。Core ML针对各种类型的模型进行了设备端性能优化,能够...

聚类机器学习, 什么是聚类机器学习?

聚类机器学习, 什么是聚类机器学习?

聚类是一种无监督学习的方法,主要用于将数据集分为不同的组或“簇”,使得同一簇内的数据点彼此相似,而不同簇的数据点则彼此不相似。这种方法在很多领域都有应用,比如市场细分、客户关系管理、图像处理和社交网络分析等。在聚类算法中,常见的有K均值聚类、层次聚类、DBSCAN等。K均值聚类是一种基于距离的算法,...

ai美女,技术与审美的交融

ai美女,技术与审美的交融

AI美女的崛起:技术与审美的交融AI绘画工具助力AI美女诞生在绘画领域,AI工具如SD(stable diffusion)和midjourney等,为AI美女的诞生提供了强大的技术支持。这些工具能够根据用户的需求,生成各种风格的美女图像,满足了人们对个性化审美的追求。AI美女视频制作:从剪辑到拆帧利...

俄语学习机器,新时代语言学习的得力助手

俄语学习机器,新时代语言学习的得力助手

1. Duolingo:这款应用利用AI技术提供个性化学习体验,根据你的进度和错误调整练习内容。通过游戏化的方式提供词汇、语法、听力和口语练习。你可以下载应用,选择俄语课程,按课程指引学习。2. Babbel:结合AI技术,提供个性化课程和练习,重点是实际交流所需的俄语技能。注册账户后,选择俄语课程...

机器学习在线教程,在线教程指南

以下是几个推荐的机器学习在线教程和平台,适合不同层次的学习者:1. w3school 机器学习入门教程: 简介: 这个教程从数学和统计学的基础开始,逐步介绍如何根据数据集计算重要数值,适合初学者。2. 知乎 自学机器学习和深度学习的网站: 简介: 推荐了白板推导系...