C# 调用 OpenAI 大模型实战:从 Demo 到企业级封装
本文介绍在 C# 项目中接入 OpenAI 大模型的完整方案。从基础的 HttpClient 调用入手,逐步构建包含依赖注入、异常重试、流式输出等企业级特性的封装架构。内容涵盖请求模型定义、服务层设计、Polly 策略配置及 WinForms 集成示例,对比了 C# 与 Python 在企业 AI 落地中的优势,旨在帮助开发者实现高性能、可维护的 AI 中间层。

本文介绍在 C# 项目中接入 OpenAI 大模型的完整方案。从基础的 HttpClient 调用入手,逐步构建包含依赖注入、异常重试、流式输出等企业级特性的封装架构。内容涵盖请求模型定义、服务层设计、Polly 策略配置及 WinForms 集成示例,对比了 C# 与 Python 在企业 AI 落地中的优势,旨在帮助开发者实现高性能、可维护的 AI 中间层。

当前企业级开发中,接入 AI 已成为趋势。过去两年,AI 生态虽被 Python 占据,但在企业系统中,C# 仍是主力军。
很多人误以为 AI = Python,但企业系统 70% 以上仍然是 .NET、Java 或微服务架构。
.NET 生态在云原生、微服务、跨平台及 Native AOT 方面正在快速进化。.NET 9 以后,C# 已不仅是企业语言,而是具备高性能、类型安全、工程化强、可长期维护的系统级语言。
因此,企业级 AI 集成,C# 反而更适合。
首先,我们实现最基础的调用。
public class ChatRequest
{
public string model { get; set; }
public List<Message> messages { get; set; }
}
public class Message
{
public string role { get; set; }
public string content { get; set; }
}
public async Task<string> SendAsync(string prompt)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
var request = new ChatRequest
{
model = "gpt-4o-mini",
messages = new List<Message>
{
new Message { role = "user", content = prompt }
}
};
var json = JsonSerializer.Serialize(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://api.openai.com/v1/chat/completions", content);
return await response.Content.ReadAsStringAsync();
}
这样就完成了基础调用。但这只是 Demo,存在以下问题:
企业级封装必须解决 6 个问题:
Controller -> IAIService -> OpenAIService -> HttpClientFactory
public interface IAIService
{
Task<string> SendAsync(string prompt);
}
public class OpenAIService : IAIService
{
private readonly HttpClient _client;
public OpenAIService(HttpClient client)
{
_client = client;
}
public async Task<string> SendAsync(string prompt)
{
var request = new
{
model = "gpt-4o-mini",
messages = new[]
{
new { role = "user", content = prompt }
}
};
var response = await _client.PostAsJsonAsync(
"chat/completions", request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadFromJsonAsync<JsonElement>();
return json
.GetProperty("choices")[0]
.GetProperty("message")
.GetProperty("content")
.GetString();
}
}
builder.Services.AddHttpClient<IAIService, OpenAIService>(client =>
{
client.BaseAddress = new Uri("https://api.openai.com/v1/");
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
});
优点:
企业应用中必须支持打字机效果、实时推送、大文本避免等待。
实现方式:
request.stream = true;
然后读取流:
using var response = await _client.SendAsync(
requestMessage, HttpCompletionOption.ResponseHeadersRead);
using var stream = await response.Content.ReadAsStreamAsync();
using var reader = new StreamReader(stream);
while (!reader.EndOfStream)
{
var line = await reader.ReadLineAsync();
if (!string.IsNullOrWhiteSpace(line))
{
Console.WriteLine(line);
}
}
这一步,才是企业级 AI 集成的关键。
企业必须防止网络波动、API 限流、超时。
推荐使用 Polly:
builder.Services.AddHttpClient<IAIService, OpenAIService>()
.AddTransientHttpErrorPolicy(policy => policy.WaitAndRetryAsync(3, retry =>
TimeSpan.FromSeconds(Math.Pow(2, retry))));
实现:
在 WinForms 中:
private async void btnSend_Click(object sender, EventArgs e)
{
var result = await _aiService.SendAsync(txtInput.Text);
txtOutput.Text = result;
}
如果结合流式输出,可以边接收边 AppendText,实现 ChatGPT 桌面客户端。
企业级还可以做:
对比 Python 方案:
| 维度 | C# | Python |
|---|---|---|
| 性能 | 更高 | 较低 |
| 工程化 | 强 | 中 |
| 长期维护 | 优秀 | 依赖团队 |
| 企业集成 | 更自然 | 需要适配 |
在微服务架构中,C# 更适合做:
未来 3 年趋势:
原因:
很多人说 AI 是 Python 的时代,但企业系统不会全部推翻重写。
真正的未来是:Python 负责训练,C# 负责落地。
如果你正在做 .NET 项目,现在就是接入 AI 的最佳时机。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online