欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Semantic Kernel/C#:接入智谱AI的两种方式

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

2024/10/24 14:23:09 来源:https://blog.csdn.net/mingupup/article/details/141383602  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com