openai-streams(openai sdk stream)
OpenAI SDK流式要求实现方案
本文将介绍OpenAI SDK流式要求实现方案的相关内容,包括OpenAI SDK的介绍、安装依赖项、使用OpenAI SDK进行流式要求、OpenAI SDK插件的功能、使用Python和SSE实现实时流式响应、Node.js和TypeScript中的处理工具和在JavaScript利用中使用OpenAI API的方法。
1. 介绍OpenAI SDK和流式要求概念
OpenAI SDK是用于与OpenAI API进行交互的开发工具,提供了便捷的接口和方法。
流式要求是一种在实时中获得OpenAI API响应的方式,可以通过延续不断地接收部份响应数据来实现。
2. 安装必要的依赖项
使用npm命令安装必要的依赖项:ai和openai-edge。
openai-edge与Vercel Edge Functions兼容,是一个更受欢迎的替换方案。
3. 使用OpenAI SDK进行流式要求
创建ChatMessage对象并设置内容参数。
使用Flux.create()方法创建一个Flux对象,并通过emitter将StreamSubscriber传递给它。
在StreamSubscriber中,发送部份要求数据到OpenAI API,并通过Flux返回部份响应数据。
4. OpenAI SDK插件介绍
OpenAI SDK插件支持最新的GPT接口,可以实现智能聊天、文字翻译和AI绘图等功能。
支持Markdown显示和上下文语境,可以保存聊天记录。
兼容性强,适用于H5、小程序、安卓、IOS等各种平台。
5. 使用Python和SSE实现实时流式响应
使用Python编写代码,通过SSE(Server-Sent Event)从OpenAI API实时获得响应数据。
通过SSE实现延续的响应数据流,可以实现实时的聊天和交互体验。
6. Node.js和TypeScript中使用OpenAI流式处理工具
提供用于在Node.js和TypeScript中处理OpenAI流的工具。
最新版本是6.2.0,可以有效地处理OpenAI API的流式响应数据。
7. 在JavaScript利用中使用OpenAI API
通过原始的JavaScript利用程序,展现怎样使用OpenAI API。
提供稳定的基础,为您的项目提供良好的开端。
openai sdk stream的进一步展开说明
OpenAI Streams(开放AI流)
GitHub | NPM | 文档
现在支持ChatGPT API!请参阅与ChatGPT API一起使用。(Whisper行将推出!)
该库仅将OpenAI API的响应作为流返回。非流式端点(如edits等)只是一个只有一个块更新的流。
优先处理流,因此您可以显示实时的完成状态。
自动从process.env加载OPENAI_API_KEY。
只有一个函数,根据您提供的端点推断参数类型。
默许使用ReadableStream用于浏览器、Edge Runtime和Node 18+,在openai-streams/node中提供了一个NodeJS.Readable版本。
安装
yarn add openai-streams # -or- npm i –save openai-streams
用法
await OpenAI(/** ‘completions’, ‘chat’, etc. */ENDPOINT, /** max_tokens, temperature, messages, etc. */PARAMS, /** apiBase, apiKey, mode, controller, etc */OPTIONS);
设置OPENAI_API_KEY环境变量(或通过{ apiKey }选项传递)。如果找不到API密钥,该库将抛出毛病。您的程序默许会在运行时从process.env.OPENAI_API_KEY加载它,但您可以通过{ apiKey }选项来覆盖它。重要提示:出于安全斟酌,您应仅从process.env变量加载此内容。
await OpenAI(“completions”, { /* endpoint params */ }, { apiKey: process.env.MY_SECRET_API_KEY });
通过await OpenAI(endpoint, params, options?)调用API。参数类型将根据您提供的端点进行推断,即对“edits”端点,将强迫履行import(‘openai’)。CreateEditRequest。使用原始流模式的示例:
await OpenAI(“chat”, { messages: [/*…*/], }, { mode: “raw” });
Edge/Browser:在Next.js Edge函数中使用流
这在浏览器中也有效,但您需要用户粘贴他们的OpenAI密钥,并通过{ apiKey }选项传递。
import { OpenAI } from “openai-streams”;
export default async function handler() {
const stream = await OpenAI(“completions”, {
model: “text-davinci-003”,
prompt: “Write a happy sentence.
”,
max_tokens: 100,
});
return new Response(stream);
}
export const config = { runtime: “edge” };
Node:在Next.js API Route(Node)中使用流
如果没法使用Edge运行时或出于其他缘由要使用Node.js流,请使用openai-streams/node:
import type { NextApiRequest, NextApiResponse } from “next”;
import { OpenAI } from “openai-streams/node”;
export default async function test(_: NextApiRequest, res: NextApiResponse) {
const stream = await OpenAI(“completions”, {
model: “text-davinci-003”,
prompt: “Write a happy sentence.
”,
max_tokens: 25,
});
stream.pipe(res);
}
请参见example/src/pages/api/hello.ts中的示例。
与ChatGPT API一起使用
默许情况下,通过mode=”tokens”,您只会收到消息增量。要取得完全的事件,请使用mode=”raw”。
参见:https://platform.openai.com/docs/guides/chat/introduction
const stream = await OpenAI(“chat”, {
model: “gpt⑶.5-turbo”,
messages: [
{
role: “system”,
content: “You are a helpful assistant that translates English to French.”,
},
{
role: “user”,
content: ‘Translate the following English text to French: “Hello world!”‘,
},
],
});
在令牌模式下,您将只会收到响应块,其格式以下(为了说明,使用换行符分隔):
Hello! How can I assist you today?
使用mode=”raw”以获得原始事件。
openai sdk stream的常见问答Q&A
问题1:OpenAI流式要求实现方案是甚么?
答案:OpenAI流式要求实现方案是一种方法,用于从OpenAI API中实时接收流式响应。这类方法可以解决从OpenAI API获得长时间回复时的延迟和超时问题。它将响应分段传输给客户端,而不是一次性接收全部响应。使用流式要求实现方案可以提高利用程序的性能和用户体验。
- 一个常见的流式要求实现方案是使用Python和SSE(服务器推送事件)来实现。通过使用Python的SSE库,可以向OpenAI API发送POST要求,并监听来自API的SSE流响应。
- 另外一个实现流式要求的方法是使用JavaScript。在JavaScript中,可使用SSE或WebSocket来接收来自OpenAI API的流式响应。
- 流式要求实现方案可以通过减少网络延迟和下降服务器负载来提高利用程序的性能。
问题2:Vercel AI SDK是甚么?
答案:Vercel AI SDK是一种用于开发下一代人工智能利用程序的工具。它提供了一套API和工具,使开发人员能够快速构建、部署和扩大AI利用程序。
- Vercel AI SDK提供了一组易于使用的函数和类,用于与OpenAI API进行交互。
- 使用Vercel AI SDK可以轻松地将AI能力集成到现有的利用程序中,如聊天机器人、文本翻译和AI绘图。
- Vercel AI SDK支持多种开发语言和框架,包括Python和JavaScript。
- 通过Vercel AI SDK开发的利用程序可以在云端运行,由Vercel提供的全球内容分发网络(CDN)提供高性能的AI服务。
问题3:OpenAI ChatGPT SDK怎么实现流式响应?
答案:OpenAI ChatGPT SDK通过使用流式响应实现了流式要求。
- 在JavaScript中,可使用DCloud插件市场上的OpenAI ChatGPT SDK来实现流式响应。该SDK提供了一个名为”Stream Responses from OpenAI API with Python: A Step-by-Step Guide”的示例代码。
- 通过将设置`stream`参数设置为`true`,可以启用流式响应。这样,客户端可以实时接收来自OpenAI API的响应。
- 通过使用OpenAI ChatGPT SDK实现流式响应,可以解决从OpenAI API获得长时间回复时的延迟和超时问题,提高用户体验。
…
问题11:怎样在JavaScript中使用流式响应?
答案:在JavaScript中,可使用SSE(服务器推送事件)或WebSocket来实现流式响应。
- 使用SSE时,可以创建一个SSE连接,向OpenAI API发送要求,并监听来自API的流式响应。可使用第三方库,如DCloud插件市场上的OpenAI ChatGPT SDK来简化流式响应的实现。
- 使用WebSocket时,可以创建一个WebSocket连接,通过该连接实时接收来自OpenAI API的响应。可使用WebSocket库,如OpenAI v4 SDK来实现WebSocket流式响应。
- 在JavaScript中使用流式响应可以实现实时的和交互式的聊天机器人等利用程序。
…