GitHub | Npm | Док
Теперь с поддержкой API CHATGPT! См. Использование с API CHATGPT . (Шепот скоро!)
Эта библиотека возвращает OpenAI API -ответы только как потоки. Конечные точки без потоков, такие как edits и т. Д.-это просто поток только с одним обновлением куски.
OPENAI_API_KEY от process.env . По умолчанию использует ReadableStream для браузера, времени выполнения Edge и Node 18+, с NodeJS.Readable Version, доступной на openai-streams/node .
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 . Env.
await OpenAI (
"completions" ,
{
/* endpoint params */
} ,
{ apiKey : process . env . MY_SECRET_API_KEY }
) ; Позвоните в API через await OpenAI(endpoint, params, options?) .
Тип 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
?
Используйте mode = "raw" для доступа к необработанным событиям.
for await (const chunk of yieldStream(stream)) { ... } . Мы рекомендуем следовать этому шаблону, если вы найдете его интуитивно понятным.