.NET 7 整合OpenAI ChatGPT與Web API

Find AI Tools
No difficulty
No complicated process
Find ai tools

.NET 7 整合OpenAI ChatGPT與Web API

目錄

整合 .NET 應用程式與 Open AI

在本教程中,我們將介紹如何將您的.NET應用程式與Open AI整合,以獲取資料完成和聊天的功能。我們將使用Open AI提供的功能來補全句子並回答問題。這將使您的應用程式能夠更智能地回應用戶的輸入。

安裝 NuGet 套件

首先,我們需要安裝一些NuGet套件來整合我們的應用程式與Open AI。打開您的終端機並導航到您想要創建應用程式的位置,然後運行以下命令:

dotnet new webapi -n OpenAIDemo
cd OpenAIDemo
dotnet add package OpenAI

這將創建一個名為OpenAIDemo的新Web API專案並添加所需的NuGet套件。

取得 Open AI API 金鑰

在我們繼續操作之前,我們需要從Open AI網站上取得我們的API金鑰。請訪問Open AI網站並登錄您的帳戶。在個人設定中,您將找到一個名為「View API Keys」的選項,點擊它並創建一個新的API金鑰。

將此金鑰複製並返回到您的應用程式代碼中。在appsettings.json文件中創建一個新的節,名為OpenAI,並將API金鑰添加到該節中:

{
  "OpenAI": {
    "Key": "YOUR_API_KEY"
  }
}

請確保將YOUR_API_KEY替換為您從Open AI網站獲得的實際API金鑰。

建立 Open AI 服務

接下來,我們將建立一個Open AI服務來處理與Open AI的通信。在專案的根目錄中創建一個名為Services的新文件夾。在該文件夾中創建一個IOpenAIService.cs接口,並添加以下代碼:

using System.Threading.Tasks;

namespace OpenAIDemo.Services
{
    public interface IOpenAIService
    {
        Task<string> CompleteText(string text);
        Task<string> AdvanceCompleteText(string text, string model);
        Task<string> ChatWithAI(string text, string language);
    }
}

此接口定義了三個用於與Open AI進行通信的方法:CompleteTextAdvanceCompleteTextChatWithAI

接下來,在Services文件夾中創建一個名為OpenAIService.cs的新類,並實現IOpenAIService接口。請將以下代碼添加到類中:

using Microsoft.Extensions.Configuration;
using OpenAI;

namespace OpenAIDemo.Services
{
    public class OpenAIService : IOpenAIService
    {
        private readonly IConfiguration _configuration;
        private readonly OpenAIApi _api;

        public OpenAIService(IConfiguration configuration)
        {
            _configuration = configuration;
            _api = new OpenAIApi(_configuration["OpenAI:Key"]);
        }

        public async Task<string> CompleteText(string text)
        {
            var completions = await _api.Completions.CreateCompletionAsync(
                model: "text-davinci-001",
                prompt: text,
                maxTokens: 100
            );

            return completions.Choices[0].Text;
        }

        public async Task<string> AdvanceCompleteText(string text, string model)
        {
            var completions = await _api.Completions.CreateCompletionAsync(
                model: model,
                prompt: text,
                maxTokens: 100
            );

            return completions.Choices[0].Text;
        }

        public async Task<string> ChatWithAI(string text, string language)
        {
            var chat = await _api.Chat.CreateConversationAsync();
            chat.Messages.Add(new Message { Role = "system", Content = "You are a teacher who helps new programmers understand if a programming language is valid or not.You will only respond with yes or no." });
            chat.Messages.Add(new Message { Role = "user", Content = text });

            var response = await _api.Chat.GetChatCompletionResponseAsync(chat.ConversationId, language);

            return response.GetReplyFromUser();
        }
    }
}

在這個服務類中,我們使用了OpenAIApi類來進行與Open AI的通信。首先,我們在構造函數中初始化了OpenAIApi並傳遞了我們在appsettings.json中設置的API金鑰。

然後,我們實現了三個方法來處理不同的Open AI功能。CompleteText方法用於資料完成,AdvanceCompleteText方法用於高級資料完成,ChatWithAI方法用於聊天。

進行資料完成

現在,我們可以創建一個控制器來處理與Open AI的通信。在Controllers文件夾中創建一個名為OpenAIController.cs的新控制器,並添加以下代碼:

using Microsoft.AspNetCore.Mvc;
using OpenAIDemo.Services;
using System.Threading.Tasks;

namespace OpenAIDemo.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class OpenAIController : ControllerBase
    {
        private readonly IOpenAIService _openAIService;

        public OpenAIController(IOpenAIService openAIService)
        {
            _openAIService = openAIService;
        }

        [HttpPost("complete")]
        public async Task<IActionResult> CompleteText(string text)
        {
            var completion = await _openAIService.CompleteText(text);
            return Ok(completion);
        }

        [HttpPost("advance-complete")]
        public async Task<IActionResult> AdvanceCompleteText(string text, string model)
        {
            var completion = await _openAIService.AdvanceCompleteText(text, model);
            return Ok(completion);
        }
    }
}

這個控制器定義了兩個動作,CompleteTextAdvanceCompleteText,用於處理資料完成的請求。我們注入了之前創建的IOpenAIService服務,以便在控制器中使用它。

現在我們已經完成了Open AI的整合。您可以運行您的應用程式並使用/api/OpenAI/complete/api/OpenAI/advance-complete端點來傳遞您的資料完成請求。

設定聊天功能

要設置聊天功能,我們需要在OpenAIService.cs文件中添加一些代碼。在OpenAIService類中,請添加以下代碼:

public async Task<STRING> ChatWithAI(string text, string language)
{
    var chat = await _api.Chat.CreateConversationAsync();
    chat.Messages.Add(new Message { Role = "system", Content = "You are a teacher who helps new programmers understand if a programming language is valid or not. You will only respond with yes or no." });
    chat.Messages.Add(new Message { Role = "user", Content = text });

    var response = await _api.Chat.GetChatCompletionResponseAsync(chat.ConversationId, language);

    return response.GetReplyFromUser();
}

這個方法允許我們與Open AI進行聊天。我們創建了一個對話,然後向其中添加了兩個消息:一個系統消息和一個用戶消息。系統消息告訴AI我們只會回答yes或no的問題,並且我們希望它幫助我們判斷一種程式語言是否有效。然後,我們將用戶的輸入添加到對話中,並通過GetChatCompletionResponseAsync方法獲取AI的回答。

完成了上述步驟後,我們可以在我們的控制器中添加一個新的動作,以處理聊天請求。在OpenAIController.cs文件中添加以下代碼:

[HttpPost("chat")]
public async Task<IActionResult> ChatWithAI(string text, string language)
{
    var response = await _openAIService.ChatWithAI(text, language);
    return Ok(response);
}

這個新的動作將使用我們剛剛添加的IOpenAIService服務中的ChatWithAI方法。

現在,您可以運行您的應用程式並使用/api/OpenAI/chat端點來與Open AI進行聊天。

常見問題解答

問:我應該如何獲取Open AI API金鑰?

答:您可以在Open AI網站上創建一個帳戶並生成API金鑰。

問:我能否自定義資料完成的模型?

答:是的,您可以在高級資料完成功能中指定不同的模型。

問:聊天服務只能回答yes或no的問題嗎?

答:是的,這個聊天功能的目的是回答一些特定的問題,並限制回答僅為yes或no。

問:我可以將資料完成和聊天功能整合到我的應用程式中嗎?

答:是的,您可以在您的應用程式中同時使用資料完成和聊天功能。

問:我可以使用中文進行資料完成和聊天嗎?

答:是的,Open AI支持多種語言,包括中文。您可以在API請求中指定要使用的語言。

希望這個教程對於整合Open AI到您的.NET應用程式中有所幫助。如果您有任何疑問,請隨時向我們提問。謝謝!

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.