Semantic Kernel/C#:接入智谱AI的两种方式

news/2024/11/13 11:17:57/文章来源:https://www.cnblogs.com/mingupupu/p/18370917

Semantie Kernel中对话请求默认是发送到OpenAI去的:

image-20240820135810583

其他与OpenAI对话请求接口兼任的模型平台,一般只需要修改host即可,如下所示:

 default:uriBuilder = new UriBuilder(request.RequestUri){// 这里是你要修改的 URLScheme = "https",Host = host,Path = "v1/chat/completions",};request.RequestUri = uriBuilder.Uri;break;

但是智谱AI的对话接口地址如下:

image-20240820140509016

在python中这样就可以用,但SemanticKernel中好像还没有base_url的设置。

有两种方式可以实现。

一种是想和之前其他模型用相同的方式,把智普平台作为一种特殊的方式处理。

在appsettings.json中添加一个Platform字段,请求接口完全兼容OpenAI的可以不写:

image-20240820141319013

创建Kernel是这样的:

 var builder = Kernel.CreateBuilder().AddOpenAIChatCompletion(modelId: OpenAIOption.ChatModel,apiKey: OpenAIOption.Key,httpClient: new HttpClient(handler));
_kernel = builder.Build();

然后在OpenAIHttpClientHandler为智谱平台做一下不同的处理:

public class OpenAIHttpClientHandler : HttpClientHandler
{protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken){UriBuilder uriBuilder;string url = OpenAIOption.Endpoint;string platform = OpenAIOption.Platform;Uri uri = new Uri(url);string host = uri.Host;switch (request.RequestUri?.LocalPath){case "/v1/chat/completions":switch(platform){case "ZhiPu":uriBuilder = new UriBuilder(request.RequestUri){// 这里是你要修改的 URLScheme = "https",Host = host,Path = "api/paas/v4/chat/completions",};request.RequestUri = uriBuilder.Uri;break;default:uriBuilder = new UriBuilder(request.RequestUri){// 这里是你要修改的 URLScheme = "https",Host = host,Path = "v1/chat/completions",};request.RequestUri = uriBuilder.Uri;break;}break;}HttpResponseMessage response = await base.SendAsync(request, cancellationToken);return response;}
}

尝试是否成功:

image-20240820141544371

另一种方式更加简单,只需要在appsettings.json中这样写:

image-20240820141816259

使用这种方式创建Kernel即可:

image-20240820141925142

尝试是否成功:

image-20240820142138323

在AvaloniaChat中为了和其他平台保持统一的使用方式,我选择第一种方式。

OpenAIHttpClientHandler可以在此处查看:https://github.com/Ming-jiayou/AvaloniaChat/blob/main/src/AvaloniaChat/Model/OpenAIHttpClientHandler.cs

创建Kernel的两种方式可以在此处查看:https://github.com/Ming-jiayou/AvaloniaChat/blob/main/src/AvaloniaChat/ViewModels/MainViewModel.cs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

挑选最佳待办事项工具:专家指南

国内外主流的10款好用的待办事项软件对比:1.PingCode;2Worktile;3.微软To Do;4.MeisterTask;5.Airtable;6.Wrike;7.Basecamp;8.ProofHub;;9.嘀嗒清单(TickTick);10.番茄ToDo。在管理日常任务时,挑选一款合适的待办事项软件可能是个挑战,尤其是市面上有如此多的选…

EBS: FRM-41041: 找不到表模块:无效的ID

EBS: FRM-41041: 找不到表模块:无效的ID EBS: FRM-41041: 找不到表模块:无效的ID。FRM-41041: Cannot find form module: invalid ID. Cause: An invalid ID was passedtoa Built-in subprogram. Action: Verify that a proper call to FIND_FORM will be performed.Level…

钓鱼WLK

首先我们需要将交互键打开并设置你想要的快捷键。设置完成后 输入/console SoftTargetInteractArc 2/console SoftTargetInteractRange 30这2宏的作用可以允许你在不面向目标的情况下进行交互以及将交互半径增加到30码!这时候我们就可以进行钓鱼,以往我们钓鱼的步骤是中鱼,鼠…

双非一本,从中厂进大厂,年薪 50w+

大家好,我是R哥。 今天分享一个激动人心的面试辅导案例,一个二线互联网中厂的兄弟,辅导冲进一线互联网大厂,年薪 50 万+,涨幅 50% 左右。 先介绍下这个兄弟(小超)的背景:小超兄弟,双非一本,工作 5 年+,坐标杭州,在一家互联网中厂上班,核心诉求是互联网中大厂,并且…

UMG富文本块

UMG富文本块 了解如何使用虚幻引擎中的UMG富文本块。 虚幻示意图形(UMG)中提供的文本块带来了各种各样的样式选项和自定义。但是,你可能需要更灵活的文本块选项,以支持标记样式更改、内联图像、超链接等功能。 UMG RichTextBlock 提供了一种更为灵活的文本块。它支持标记样…

表格控件:计算引擎、报表、集算表

近日,葡萄城正式发布了SpreadJS最新版本 V17.1,为前端表格控件市场带来了一系列令人瞩目的新特性和功能增强。本次更新旨在进一步提升用户在计算引擎、报表生成和分析等方面的体验,为各行业的开发者提供更强大的工具支持。 主要更新亮点 工作薄增强 居右对齐 将样式的 textD…

lsof命令

lsof用于列出有关各种进程打开的文件的信息 列出打开特定文件的进程 lsof /var/log/secure列出目录下打开的文件根据进程名列出打开的文件 lsof -c ssh -c init | head列出特定用户打开的文件 lsof -u zabbix根据进程列出所有打开的文件 lsof -p 1268 列出所有网络连接 lsof -…

Docker无法运行java虚拟机报错There is insufficient memory for the Java Runtime

镜像导入到docker后无法启动容器的问题,但是上传到别的服务器上面又可以正常启动容器,报错信息如下:# There is insufficient memory for the Java Runtime Environment to continue. # Cannot create GC thread. Out of system resources. # Can not save log file, dump t…

Easysearch x 《黑神话悟空》有奖征文获奖结果公示

随着《黑神话:悟空》游戏的正式发售,我们 INFINI Labs 组织的 Easysearch 有奖征文大赛也圆满落幕。本次征文活动自启动以来,收到了众多创作者的热情投稿。在此,我们衷心感谢每一位参与活动的作者,是你们的才华和热情让这次征文活动异彩纷呈。 经过专业评审团的认真评选,…

JetBrains Rider 2024.2 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE

JetBrains Rider 2024.2 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDEJetBrains Rider 2024.2 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE JetBrains 跨平台开发者工具 请访问原文链接:https://sysin.org/blog/jetbrains-rider/,查看最新版。原创作品…

排序算法 常见排序算法特性比较

目录排序的概念内外部排序稳定与非稳定排序改进排序的指标图片 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对…

JetBrains PyCharm 2024.2 (macOS, Linux, Windows) - 面向专业开发者的 Python IDE

JetBrains PyCharm 2024.2 (macOS, Linux, Windows) - 面向专业开发者的 Python IDEJetBrains PyCharm 2024.2 (macOS, Linux, Windows) - 面向专业开发者的 Python IDE JetBrains 跨平台开发者工具 请访问原文链接:https://sysin.org/blog/jetbrains-pycharm/,查看最新版。原…