我想创建一个web API后端流openai完成响应。
如何将以下解决方案应用于控制器中的Web API操作?
var client = new OpenAIClient(nonAzureOpenAIApiKey, new OpenAIClientOptions());
var chatCompletionsOptions = new ChatCompletionsOptions()
{
DeploymentName = "gpt-3.5-turbo", // Use DeploymentName for "model" with non-Azure clients
Messages =
{
new ChatRequestSystemMessage("You are a helpful assistant. You will talk like a pirate."),
new ChatRequestUserMessage("Can you help me?"),
new ChatRequestAssistantMessage("Arrrr! Of course, me hearty! What can I do for ye?"),
new ChatRequestUserMessage("What's the best way to train a parrot?"),
}
};
await foreach (StreamingChatCompletionsUpdate chatUpdate in client.GetChatCompletionsStreaming(chatCompletionsOptions))
{
if (chatUpdate.Role.HasValue)
{
Console.Write($"{chatUpdate.Role.Value.ToString().ToUpperInvariant()}: ");
}
if (!string.IsNullOrEmpty(chatUpdate.ContentUpdate))
{
Console.Write(chatUpdate.ContentUpdate);
}
}
字符串
1条答案
按热度按时间uyhoqukh1#
您可以简单地将代码 Package 在控制器中
字符串
如果你不想硬编码消息并将其作为一个主体传递,那么你可以这样做
型
请记住,上述API的实现不支持流响应。它等待从OpenAI API接收到所有聊天完成,然后将它们一次性发送到客户端。
将从OpenAI API接收到的响应流传输到客户端需要不同的方法。这可以使用服务器发送事件(SSE)或类似技术来实现,但需要注意的是,并非所有客户端和网络环境都支持这些技术。
下面是一个简化的示例,说明如何使用ASP.NET Core中的服务器发送事件实现此功能:
型