C#和神经网络:如何将ChatGPT接入项目

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

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

开始课程

为什么C#和AI是完美搭档?

\n\n

当我们谈论人工智能和开发时,通常首先想到的是Python。这很合理:TensorFlow、PyTorch、Transformer……但如果你的技术栈是C#、.NET,并且你不想改变熟悉的工具呢?好消息是:C#和神经网络可以很好地结合,尤其是在通过API使用现成模型时。

\n\n

ChatGPT不仅仅是一个时尚的玩具。它是一个强大的工具,可以生成代码、编写文档、分析数据,甚至帮助调试。在本文中,我们将探讨如何将ChatGPT接入C#项目,编写实际代码,并了解.NET开发者面前有哪些可能性。

\n\n

开始前需要了解什么?

\n\n

要在C#中使用OpenAI API,你需要:

\n\n
    \n
  • platform.openai.com上的账户(需要API密钥)
  • \n
  • Visual Studio 2022 或 JetBrains Rider
  • \n
  • .NET 6.0 或更高版本(推荐 .NET 8)
  • \n
  • OpenAI 库(NuGet包)
  • \n
\n\n

别担心:整个过程不会超过15分钟。让我们逐步了解如何创建一个能与ChatGPT对话的控制台应用程序。

\n\n

步骤1. 创建项目并安装库

\n\n

打开终端或包管理器控制台,执行以下命令:

\n\n
dotnet new console -n ChatGPTDemo\ncd ChatGPTDemo\ndotnet add package OpenAI --version 1.11.0\n
\n\n

用于C#的OpenAI包是一个官方客户端,支持所有最新模型,包括GPT-4和GPT-4 Turbo。它正在积极开发中,所以最好使用最新版本。

\n\n

配置API密钥

\n\n

切勿将密钥存储在代码中。使用环境变量或配置文件。例如,创建appsettings.json:

\n\n
{\n  "OpenAiApiKey": "你的超级秘密密钥"\n}\n
\n\n

在项目中添加NuGet包Microsoft.Extensions.Configuration.Json,并按如下方式加载密钥:

\n\n
var config = new ConfigurationBuilder()\n    .AddJsonFile("appsettings.json")\n    .Build();\n\nstring apiKey = config["OpenAiApiKey"];\n
\n\n

现在我们已经准备好进入最有趣的部分。

\n\n

步骤2. 在C#中首次请求ChatGPT

\n\n

编写一个简单的方法,向模型发送消息并获取响应。以下是完整代码:

\n\n
using OpenAI;\nusing OpenAI.Chat;\n\nvar client = new OpenAIClient(apiKey); // 来自配置的apiKey\n\nvar chatClient = client.GetChatClient("gpt-4o-mini");\n\nvar messages = new List<ChatMessage>\n{\n    new SystemChatMessage("你是一个有用的助手,用中文回答。"),\n    new UserChatMessage("写一个C#读取JSON文件的代码示例。")\n};\n\nvar response = await chatClient.CompleteChatAsync(messages);\nvar reply = response.Value.Content[0].Text;\n\nConsole.WriteLine(reply);\n
\n\n

这里发生了什么?我们创建了一个客户端,指定了gpt-4o-mini模型(快速且便宜),设置了系统提示(助手角色),并发送了用户请求。响应以结构化文本的形式返回。

\n\n

这是基础。接下来可以增加复杂性:添加对话历史、处理错误、进行异步调用。

\n\n

步骤3. 创建用于代码处理的智能助手

\n\n

ChatGPT在C#开发中最有用的功能之一是代码审查和文档生成。让我们创建一个类来分析我们的代码并提出改进建议。

\n\n
public class CodeReviewer\n{\n    private readonly ChatClient _chatClient;\n\n    public CodeReviewer(string apiKey)\n    {\n        var client = new OpenAIClient(apiKey);\n        _chatClient = client.GetChatClient("gpt-4o-mini");\n    }\n\n    public async Task<string> ReviewCodeAsync(string code)\n    {\n                

博客

书籍推荐