github | NPM | 문서
이제 Chatgpt API 지원과 함께! Chatgpt API와 함께 사용 하십시오. (속삭임이 곧 나옵니다!)
이 라이브러리는 OpenAI API 응답을 스트림으로 만 반환합니다. edits 등과 같은 비 스트림 엔드 포인트는 단순히 하나의 청크 업데이트 만있는 스트림입니다.
process.env 에서 OPENAI_API_KEY . openai-streams/node 에서 사용할 수있는 NodeJS.Readable 버전을 사용하여 브라우저, Edge Runtime 및 Node 18+에 기본적으로 ReadableStream 사용합니다.
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 Env 변수를 설정하거나 ( { 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를 호출하십시오.
params 유형은 귀하가 제공하는 endpoint , 즉 "edits" 엔드 포인트, import('openai').CreateEditRequest 시행됩니다.
raw 스트리밍 모드의 예 :
await OpenAI (
"chat" ,
{
messages : [
/* ... */
] ,
} ,
{ mode : "raw" }
) ; 이것은 브라우저에서도 작동하지만 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.nn" ,
max_tokens : 100 ,
} ) ;
return new Response ( stream ) ;
}
export const config = {
runtime : "edge" ,
} ; Edge Runtime을 사용할 수 없거나 다른 이유로 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.nn" ,
max_tokens : 25 ,
} ) ;
stream . pipe ( res ) ;
} example/src/pages/api/hello.ts 의 예를 참조하십시오.
기본적으로 mode = "tokens" 사용하여 Deltas 메시지 만 받게됩니다. 전체 이벤트의 경우 mode = "raw" 사용하십시오.
https://platform.openai.com/docs/guides/chat/introduction을 참조하십시오
const stream = await OpenAI ( "chat" , {
model : "gpt-3.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!"' ,
} ,
] ,
} ) ; tokens 모드에서는 응답 청크 만받습니다.
Hello
!
How
can
I
assist
you
today
?
원시 이벤트에 액세스하려면 mode = "raw" 를 사용하십시오.
for await (const chunk of yieldStream(stream)) { ... } . 직관적 인 경우이 패턴을 따르는 것이 좋습니다.