準備工作
先使用手機號在 https://platform.deepseek.com 上註冊賬號
最後進入充值頁面充值。如果沒有充值,則後續 API 調用會返回 402 錯誤
最後進入 https://platform.deepseek.com/api_keys 創建 API key 且複製出來,後續步驟將會用到
安裝庫
按照 .NET 的慣例,使用前先使用 NuGet 安裝對應的庫
- Microsoft.Agents.AI.OpenAI
安裝之後的 csproj 項目文件內容大概如下
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-preview.251219.1" />
</ItemGroup>
</Project>
編寫代碼
根據 DeepSeek 的官方文檔,可以知道 DeepSeek 是能夠完全兼容 OpenAI 的接口的,詳細請看 https://api-docs.deepseek.com/zh-cn/
通過文檔可以知道,只需要訪問的是 https://api.deepseek.com/v1 鏈接,即可兼容 OpenAI 的接口。注,這裏的 v1 不代表模型的版本,而是代表 API 的版本
通過與 OpenAI 的接口完全兼容的 https://api.deepseek.com/v1 鏈接,即可直接與 OpenAIClient 類型對接
對接代碼如下
var openAiClient = new OpenAIClient(new ApiKeyCredential(key), new OpenAIClientOptions()
{
Endpoint = new Uri("https://api.deepseek.com/v1")
});
以上代碼的 key 就是前面步驟保存的 API key 內容。為了安全起見,不應該將 API key 寫入到代碼裏面,我就簡單地放到 C:\lindexi\Work\deepseek.txt 文件裏,隨後用 File.ReadAllText 進行讀取,其代碼如下
var keyFile = @"C:\lindexi\Work\deepseek.txt";
var key = File.ReadAllText(keyFile);
var openAiClient = new OpenAIClient(new ApiKeyCredential(key), new OpenAIClientOptions()
{
Endpoint = new Uri("https://api.deepseek.com/v1")
});
根據 https://api-docs.deepseek.com/zh-cn/quick_start/pricing 文檔可以知道,現在 DeepSeek 提供了這些模型可以被調用:
- deepseek-chat: DeepSeek-V3.2 (非思考模式)
- deepseek-reasoner: DeepSeek-V3.2(思考模式)
咱這裏就隨意選了 deepseek-chat 模型,代碼如下
var chatClient = openAiClient.GetChatClient("deepseek-chat");
拿到 ChatClient 之後,就可以通過 CreateAIAgent 擴展方法創建 ChatClientAgent 對象了,代碼如下
ChatClient chatClient = openAiClient.GetChatClient("deepseek-chat");
ChatClientAgent aiAgent = chatClient.CreateAIAgent();
現在拿到的 ChatClientAgent 對象就可以直接開始跑了,如下面的測試例子
AgentRunResponse runResponse = await aiAgent.RunAsync("告訴我一個關於海盜的笑話");
Console.WriteLine(runResponse);
我跑了一下,可以在控制枱看到如下輸出信息,看起來 DeepSeek 的笑話還是很好笑的
好的,這裏有一個經典的海盜笑話:
---
一個海盜走進酒吧,酒保看到他右眼戴着眼罩,左手是鐵鈎,右腿是木棍做的假肢,就問:“哇,你這身行頭真厲害!是怎麼弄成這樣的?”
海盜説:“啊,這眼罩是因為有一天海鷗屎掉進我眼睛,我就瞎了。”
酒保一愣:“海鷗屎能讓人瞎?”
海盜:“呃……其實是我剛戴上眼罩第一天,不太習慣,用鐵鈎手揉眼睛時戳瞎的。”
如果發現在調用的時候提示的 HTTP 錯誤是 402 則證明賬户上已經沒錢了,或還沒進行充值。詳細錯誤信息請參閲 https://api-docs.deepseek.com/zh-cn/quick_start/error_codes
本文代碼放在 github 和 gitee 上,可以使用如下命令行拉取代碼。我整個代碼倉庫比較龐大,使用以下命令行可以進行部分拉取,拉取速度比較快
先創建一個空文件夾,接着使用命令行 cd 命令進入此空文件夾,在命令行裏面輸入以下代碼,即可獲取到本文的代碼
git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin cb19960c943988735924144830886c76f20adae9
以上使用的是國內的 gitee 的源,如果 gitee 不能訪問,請替換為 github 的源。請在命令行繼續輸入以下代碼,將 gitee 源換成 github 源進行拉取代碼。如果依然拉取不到代碼,可以發郵件向我要代碼
git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin cb19960c943988735924144830886c76f20adae9
獲取代碼之後,進入 SemanticKernelSamples/BewukobuheQinalaykodall 文件夾,即可獲取到源代碼
更多技術博客,請參閲 博客導航