【ChatGPT】 Microsoft の guidance を用いた Mock の実装

皆さんは、OpenAI が提供している LLM の API を使ってアプリ開発をしているでしょうか? そのとき、逐一API を呼び出していると料金がかかってしまい、開発予算が枯渇してしまう危険があります。その問題を回避するために、guidance の mock を用いた開発を示します。


guidance を用いた実装

guidance は、Microsoft が提供している LLM をコントロールするパッケージです(こちらを参照してください)。OpenAI の API は以下のようにして使用できます。

OpenAPI のキーなどの設定

まず、開発するコードと同じディレクトリに .env というファイルを作り、

OPENAI_API_KEY = ""
OPENAI_ORGANIXATION = ""

を記述します。上記の "" の部分には各々の API キーと Organization ID を入れてください。OpenAI の API キーは、こちらの記事のように作成してください。Organization ID は、OpenAI API ページのダッシュボードの右上にあるユーザアイコンをクリックして、

Manage account 選択

上図のように Manage account をクリックすると、下図のように Settings で Organization ID が確認できます。

Organization ID の確認方法

上記のようにして得られた API キーと Organization ID を .env ファイルに記述してください。

guidance を用いた API の使い方

.env が設定できたら、以下のように guidance で LLM を呼びましょう。

import os
import guidance
from dotenv import load_dotenv
load_dotenv()

guidance.llm = guidance.llms.OpenAI(
                                     model="gpt-3.5-turbo",
                                     api_key=os.environ.get("OPENAI_API_KEY"),
                                     organization=os.environ.get("OPENAI_ORGANIZATION")
                                    )

このようにしたら、以下のように会話ができます。

program = guidance(
    '''
  こんにちは

    {{gen "answer"}}
    '''
)

executed_program = program()
model_output = executed_program["answer"]

実際の guidance の使い方は公式ページや他の方のページを参照してください。

Mock を用いた実装

guidance.llms.OpenAI の部分を以下のように書き換えてください。

guidance.llm = guidance.llms.Mock("example answer")

このようにすると、任意のプロンプトに対して "example answer" を返すようになります。"example answer" は想定される回答に変更してください。
コード例の全体は以下です。

import guidance

guidance.llm = guidance.llms.Mock("example answer")


program = guidance(
    '''
  こんにちは

    {{gen "answer"}}
    '''
)

executed_program = program()
model_output = executed_program["answer"]

これで、お金がかからずに実装が可能になるかと思います。プロンプトがどのように構築されるかなどの確認には必要になりそうですね。

まとめ

guidance の mock の実装を示しました。API を何度も呼び出すと料金がかかりすぎるので、mock を使ってプロンプトなどを確認が必要でしょう。

この記事が気に入ったらサポートをしてみませんか?