github | npm |ドキュメント
ChatGpt APIサポートで! ChatGpt APIでの使用を参照してください。 (ささやき声がすぐに来ます!)
このライブラリは、OpenAI API応答をストリームとしてのみ返します。 editsなどの非ストリームエンドポイントは、単に1つのチャンクアップデートしかないストリームです。
OPENAI_API_KEYはprocess.envから。 Browser、Edge Runtime、およびNode 18+にデフォルトでReadableStreamを使用し、 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 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" ,
} ; エッジランタイムを使用できない場合、または別の理由で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
?
rawイベントへのアクセスにmode = "raw"を使用します。
for await (const chunk of yieldStream(stream)) { ... }を介して発電機を使用して操作されます。直感的であると思う場合は、このパターンに従うことをお勧めします。