以下是一个简单的示例,演示如何在 C# Web API 中使用 ChatGPT 的 Completion for Chat Message 接口,并使用 Stream 返回到客户端:

using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace ChatAPI.Controllers
{
    [ApiController]
    [Route('[controller]')]
    public class ChatController : ControllerBase
    {
        private readonly HttpClient _httpClient;

        public ChatController(HttpClient httpClient)
        {
            _httpClient = httpClient;
        }

        [HttpGet('completion')]
        public async Task<IActionResult> GetCompletion()
        {
            // 设置 ChatGPT API 的 URL 和请求参数
            var apiURL = 'https://api.openai.com/v1/completions';
            var apiKey = 'YOUR_API_KEY_HERE';
            var prompt = 'Hello, how are you?';
            var temperature = 0.5f;
            var maxTokens = 50;

            // 构建 HTTP 请求
            var requestData = new
            {
                prompt,
                temperature,
                max_tokens = maxTokens
            };
            var requestContent = new StringContent(requestData.ToJson(), Encoding.UTF8, 'application/json');
            requestContent.Headers.Add('Authorization', $'Bearer {apiKey}');
            var request = new HttpRequestMessage(HttpMethod.Post, apiURL);
            request.Content = requestContent;

            // 发送 HTTP 请求并获取响应流
            var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
            var stream = await response.Content.ReadAsStreamAsync();

            // 返回响应流给客户端
            return new FileStreamResult(stream, 'application/octet-stream');
        }
    }
}

在此示例中,我们使用了 Microsoft.AspNetCore.Mvc 命名空间中的 FileStreamResult 类,以流的方式将响应返回给客户端。在 GetCompletion 方法中,我们首先设置了 ChatGPT API 的 URL 和请求参数,然后构建了一个 HTTP 请求,并发送到 ChatGPT API。使用 HttpResponseMessage.Content.ReadAsStreamAsync 方法,我们可以从 API 响应中获取一个流,然后将其作为参数传递给 FileStreamResult 类 的构造函数,以便将其返回给客户端。注意,我们在请求头中添加了 Authorization 标头,以便在调用 ChatGPT API 时进行身份验证。

C# Web API 使用 ChatGPT Completion for Chat Message 接口流式返回结果

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

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