.NET AI如何從0開始?你會(huì)嗎?
你是否在思考如何利用AI為您公司的產(chǎn)品增加智能方向的業(yè)務(wù)擴(kuò)展?
或者你是否有思考過怎么去利用AI減少部分工作量?
如果你有類似于上面的問題,想要學(xué)習(xí)AI,并且您是一名.NET開發(fā)工程師,或您是一名棄暗投明的Java轉(zhuǎn).NET AI方向的工程師,那么你可以從這一篇開始,使用.NET semantic-kernel進(jìn)行從0開始的入門基礎(chǔ)教程,并且在網(wǎng)站免費(fèi)訪問,當(dāng)然如果您沒有AI,那么也可以在 http://api.token-ai.cn/網(wǎng)站注冊(cè),然后網(wǎng)站提供了hunyuan-lite永久免費(fèi)的模型供您消息使用,下面,我們將要從控制臺(tái)開始我們的入門教程。
準(zhǔn)備
實(shí)現(xiàn)我們需要確認(rèn)您是一名有過.NET經(jīng)驗(yàn)的開發(fā)者,您對(duì)于.NET至少是一名初級(jí)工程師;
好,下面我們將打開我們常用的編程工具Visual Studio 2022
來,跟著我們一步一步來
創(chuàng)建項(xiàng)目
- 點(diǎn)擊創(chuàng)建新項(xiàng)目
圖片
- 搜索控制臺(tái)應(yīng)用,然后點(diǎn)擊下一步。
圖片
- 命名1_Semantic_Kernel_Chat,然后點(diǎn)擊下一步,
圖片
這里的框架選擇.NET 8.0,然后其他的默認(rèn)即可,然后點(diǎn)擊創(chuàng)建,我們的項(xiàng)目就創(chuàng)建完成,然后緊跟著我們繼續(xù)。
圖片
圖片
安裝依賴
在上面的步驟我們創(chuàng)建好了一個(gè)控制臺(tái),然后接下來我們需要對(duì)這個(gè)控制臺(tái)項(xiàng)目安裝一些需要用到的依賴包。
- 右鍵項(xiàng)目1_Semantic_Kernel_Chat,然后點(diǎn)擊管理 NuGet程序包(N)。
圖片
- 然后搜索Semantic.Kernel,找到Microsoft.SemanticKernel,點(diǎn)擊安裝,然后關(guān)閉這個(gè)頁面。
圖片
注冊(cè)免費(fèi)的大模型
在上面的教程當(dāng)中,我們安裝了Microsoft.SemanticKernel依賴包,現(xiàn)在我們需要在一個(gè)提供免費(fèi)AI大模型的網(wǎng)站注冊(cè),
- 打開https://api.token-ai.cn/,如果您有Github賬號(hào)的話直接點(diǎn)擊下面的Github圖標(biāo)即可登錄,如果沒有則點(diǎn)擊注冊(cè)賬號(hào)注冊(cè)一個(gè)賬號(hào),然后我們登錄系統(tǒng)當(dāng)中,
圖片
- 創(chuàng)建令牌,點(diǎn)擊菜單中的圖標(biāo)鑰匙。
圖片
- 在這里系統(tǒng)默認(rèn)提供了一個(gè)Token,點(diǎn)擊復(fù)制Key即可,接下來下面會(huì)用到這個(gè)。
圖片
添加Chat對(duì)話示例
- 由于SK默認(rèn)的限制并沒有提供直接修改地址的接口,所以我們需要自定義HttpClientHandler,下面我們創(chuàng)建一個(gè)OpenAIHttpClientHandler.cs,然后提供以下實(shí)現(xiàn)
public class OpenAIHttpClientHandler : HttpClientHandler
{
private readonly string _uri;
public OpenAIHttpClientHandler(string uri) => _uri = uri.TrimEnd('/');
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
CancellationToken cancellationToken)
{
UriBuilder uriBuilder;
if (request.RequestUri?.LocalPath == "/v1/chat/completions")
{
uriBuilder = new UriBuilder(_uri + "/v1/chat/completions");
request.RequestUri = uriBuilder.Uri;
}
else if (request.RequestUri?.LocalPath == "/v1/embeddings")
{
uriBuilder = new UriBuilder(_uri + "/v1/embeddings");
request.RequestUri = uriBuilder.Uri;
}
return await base.SendAsync(request, cancellationToken);
}
}
- 打開我們的Program.cs添加具體代碼,在這里我們使用了hunyuan-lite模型,這個(gè)是https://api.token-ai.cn/提供的免費(fèi)模型,并且不限制次數(shù)(5 QPS)。
using _1_Semantic_Kernel_Chat;
using Microsoft.SemanticKernel;
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion(
modelId: "hunyuan-lite", // 請(qǐng)注意hunyuan-lite模型是免費(fèi)提供的。
apiKey: "這里填寫在https://api.token-ai.cn/創(chuàng)建的令牌",
httpClient: new HttpClient(new OpenAIHttpClientHandler("https://api.token-ai.cn/")))
.Build();
await foreach (var item in kernel.InvokePromptStreamingAsync("您好,我是TokenAI。"))
{
Console.Write(item.ToString());
};
- 執(zhí)行項(xiàng)目,然后會(huì)輸出這個(gè)模型的回復(fù),當(dāng)你寫到這里的時(shí)候那么您已經(jīng)跨入了第一步,當(dāng)然不要太高興了,下面將會(huì)迎來更難的挑戰(zhàn)。
圖片
總結(jié)
本文主要為.NET開發(fā)者提供了如何從零開始使用.NET的semantic-kernel進(jìn)行AI開發(fā)的教程。首先,作者詳細(xì)介紹了如何創(chuàng)建一個(gè).NET項(xiàng)目,并安裝需要的Microsoft.SemanticKernel依賴包。接著,作者引導(dǎo)讀者在提供免費(fèi)AI大模型的網(wǎng)站上注冊(cè),并獲取API令牌。然后,作者提供了一個(gè)自定義HttpClientHandler的示例,并展示了如何在Program.cs中添加具體代碼來使用hunyuan-lite模型。最后,作者演示了項(xiàng)目的執(zhí)行結(jié)果,并提醒讀者接下來的學(xué)習(xí)將會(huì)更有挑戰(zhàn)性。