جيثب | NPM | مستندات
الآن مع دعم atgpt API! انظر الاستخدام مع atgpt API . (يهمس قريبا!)
هذه المكتبة تُرجع ردود API Openai كداخل فقط. نقاط النهاية غير المتجولة مثل edits وما إلى ذلك هي ببساطة دفق مع تحديث قطعة واحدة فقط.
OPENAI_API_KEY من process.env . يستخدم ReadableStream افتراضيًا للمتصفح ، ووقت تشغيل Edge ، و Node 18+ ، مع إصدار NodeJS.Readable متوفر في 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
) ; قم بتعيين متغير env 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 }
) ; اتصل بـ 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" ,
} ; إذا لم تتمكن من استخدام وقت تشغيل 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)) { ... } . نوصي باتباع هذا النمط إذا وجدت أنه بديهي.