Catatan
Pada Oktober 2024, Openai sekarang secara resmi mendukung caching cepat di sebagian besar model: https://openai.com/index/api-prompt-caching/. Dianjurkan agar Anda menggunakan implementasi resmi Openai sebagai gantinya.
Proxy Caching Dasar untuk Openai API, dapat digunakan sebagai pekerja Cloudflare.
Ini dapat membantu Anda mengurangi biaya openai Anda (dan mendapatkan hasil yang lebih cepat) dengan mengembalikan tanggapan di -cache untuk permintaan berulang.
Server proxy mendukung Cache TTL berdasarkan per permintaan, sehingga Anda dapat mengonfigurasi ini berdasarkan kebutuhan Anda. Misalnya, model text-davinci-003 adalah 10x biaya text-curie-001 sehingga Anda dapat memilih untuk cache hasil lebih lama untuk DaVinci.
Kompatibilitas Klien:
Ini hanya menemui permintaan POST yang memiliki badan permintaan JSON, karena ini cenderung menjadi yang paling lambat dan satu -satunya yang membutuhkan biaya (untuk saat ini).
Kloning repo dan instal dependensi.
Anda harus mendaftar untuk dua layanan (yang keduanya memiliki tingkatan gratis):
Akhirnya, atur rahasia Redis Anda berdasarkan instruksi di wrangler.toml .
Bergantung pada penggunaan Anda, Anda dapat mencoba mengganti Redis dengan Cloudflare KV sebagai gantinya yang pada akhirnya konsisten tetapi kemungkinan akan memberikan latensi baca yang lebih baik. Periksa wrangler.toml untuk instruksi pengaturan.
Mulai server proxy di http: // localhost: 8787 dengan:
yarn start
Kemudian, dalam proyek terpisah Anda di mana Anda memiliki konfigurasi openai/openai-node Anda, lewati di basePath baru sehingga mengirimkan permintaan melalui proxy Anda daripada langsung ke 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);Anda kemudian dapat mencoba beberapa permintaan sampel. Yang pertama akan diproksi ke OpenAI karena respons yang di -cache belum disimpan untuk itu, tetapi permintaan berulang/duplikat kedua akan mengembalikan hasil yang di -cache sebagai gantinya.
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 ) ; Jika Anda tidak ingin menghasilkan cache tanpa batas waktu, atau Anda tidak memiliki kebijakan penggusuran yang diatur pada instance Redis Anda, Anda dapat menentukan TTL dalam hitungan detik menggunakan header 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 }
+ }
}); Jika Anda perlu memaksa menyegarkan cache, Anda dapat menggunakan header X-Proxy-Refresh . Ini akan mendapat respons baru dari OpenAi dan cache respons baru ini.
const configuration = new Configuration({
...
+ baseOptions: {
+ headers: { 'X-Proxy-Refresh': 'true' }
+ }
}); Lihat /examples/ Direktori untuk contoh lengkap tentang cara memanggil proxy ini dengan klien openai Anda.
Ini termasuk contoh penggunaan klien Node.js, Python dan Ruby.