在完成了从 .NET 8 到 .NET 10 的全面升级之后,孢子记账服务端已经具备了更现代化的运行时基础与更简洁的开发体验。然而,框架升级只是第一步,真正能让产品在市场中脱颖而出的,是其背后的智能化能力。用户期望的不再只是一款能记录收支的工具,而是一个能理解消费习惯、主动给出建议、甚至预测未来支出的智能助理。
从这篇文章开始,我们将进入孢子记账服务端的智能化改造阶段。智能化的核心离不开大语言模型(LLM)的支撑,而当前市面上已涌现出众多提供 LLM 能力的第三方平台,如 OpenAI、Azure OpenAI、DeepSeek、通义千问、智谱 AI 等。面对如此丰富的选择,我们首先需要做的,就是结合项目的实际需求------包括接口兼容性、模型能力、调用成本以及国内网络可访问性等因素------选择一个最合适的第三方平台,作为后续智能化功能的基础设施。
一、现有LLM平台
当前 LLM 平台市场已相当成熟,国内外均有大量可供选择的服务商。理解各平台的定位与特点,是做出合理技术选型的前提。
1.1 OpenAI
OpenAI 是当前最具影响力的 LLM 服务商,其 GPT-4o、GPT-4.1、GPT-5.5 等系列模型在综合能力上处于业界领先水平,支持文本、图像、音频等多模态输入,并提供标准的 Chat Completions、Assistants、Embeddings 等 API。OpenAI 的接口设计已成为业界事实标准,绝大多数其他平台均以兼容 OpenAI API 格式的方式对外提供服务。然而,OpenAI 的服务在中国大陆无法直接访问,且价格相对较高,对于个人项目和中小型应用而言调用成本不容忽视。
1.2 Azure OpenAI
Azure OpenAI 是微软将 OpenAI 模型托管于 Azure 云之上的企业级服务,提供与 OpenAI 完全相同的模型能力,同时具备更强的数据隐私保障、SLA 承诺以及与 Azure 生态的深度集成。对于已在使用 Azure 基础设施的团队而言,Azure OpenAI 是一个自然的选择,但其申请流程相对繁琐,且同样面临国内访问受限的问题。
1.3 DeepSeek
DeepSeek 是国内深度求索公司推出的大语言模型平台,其 DeepSeek-V3、DeepSeek-R1、DeepSeek-V4 等系列模型在多项基准测试中展现出接近甚至超越 GPT-4、GPT-5 级别的能力,尤其在代码生成、数学推理和中文理解方面表现突出。DeepSeek 提供完全兼容 OpenAI 格式的 API,价格极具竞争力,且服务可在国内直接访问,是目前国内开发者最受关注的平台之一。
1.4 通义千问
通义千问是阿里云旗下的大语言模型服务,依托阿里云强大的基础设施,提供 Qwen 系列模型的 API 调用能力。通义千问在中文场景下有着良好的表现,并与阿里云的其他 AI 服务(如语音识别、图像处理)形成完整的能力矩阵,适合已在使用阿里云技术栈的项目。其 API 同样兼容 OpenAI 格式,接入成本较低。
1.5 智谱 AI
智谱 AI 是由清华大学技术团队创办的国内 AI 平台,旗下 GLM 系列模型在国内学术界和工业界均有广泛应用。智谱 AI 提供的 ChatGLM 模型对中文语境理解深入,同时提供函数调用、知识检索增强等高级能力,平台文档完善,适合对中文语义处理有较高要求的场景。
1.6 硅基流动(SiliconFlow)
硅基流动(SiliconFlow)是近年来在国内快速崛起的 AI 推理加速平台,其核心优势在于以极低的价格提供对主流开源模型(如 DeepSeek、Qwen、Llama、Mistral 等)的高性能推理服务。硅基流动不自研模型,而是专注于推理层的优化与托管,用户可以用接近免费的成本调用到与官方效果一致的开源模型。其 API 完全兼容 OpenAI 格式,且新用户注册即可获得一定额度的免费调用额度,非常适合教学演示、个人项目以及对成本敏感的应用场景。
二、平台选择与评估
在孢子记账的智能化改造中,我们的目标是引入一个既能提供强大语言理解与生成能力,又能在国内环境下稳定访问的平台。基于前述对各平台的分析,我们最终选择了 硅基流动 作为本专栏智能化改造阶段的主要 LLM 平台。
首先是成本方面,硅基流动提供的推理服务价格极低,甚至在免费额度内就能满足孢子记账项目初期的调用需求,极大降低了智能化改造的经济门槛,这对于教学项目和个人开发者而言尤为友好。其次是兼容性,硅基流动的 API 完全兼容 OpenAI 格式,意味着我们在后续开发中可以直接沿用 OpenAI 的接口设计和调用方式,无需针对特定平台进行额外适配,代码的通用性和可迁移性得到了充分保障。在访问稳定性上,硅基流动的服务在国内环境下可以稳定访问,无需任何额外的网络配置,确保了开发环境与生产环境的一致性,避免了因网络问题带来的不确定性。最后,在模型选择上,硅基流动托管了包括 DeepSeek、Qwen、Llama、Mistral 在内的多种主流开源模型,我们可以根据不同场景的需求灵活切换,而无需更换平台或修改接入代码。
虽然 DeepSeek、通义千问和智谱 AI 在中文处理能力上表现出色,但考虑到孢子记账项目的用户群体和使用场景,成本和访问稳定性是我们更为看重的因素。硅基流动在这两方面的优势,使其成为了我们智能化改造的首选平台。在后续的章节中,我们将以硅基流动为例,演示如何接入第三方 LLM 平台,并基于其能力实现智能账单录入、消费趋势分析、智能问答等功能。通过具体的代码示例和实践指导,你将能够掌握一套通用的 LLM 接入方法论,无论未来你选择哪个平台,都能轻松上手并快速迭代你的智能化功能。
三、接入硅基流动平台示例
确定了平台之后,我们来完成第一个实际接入动作:在 .NET 项目中调用硅基流动的对话接口,验证整条链路是否畅通。
3.1 注册账号并获取 API Key
首先访问 SiliconFlow 官网 注册账号,支持短信、邮箱、微信登录。登录后进入 API 密钥管理页面,点击"新建 API 密钥"即可生成一个 API Key。请妥善保管这个 Key,因为它是你调用硅基流动服务的唯一凭证。注册成功后,你还可以在 模型广场 中查看当前平台上线的所有可用模型及其定价。我们在本示例中使用 Qwen/Qwen2.5-7B-Instruct,这是一个对用户免费开放的模型,适合功能验证。
3.2 安装 NuGet 包
由于硅基流动的 API 完全兼容 OpenAI 格式,我们可以直接使用 .NET 官方的 OpenAI SDK,只需将请求地址指向硅基流动的端点即可,无需任何定制化开发。在项目中安装以下包:
bash
dotnet add package OpenAI
安装完成后,我们就可以在代码中使用 OpenAIClient 来调用硅基流动的模型了。
3.3 配置客户端
硅基流动的 API Base URL 为 https://api.siliconflow.cn/v1。借助 OpenAI SDK 提供的 OpenAIClientOptions,我们可以将请求端点替换为硅基流动的地址,同时传入我们的 API Key:
csharp
using OpenAI;
using OpenAI.Chat;
using System.ClientModel;
var apiKey = "sk-xxxxxxxxxxxxxxxxxxxxxxxx"; // 替换为你的硅基流动 API Key
var endpoint = new Uri("https://api.siliconflow.cn/v1");
var options = new OpenAIClientOptions
{
Endpoint = endpoint
};
var client = new OpenAIClient(new ApiKeyCredential(apiKey), options);
var chatClient = client.GetChatClient("Qwen/Qwen2.5-7B-Instruct");
上述代码中,我们首先创建了一个 OpenAIClient 实例,并通过 GetChatClient 方法获取了一个针对聊天模型的客户端实例。后续我们将使用这个 chatClient 来发起对话请求。
3.4 发起对话请求
客户端配置完成后,调用方式与使用 OpenAI 官方 API 完全相同。下面是一个非流式的简单问答示例:
csharp
var messages = new List<ChatMessage>
{
new SystemChatMessage("你是孢子记账的智能助手,请用简洁友好的语气回答用户的记账相关问题。"),
new UserChatMessage("我今天在超市花了 68 块钱买了日用品,帮我整理一下这笔账。")
};
ChatCompletion completion = await chatClient.CompleteChatAsync(messages);
Console.WriteLine(completion.Content[0].Text);
上述代码中,我们构造了一段对话历史,包含一个系统消息(SystemChatMessage)和一个用户消息(UserChatMessage)。调用 CompleteChatAsync 方法后,我们可以从返回的 ChatCompletion 对象中获取模型生成的回复内容。
如果需要流式输出,以便在 Web 接口中实时推送 AI 生成的内容,可以改用 CompleteChatStreamingAsync:
csharp
await foreach (StreamingChatCompletionUpdate update in chatClient.CompleteChatStreamingAsync(messages))
{
foreach (ChatMessageContentPart part in update.ContentUpdate)
{
Console.Write(part.Text);
}
}
上述代码中,我们使用 await foreach 来迭代流式返回的内容更新,每当模型生成新的文本片段时,都会被实时输出。
3.5 在 ASP.NET Core 中注册为服务
在实际的孢子记账服务端项目中,我们不会在每次请求时手动创建客户端实例,而是将其注册到依赖注入容器中统一管理。在 Program.cs 中添加如下配置:
csharp
builder.Services.AddSingleton(sp =>
{
var apiKey = builder.Configuration["SiliconFlow:ApiKey"]
?? throw new InvalidOperationException("SiliconFlow API Key 未配置");
var endpoint = new Uri("https://api.siliconflow.cn/v1");
var options = new OpenAIClientOptions { Endpoint = endpoint };
var openAiClient = new OpenAIClient(new ApiKeyCredential(apiKey), options);
return openAiClient.GetChatClient(builder.Configuration["SiliconFlow:Model"] ?? "Qwen/Qwen2.5-7B-Instruct");
});
上述代码中,我们将 ChatClient 注册为单例服务,并从配置中读取 API Key 和模型名称。这样,在需要调用 LLM 的业务服务中,只需通过构造函数注入 ChatClient 即可,无需关心底层的客户端配置细节。同时在 appsettings.json 中配置相应参数:
json
{
"SiliconFlow": {
"ApiKey": "sk-xxxxxxxxxxxxxxxxxxxxxxxx",
"Model": "Qwen/Qwen2.5-7B-Instruct"
}
}
这样,后续任何需要调用 LLM 的服务只需在构造函数中注入 ChatClient 即可,平台切换时也只需修改配置,无需改动业务代码。
至此,我们已经完成了服务端与硅基流动平台的基础接入。整个过程的核心只有两步:用 API Key 创建客户端,将 Endpoint 指向硅基流动的地址。由于接口格式与 OpenAI 完全兼容,后续所有基于 OpenAI SDK 的功能------函数调用、流式输出、Embedding 等------均可直接使用,无需任何额外适配。
四、总结
通过上述步骤,我们成功地将孢子记账服务端与硅基流动平台对接,为后续的智能化功能开发奠定了坚实的基础。硅基流动的低成本和高兼容性使得我们能够在不增加额外复杂度的前提下,快速引入强大的 LLM 能力。接下来,我们将在这个基础上,逐步实现智能账单录入、消费趋势分析、智能问答等功能,真正让孢子记账成为一个智能化的个人财务助理。