如何在Semantic Kernel中使用第三方代理OpenAI API接口
最近手里没有官方的OpenAI API Key了,只能在第三方代理平台去购买API Key。
但是使用Semantic Kernel的时候发现AddOpenAIChatCompletion
不像AddAzureOpenAIChatCompletion
那样可以选择终结点
去看了下Semantic Kernel项目下的issues,这个问题被提及了好几次,但是官方仍然没有提供Endpoint。不过广大的开发者们想出了应对方法,就是对参数里的HttpClient进行更改。
有很多途径可以把HttpClient请求里的官方API域名改为第三方代理OpenAI域名,但是这里只提及一个我试了可以用的:
- 确保已安装包
Microsoft.Extensions.Http
- 先自定义一个 HTTP 消息处理程序(DelegatingHandler),它用于处理 HTTP 请求并在发送请求前对请求进行修改。
- 重写其SendAsync方法,该方法在发送 HTTP 请求时被调用,将请求的目标 URI 修改为了一个新的 URI。
class CustomRedirectingHandler() : DelegatingHandler(new HttpClientHandler())
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
request.RequestUri = new UriBuilder(request.RequestUri!) { Host = "api.xxxxxx.com" }.Uri; //替换为第三方代理API的地址
return base.SendAsync(request, cancellationToken);
}
}
然后就可以在注册服务时使用了
var builder = Kernel.CreateBuilder()
.AddOpenAIChatCompletion(model, apiKey,httpClient:new HttpClient(new CustomRedirectingHandler()));
这个时候你拿到的IChatCompletionService
就会将请求直接发送到第三方代理OpenAI API
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理