以下是一个示例代码,可以实现在 C# 的 Web API 中使用 ChatGPT 的 Completion for the chat message 接口,并采用 Stream 返回给客户端:

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;

namespace ChatGPTWebAPI.Controllers
{
    public class ChatController : ApiController
    {
        private const string ChatGPTUrl = 'https://api.openai.com/v1/completions';

        [HttpPost]
        public async Task<HttpResponseMessage> GenerateChatMessage()
        {
            try
            {
                var requestBody = await Request.Content.ReadAsByteArrayAsync();
                var responseStream = await CallChatGPTWebAPI(requestBody);
                var result = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
                result.Content = new StreamContent(responseStream);
                result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue('application/octet-stream');
                return result;
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(System.Net.HttpStatusCode.InternalServerError, ex);
            }
        }

        private async Task<Stream> CallChatGPTWebAPI(byte[] requestBody)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue('Bearer', 'YOUR_API_KEY');
                var content = new ByteArrayContent(requestBody);
                content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue('application/json');
                var response = await client.PostAsync(ChatGPTUrl, content);
                return await response.Content.ReadAsStreamAsync();
            }
        }
    }
}

在这个示例代码中,我们定义了一个名为 ChatController 的 Web API 控制器,并在其中实现了一个名为 GenerateChatMessage 的 POST 方法。该方法接受客户端发送的请求数据,将其转发到 ChatGPT 的 Completion for the chat message 接口,然后将返回的 Stream 作为响应数据返回给客户端。

CallChatGPTWebAPI 方法中,我们使用 HttpClient 发送 POST 请求到 ChatGPT 的 Completion for the chat message 接口,并在请求头中添加了 API Key。请求体中包含客户端发送的聊天消息。接着,我们通过异步方式读取响应内容,并返回响应的 Stream 对象。

GenerateChatMessage 方法中,我们首先读取客户端发送的请求数据,然后调用 CallChatGPTWebAPI 方法发送请求,并获取响应的 Stream。最后,我们将响应的 Stream 对象作为响应数据返回给客户端。

值得注意的是,在 GenerateChatMessage 方法中,我们使用 StreamContent 类来创建响应的 Content 对象,并设置其 ContentType 为 application/octet-stream。这样可以确保响应数据正确传输。

C# Web API 使用 ChatGPT Completion for Chat Message 接口并通过 Stream 返回结果

原文地址: https://www.cveoy.top/t/topic/l6IP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录