ملحوظة
اعتبارًا من أكتوبر 2024 ، يدعم Openai الآن التخزين المؤقت السريع في معظم النماذج: https://openai.com/index/api- prompt-caching/. يوصى باستخدام تطبيق Openai الرسمي بدلاً من ذلك.
وكيل التخزين المؤقت الأساسي لـ Openai API ، قابل للنشر كعامل CloudFlare.
يمكن أن يساعدك ذلك في تقليل تكاليف Openai (والحصول على نتائج أسرع) من خلال إرجاع الاستجابات المخزنة مؤقتًا للطلبات المتكررة.
يدعم خادم الوكيل تحديد ذاكرة التخزين المؤقت TTL على أساس لكل طلب ، بحيث يمكنك تكوين هذا بناءً على احتياجاتك. على سبيل المثال ، طراز text-davinci-003 هو 10x تكلفة text-curie-001 حتى تتمكن من اختيار تخزين النتائج لفترة أطول ل Davinci.
توافق العميل:
إنه فقط Caches POST Reports التي تحتوي على هيئة طلب JSON ، حيث تميل هذه إلى أن تكون أبطأ وهي الوحيدة التي تكلف المال (في الوقت الحالي).
استنساخ الريبو وتثبيت التبعيات.
ستحتاج إلى الاشتراك في خدمتين (كلاهما لديه مستويات مجانية):
أخيرًا ، قم بإعداد أسرار Redis بناءً على التعليمات في wrangler.toml .
اعتمادًا على استخدامك ، يمكنك محاولة استبدال Redis بـ Cloudflare KV بدلاً من ذلك والتي تكون متسقة في النهاية ولكن من المحتمل أن توفر زمنًا أفضل للقراءة. تحقق من wrangler.toml للحصول على تعليمات الإعداد.
ابدأ خادم الوكيل على http: // localhost: 8787 مع:
yarn start
ثم ، في مشروعك المنفصل حيث يكون لديك تكوين Openai/Openai-Node ، تمرير في basePath الجديد بحيث يرسل الطلبات عبر الوكيل بدلاً من Openai مباشرة:
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
+ // Point this to your local instance or Cloudflare deployment:
+ basePath: 'http://localhost:8787/proxy',
});
const openai = new OpenAIApi(configuration);يمكنك بعد ذلك تجربة بعض طلبات العينة. سيتم تنظيم الأول إلى Openai نظرًا لأن الاستجابة المخزنة مؤقتًا لم يتم حفظها بعد ، لكن الطلب المتكرر/المكرر الثاني سيعيد النتيجة المخزنة بدلاً من ذلك.
const options = { model : 'text-ada-001' , prompt : 'write a poem about computers' } ;
// This first request will be proxied as-is to OpenAI API, since a cached
// response does not yet exist for it:
const completion = await openai . createCompletion ( options ) ;
console . log ( 'completion:' , completion ) ;
// This second request uses the same options, so it returns nearly instantly from
// local cache and does not make a request to OpenAI:
const completionCached = await openai . createCompletion ( options ) ;
console . log ( 'completionCached:' , completionCached ) ; إذا كنت لا ترغب في نتائج ذاكرة التخزين المؤقت إلى أجل غير مسمى ، أو لم يكن لديك سياسة إخلاء تم إعدادها على مثيل Redis الخاص بك ، فيمكنك تحديد TTL في ثواني باستخدام رأس X-Proxy-TTL .
const configuration = new Configuration({
...
+ baseOptions: {
+ // In this example, we specify a cache TTL of 24 hours before it expires:
+ headers: { 'X-Proxy-TTL': 60 * 60 * 24 }
+ }
}); إذا كنت بحاجة إلى فرض تحديث ذاكرة التخزين المؤقت ، فيمكنك استخدام رأس X-Proxy-Refresh . سيؤدي ذلك إلى استجابة جديدة من Openai و Cache هذا الاستجابة الجديدة.
const configuration = new Configuration({
...
+ baseOptions: {
+ headers: { 'X-Proxy-Refresh': 'true' }
+ }
}); انظر /examples/ دليل للحصول على مثال كامل على كيفية استدعاء هذا الوكيل مع عميل Openai الخاص بك.
ويشمل ذلك كل من Node.js و Python و Ruby Client Assage أمثلة.