如何让 C# 与 ChatGPT 协同工作:完整集成指南
\n\n想象一下:您的 C# 应用程序突然不再只是执行命令,而是能够进行有意义的对话、编写代码、翻译文本或生成创意。听起来像科幻小说?但这已经成为现实,这要归功于 C# 与 ChatGPT API 的集成。今天,我将向您展示如何在 15 分钟内将一个普通的控制台程序变成一个智能助手。我们开始吧!
\n\nOpenAI 提供了一个强大的 REST API,它与 .NET 配合得很好。您不需要任何第三方 SDK——只需要标准的 HttpClient 和几个用于处理 JSON 的库。整个过程分为四个步骤:获取密钥、发送请求、解析响应、享受结果。
开始前需要准备什么
\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
可以通过 NuGet 安装 Newtonsoft.Json:Install-Package Newtonsoft.Json 或通过 Visual Studio 的包管理器。
在 C# 中创建第一个 ChatGPT 请求
\n\n让我们从简单的开始:向模型发送一条消息并获取回复。所有的魔法都通过向端点 https://api.openai.com/v1/chat/completions 发送 POST 请求来实现。
以下是我建议保存为起点的最小工作代码:
\n\nusing 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
- model:指定模型。
gpt-3.5-turbo是性价比的黄金选择。对于复杂任务,使用gpt-4,但要做好支付更多费用的准备。 \n 博客
书籍推荐
推荐阅读