C# 与 ChatGPT API 集成:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

如何让 C# 与 ChatGPT 协同工作:完整集成指南

\n\n

想象一下:您的 C# 应用程序突然不再只是执行命令,而是能够进行有意义的对话、编写代码、翻译文本或生成创意。听起来像科幻小说?但这已经成为现实,这要归功于 C# 与 ChatGPT API 的集成。今天,我将向您展示如何在 15 分钟内将一个普通的控制台程序变成一个智能助手。我们开始吧!

\n\n

OpenAI 提供了一个强大的 REST API,它与 .NET 配合得很好。您不需要任何第三方 SDK——只需要标准的 HttpClient 和几个用于处理 JSON 的库。整个过程分为四个步骤:获取密钥、发送请求、解析响应、享受结果。

\n\n

开始前需要准备什么

\n\n

在编写代码之前,让我们先准备好环境。您需要:

\n\n
    \n
  • Visual Studio 2022 或 JetBrains Rider(但也可以使用普通的 .NET SDK 加记事本)
  • \n
  • .NET 6.0 或更高版本(我使用的是 .NET 8——它更快)
  • \n
  • OpenAI API 密钥——在 platform.openai.com 注册,进入 API Keys 部分并创建一个新的密钥。注意:首次注册会赠送 $5 用于测试,但别忘了限额!
  • \n
  • Newtonsoft.Json 库 或 System.Text.Json(内置于 .NET,但我更喜欢 Newtonsoft——它更直观)
  • \n
\n\n

可以通过 NuGet 安装 Newtonsoft.Json:Install-Package Newtonsoft.Json 或通过 Visual Studio 的包管理器。

\n\n

在 C# 中创建第一个 ChatGPT 请求

\n\n

让我们从简单的开始:向模型发送一条消息并获取回复。所有的魔法都通过向端点 https://api.openai.com/v1/chat/completions 发送 POST 请求来实现。

\n\n

以下是我建议保存为起点的最小工作代码:

\n\n
using System;\nusing System.Net.Http;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\nclass Program\n{\n    private static readonly string apiKey = "您的密钥在此处"; // 不要告诉任何人!\n    private static readonly string endpoint = "https://api.openai.com/v1/chat/completions";\n\n    static async Task Main(string[] args)\n    {\n        var client = new HttpClient();\n        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");\n\n        var requestBody = new\n        {\n            model = "gpt-3.5-turbo",\n            messages = new[]\n            {\n                new { role = "user", content = "讲一个关于程序员的笑话" }\n            },\n            temperature = 0.7,\n            max_tokens = 150\n        };\n\n        var json = JsonConvert.SerializeObject(requestBody);\n        var content = new StringContent(json, Encoding.UTF8, "application/json");\n\n        var response = await client.PostAsync(endpoint, content);\n        var responseString = await response.Content.ReadAsStringAsync();\n\n        var responseObject = JObject.Parse(responseString);\n        var reply = responseObject["choices"][0]["message"]["content"].ToString();\n\n        Console.WriteLine("ChatGPT 说:");\n        Console.WriteLine(reply);\n    }\n}\n
\n\n

运行它——控制台会输出类似这样的内容:“为什么程序员会把万圣节和圣诞节搞混?因为 Oct 31 == Dec 25!”。好笑吗?能用吗?太棒了!

\n\n

逐行解析代码

\n\n

让我们看看这里发生了什么。我们创建一个 HttpClient,添加授权头——这是在 C# 中使用 OpenAI API 的标准做法。请求体是一个包含参数的 JSON 对象:

\n\n