当前位置: 首页 > news >正文

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

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.mrgr.cn/news/3988.html

相关文章:

  • [mysql][sql]mysql查询表大小
  • 滑块缺口研究实例(C#颜色滑块缺口计算)
  • 短视频SDK解决方案,Flutter赋能,跨平台无缝体验
  • 【Python机器学习】NLP概述——词序和语法
  • 仪器校准周期建议多长时间一次?仪器无校准后果怎么样?
  • 【前端】VUE 在线运行 模拟器 通过字符串动态渲染页面 可以灵活使用
  • Java 入门指南:List 接口
  • Ruby在嵌入式系统:轻量级语言的灵活应用
  • 《数据分析与知识发现》
  • Python知识点:如何使用Boto3进行AWS服务管理
  • 27.CSS 伪类是什么? 屏幕外
  • 开始尝试从0写一个项目--后端(四)
  • Java面试题———热门篇①
  • fastapi+react实现第三方登录功能示例
  • Android系统和开发--安全性和权限管理 SELinux 策略 安全架构
  • Linux ssh 免密失效
  • linux:线程及其相关函数,线程的回收
  • Java语聊大厅个人厅陪玩厅陪玩系统小程序源码
  • <数据集>无人机航拍不同高度牧羊识别数据集<目标检测>
  • 数据结构——顺序栈和链式栈