C# Web API 使用 ChatGPT Completion for Chat Message 接口流式返回结果
以下是一个简单的示例,演示如何在 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 时进行身份验证。
原文地址: https://www.cveoy.top/t/topic/l6DM 著作权归作者所有。请勿转载和采集!