Github | NPM | Docs
Maintenant avec la prise en charge de l'API de Chatgpt! Voir Utiliser avec l'API ChatGpt . (Chuchoter bientôt!)
Cette bibliothèque renvoie uniquement les réponses de l'API OpenAI en tant que flux. Les points de terminaison non diffusés comme edits etc. sont simplement un flux avec une seule mise à jour de morceaux.
OPENAI_API_KEY depuis process.env . Utilise ReadableStream par défaut pour le navigateur, le runtime Edge et le nœud 18+, avec une version NodeJS.Readable disponible sur 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
) ; Définissez la variable Env OPENAI_API_KEY (ou passez l'option { apiKey } ).
La bibliothèque lancera si elle ne trouvera pas de clé API. Votre programme le chargera à l'exécution à partir de process.env.OPENAI_API_KEY par défaut, mais vous pouvez remplacer cela avec l'option { apiKey } .
IMPORTANT: Pour la sécurité, vous ne devez charger cela que à partir d'une variable process.env .
await OpenAI (
"completions" ,
{
/* endpoint params */
} ,
{ apiKey : process . env . MY_SECRET_API_KEY }
) ; Appelez l'API via await OpenAI(endpoint, params, options?) .
Le type params sera déduit en fonction du endpoint que vous fournissez, c'est-à-dire pour le point de terminaison "edits" , import('openai').CreateEditRequest sera appliqué.
Exemple avec le mode de streaming raw :
await OpenAI (
"chat" ,
{
messages : [
/* ... */
] ,
} ,
{ mode : "raw" }
) ; Cela fonctionnera également dans le navigateur, mais vous aurez besoin des utilisateurs pour coller leur clé OpenAI et la transmettre via l'option { 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" ,
} ; Si vous ne pouvez pas utiliser un Edge Runtime ou souhaitez consommer des flux Node.js pour une autre raison, utilisez 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 ) ;
} Voir l'exemple dans example/src/pages/api/hello.ts .
Par défaut, avec mode = "tokens" , vous ne recevrez que le message deltas. Pour les événements complets, utilisez mode = "raw" .
Voir: 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!"' ,
} ,
] ,
} ) ; En mode tokens , vous recevrez simplement les morceaux de réponse, qui ressemblent à ceci (séparés avec Newlines pour l'illustration):
Hello
!
How
can
I
assist
you
today
?
Utilisez mode = "raw" pour accéder aux événements bruts.
for await (const chunk of yieldStream(stream)) { ... } . Nous vous recommandons de suivre ce modèle si vous le trouvez intuitif.