快速上手——.Net封裝使用DeekSeek-V3 模型
新年伊始,萬(wàn)象更新!隨著人工智能技術(shù)的飛速發(fā)展,AI在各個(gè)領(lǐng)域的應(yīng)用越來(lái)越廣泛。無(wú)論是自然語(yǔ)言處理、圖像識(shí)別,還是智能推薦系統(tǒng),AI都在改變著我們的生活和工作方式。在這個(gè)新春佳節(jié),AI技術(shù)的火爆程度更是達(dá)到了一個(gè)新的高度,特別是DeepSeek的耀眼成就,更是讓納斯達(dá)克眾多科技股崩盤,許多企業(yè)和開(kāi)發(fā)者都在積極探索如何將AI技術(shù)應(yīng)用到自己的產(chǎn)品和服務(wù)中,以提升用戶體驗(yàn)和業(yè)務(wù)效率。
趁著這股東風(fēng),我們就祭出.net 技術(shù),來(lái)場(chǎng)AI集成秀,也祝大家在新的一年里,各項(xiàng)技術(shù)順利推進(jìn),收獲滿滿!
1.DeepSeek API開(kāi)發(fā)集成
DeepSeek是一家專注于自然語(yǔ)言處理(NLP)和人工智能技術(shù)的公司,提供了強(qiáng)大的API接口,幫助開(kāi)發(fā)者快速構(gòu)建智能應(yīng)用。DeepSeek的API與OpenAI的API兼容性良好,這意味著如果你之前使用過(guò)OpenAI的API,可以很容易地遷移到DeepSeek的平臺(tái)上。
DeepSeek的API提供了多種功能,包括文本生成、文本分類、情感分析、問(wèn)答系統(tǒng)等。與OpenAI類似,DeepSeek的API也支持多種編程語(yǔ)言,包括Python、JavaScript、Java、C#等。這使得開(kāi)發(fā)者可以根據(jù)自己的技術(shù)棧選擇合適的語(yǔ)言進(jìn)行開(kāi)發(fā)。
這里我們使用最熟悉的語(yǔ)言 .net, 來(lái)訓(xùn)練我們的AI小助手。
2. 一個(gè)簡(jiǎn)單的例子
在本節(jié)中,我們將使用.NET 9編寫一個(gè)簡(jiǎn)單的示例,展示如何調(diào)用DeepSeek的API進(jìn)行文本生成。我們將創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,通過(guò)調(diào)用DeepSeek的API生成一段新年祝福語(yǔ)。
2.1 創(chuàng)建項(xiàng)目
首先,打開(kāi)Visual Studio 2022,創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序項(xiàng)目。選擇.NET 9作為目標(biāo)框架,并命名為DeepSeekExample。
2.2 安裝必要的NuGet包
為了能夠方便地調(diào)用DeepSeek的API,我們需要安裝System.Net.Http.Json和OpenAI 等NuGet包??梢酝ㄟ^(guò)NuGet包管理器控制臺(tái)運(yùn)行以下命令來(lái)安裝:
Install-Package System.Net.Http.Json
Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Abstractions
Install-Package Microsoft.Extensions.Configuration.Binder
Install-Package Microsoft.Extensions.Configuration.EnvironmentVariables
Install-Package Microsoft.Extensions.Configuration.UserSecrets
Install-Package OpenAI
2.3 編寫代碼
接下來(lái),我們編寫代碼來(lái)調(diào)用DeepSeek的API。首先,在Program.cs文件中添加以下代碼:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel;
using System.ClientModel.Primitives;
internal class Program
{
static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddUserSecrets<Program>()
.Build();
var key = configuration.GetValue<string>("DeepSeek:ApiKey");
ApiKeyCredential cred = new ApiKeyCredential(key);
// DeepSeek-V3
ChatClient client = new ChatClient("deepseek-chat", cred,new OpenAIClientOptions
{
Endpoint = new Uri("https://api.deepseek.com"),
UserAgentApplicationId = "webmote",
ProjectId = "deepseek-test",
RetryPolicy = ClientRetryPolicy.Default
});
List<ChatMessage> messages = new List<ChatMessage>()
{
new SystemChatMessage("You are a helpful assistant."),
new UserChatMessage("Hello, Nice to meet you.")
};
var result = client.CompleteChat(messages);
if (result?.Value != null)
{
Console.WriteLine(result.Value.Content[0].Text);
}
}
}
- ApiKey: 這是你的DeepSeek API密鑰,配置為 DeepSeek:ApiKey,你可以使用環(huán)境變量添加,也可以用管理機(jī)密信息添加,這里大力推薦使用機(jī)密信息進(jìn)行安全管理, 這里我們可以利用VS的幫助工具建立,如下圖所示。
圖片
- 按照打開(kāi)的secret.json,輸入你的api key:
圖片
- AI模型,這里使用最新的AI模型,DeepSeek-V3模型,字符串為: "deepseek-chat"
- Chat Message: 使用system賦予Ai一個(gè)角色,然后,我們進(jìn)行提問(wèn)。
List<ChatMessage> messages = new List<ChatMessage>()
{
new SystemChatMessage("You are a helpful assistant."),
new UserChatMessage("Hello, Nice to meet you.")
};
3. 輸出結(jié)果
確認(rèn)你的api Key是正確的,進(jìn)行訪問(wèn)連接,DeepSeek給予我們一個(gè)回答:
Hello! Nice to meet you too!
How can I assist you today?
如果你也能獲得答案,那么恭喜你!你已經(jīng)成功的連接到DeepSeek API。
后續(xù),你可以開(kāi)始你的激動(dòng)人心的AI旅程了!
4. 其他方案
Github上也有其他人封裝的net類庫(kù),例如 Fitomad.DeepSeek, 使用起來(lái)也很流暢,編程體驗(yàn)更好,大家如果沒(méi)有openai使用切換的話,可以下載這個(gè)庫(kù)看看。
var deepSeekSettings = new DeepSeekSettingsBuilder()
.WithApiKey(_apiKey)
.Build();
var services = new ServiceCollection();
services.AddDeepSeekHttpClient(settings: aiSettings);
...
public class GameController: ControllerBase
{
private IDeepSeekClient _deepSeekClient;
public GameController(IDeepSeekClient deepSeekClient)
{
_deepSeekClient = deepSeekClient;
}
...
ChatRequest request = new ChatRequestBuilder()
.WithModel(ChatModelType.DeepSeekChat)
.WithSystemMessage("Eres un profesor universitario de Astrofísica.")
.WithUserMessage("?En qué consiste la Constante Cosmológica de Einstein?")
.WithTemperatute(-3.0)
.Build();
var resp = await _client.ChatCompletion.CreateChatAsync(request)
}
5.DeepSeek的API收費(fèi)模式
DeepSeek的API收費(fèi)模式與OpenAI類似,采用按使用量計(jì)費(fèi)的方式。具體來(lái)說(shuō),DeepSeek的API收費(fèi)基于以下幾個(gè)因素:
請(qǐng)求次數(shù): 每次調(diào)用API都會(huì)計(jì)入請(qǐng)求次數(shù),不同的API端點(diǎn)可能有不同的計(jì)費(fèi)標(biāo)準(zhǔn)。
令牌數(shù): 生成的文本長(zhǎng)度(以令牌為單位)也會(huì)影響費(fèi)用。通常,生成的文本越長(zhǎng),費(fèi)用越高。
API套餐: DeepSeek提供了多種API套餐,開(kāi)發(fā)者可以根據(jù)自己的需求選擇合適的套餐。套餐通常包括一定的免費(fèi)額度,超出部分按量計(jì)費(fèi)。
DeepSeek的API收費(fèi)模式靈活,適合不同規(guī)模的開(kāi)發(fā)者和企業(yè)。對(duì)于小型項(xiàng)目或個(gè)人開(kāi)發(fā)者,可以選擇按需付費(fèi)的模式;對(duì)于大型企業(yè)或高頻使用的項(xiàng)目,可以選擇預(yù)付費(fèi)套餐以獲得更優(yōu)惠的價(jià)格。
圖片
大家可以按照需要,進(jìn)行充值消費(fèi),我先來(lái)50看看。
圖片
6. 總結(jié)
通過(guò)本文,我們?cè)敿?xì)介紹了如何使用.NET 9 調(diào)用 DeepSeek 的API進(jìn)行文本生成。我們從創(chuàng)建項(xiàng)目、安裝必要的NuGet包,到編寫代碼、運(yùn)行實(shí)例,一步步展示了整個(gè)過(guò)程。此外,我們還介紹了DeepSeek的API收費(fèi)模式,幫助開(kāi)發(fā)者更好地了解如何控制成本。