初步体验通过 Semantic Kernel 与自己部署的通义千问开源大模型进行对话

这篇具有很好参考价值的文章主要介绍了初步体验通过 Semantic Kernel 与自己部署的通义千问开源大模型进行对话。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

春节之前被 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 就小功告成了,下面是完整代码。文章来源地址https://www.toymoban.com/news/detail-825284.html

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);
    }
}

到了这里,关于初步体验通过 Semantic Kernel 与自己部署的通义千问开源大模型进行对话的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分享】阿里版ChatGPT—通义千问(初体验)

    哈喽,大家好,我是木易巷~ 在上个月4月7号,木易巷开始申请阿里云大模型开始邀请测试「通义千问」,到今天早上,木易巷收到了申请通过的短信。 官网地址:tongyi.aliyun.com 迫不及待去测试了一下,效果还可以,中规中矩。 可以轻松地将结构化数据以Markdown格式输出,并

    2024年02月05日
    浏览(45)
  • 阿里版ChatGPT——通义千问,开箱初体验

    所有行业、所有应用、所有服务都值得基于新型人工智能技术重做一遍,在带来创造性客户体验的同时,生产范式、工作范式、生活范式也将发生变化。——阿里集团董事会主席兼CEO 张勇 2023阿里云峰会上,通义千问大语言模型对外发布,宣称阿里所有App,包括天猫、淘宝、

    2024年02月02日
    浏览(39)
  • 提前预体验阿里大模型“通义千问”的方法来了!

    随着AI大模型的浪潮席卷全球,如今的AI技术已经颠覆了大家对传统AI的认识,微软更是用浏览器与搜索引擎上的实践,证明了当今的AI技术具备打破行业格局的能力。 对于我们应用开发者来说,AI基建的建设与竞争是无法参与的,但在AI的应用领域依然大有可为!目前,国内各

    2024年02月09日
    浏览(40)
  • 旁门左道:借助 HttpClientHandler 拦截请求,体验 Semantic Kernel 插件

    前天尝试通过 one-api + dashscope(阿里云灵积) + qwen(通义千问) 运行 Semantic Kernel 插件(Plugin) ,结果尝试失败,详见前天的博文。 今天换一种方式尝试,选择了一个旁门左道走走看,看能不能在不使用大模型的情况下让 Semantic Kernel 插件运行起来,这个旁门左道就是从 Stephen T

    2024年02月19日
    浏览(25)
  • 通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

    立即体验基于函数计算部署通义千问预体验: https://developer.aliyun.com/topic/aigc_fc AIGC 浪潮已来,从文字生成到图片生成,AIGC 的创造力让人惊叹,更多人开始探索如何使用 AI 提高生产效率,激发更多创作潜能,然而在实际应用中,AI 技术的高门槛仍然让很多人望而却步, 普通

    2024年02月07日
    浏览(36)
  • 使用开源通义千问模型(Qwen)搭建自己的大模型服务

    1、使用开源的大模型服务搭建属于自己的模型服务; 2、调优自己的大模型; 采用通义千问模型,https://github.com/QwenLM/Qwen 1、下载模型文件 开源模型库:https://www.modelscope.cn/models 2、下载使用docker 镜像 3、启动脚本 https://github.com/QwenLM/Qwen/blob/main/docker/docker_web_demo.sh 4、运行 访

    2024年02月01日
    浏览(51)
  • 通义千问部署搭建

    部署参考视频 通义千问-7B-预训练-模型库 弹出新页面 2.2.1 问题1 :ImportError: This modeling file requires the following packages that were not found in your environment: transformers_stream_generator. Run pip install transformers_stream_generator 解决方法 pip install transformers_stream_generator 这就好了,重新运行下 Valu

    2024年02月10日
    浏览(27)
  • 【LLM】主流大模型体验(文心一言 科大讯飞 字节豆包 百川 阿里通义千问 商汤商量)

    智谱AI体验 百度文心一言体验 科大讯飞大模型体验 字节豆包 百川智能大模型 阿里通义千问 商汤商量 简要分析:仅从测试“老婆饼为啥没有老婆”这个问题的结果来看,chatglm分点作答有条理(但第三点略有逻辑问题);字节豆包的说法有点胡扯,老婆饼怎么会像低头微笑的

    2024年02月08日
    浏览(49)
  • 2023年的深度学习入门指南(26) - 在自己电脑上运行通义千问7b模型

    通过量化,通义千问4位量化的模型大小为5.86G,可以在3060等小于16G的家用GPU上也可以运行起来。 通义千问7b提供了4位量化好的Qwen/Qwen-7B-Chat-Int4模型,我们直接调用就好。 首先安装依赖包: 如果你是Linux环境的话,可以安装下Flash-Attention来加速: Windows下暂时还用不了,这个

    2024年02月10日
    浏览(39)
  • 【AIGC】本地部署通义千问 1.5 (PyTorch)

    今天想分享一下 Qwen 1.5 官方用例的二次封装( huggingface 说明页也有提供源码),其实没有太多的技术含量。主要是想记录一下如何从零开始在不使用第三方工具的前提下,以纯代码的方式本地部署一套大模型,相信这对于技术人员来说还是非常有用的。 虽然现在人人都可以

    2024年04月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包