Closed4

GPTCache

laisolaiso

https://github.com/zilliztech/GPTCache

  • GPT(OpenAI API)の結果をキャッシュしてコスト削減するモジュール
  • ベクターDBを開発してるZillizが公開
  • アダプターと呼ばれる層がAPIリクエストにプロキシとして割り込み保存+差し替えをする
laisolaiso

似てるもの

  • PromptLayer プロキシとして割り込んでAPIリクエスト結果を外部サーバーに保存しておいて分析するSaaS
laisolaiso

examples/openai_examples/readme.py

questionsのAPI結果をキャシュする

https://github.com/zilliztech/GPTCache/blob/main/examples/openai_examples/readme.py#L80-L85

# macOSなのでfaiss-cpuでごまかす
pip install faiss-cpu transformers onnxruntime
python examples/openai_examples/readme.py

データはどこか

https://github.com/zilliztech/GPTCache/blob/main/examples/openai_examples/readme.py#L70-L77

カレントディレクトリに sqlite.db faiss.index が生成されてる。

❯ sqlite3 sqlite.db  
SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE gptcache (
        id INTEGER NOT NULL, 
        question VARCHAR(1000) NOT NULL, 
        answer VARCHAR(1000) NOT NULL, 
        create_on DATETIME, 
        last_access DATETIME, 
        embedding_data BLOB, 
        state INTEGER, 
        type INTEGER, 
        PRIMARY KEY (id)
);
sqlite> SELECT * FROM gptcache;
1|what is github|GitHub is an online platform used for version control, software development, and collaboration. It allows users to host and review code, manage project collaborations and releases, and track changes and bugs in their code. It is widely used by developers and organizations to collaborate on open-source and closed-source projects, as well as manage their codebase and workflow efficiently. GitHub also offers a range of features like issue tracking, code review, and continuous integration and deployment to improve developers' productivity and code quality.|2023-04-14 12:39:56.124644|2023-04-14 12:42:13.623031|n
                                                                a<j?=kMt=hJؼ2=;r;J<'HY;;#<|0|0

Embeddingsは GPTCache/paraphrase-albert-onnx というモデルをONNX経由で利用しているようだ。

laisolaiso

評価

  • アプリケーション開発中にopenaiモジュールを置き換えて使用するのには向いてるかもしれない
  • 本番環境でComletetion APIの呼び出しをキャッシュするならソースコードを参考に自作した方がよさそう

開発用途だとBaaS系のemulatorのようなモックサーバーとして使えるインターフェイスだといいかも?

import openai

openai.api_base = "http://localhost:8000" if os.environ.get("DEBUG") else "https://api.openai.com"

response = openai.Completion.create()

このスクラップは2023/04/25にクローズされました