freks blog

about

LangChainで費用を表示する

created: 2024-04-27
おすすめ記事: 出会ってよかったプログラマー本

LangChainを使っていてLLMの費用が気になるので表示させてみました

langchain_community.callbacks.manager.get_openai_callback — 🦜🔗 LangChain 0.1.16 を見つけてこれがよさそうです

langchain_communityモジュールが必要なのでインストールします

pip install langchain-community

以下のコードで費用を表示させてみました

import os
from langchain_openai import AzureChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.callbacks import get_openai_callback

os.environ["AZURE_OPENAI_API_KEY"] = os.getenv("AZURE_OPENAI_API_KEY", "")
os.environ["AZURE_OPENAI_ENDPOINT"] = os.getenv("AZURE_OPENAI_ENDPOINT", "")
os.environ["AZURE_OPENAI_API_VERSION"] = "2024-02-01"
os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"] = "gpt-35-turbo"
os.environ["AZURE_OPENAI_CHAT_MODEL_VERSION"] = "0613"

llm = AzureChatOpenAI(
    azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"],
    api_version=os.environ["AZURE_OPENAI_API_VERSION"],
    model_version=os.environ["AZURE_OPENAI_CHAT_MODEL_VERSION"],
)

prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "You are a science guy. Response in japanese.",
        ),
        ("user", "{input}"),
    ]
)
output_parser = StrOutputParser()

chain = prompt | llm | output_parser

with get_openai_callback() as cb:
    message = chain.invoke({"input": "Tell me a joke"})
    print(message)
    print(f"Total Cost (USD): ${format(cb.total_cost, '.6f')}")

実行結果が以下です

なぜカエルは美しい音色を出せるのか分かりますか?

それは彼らが「クワックスペリメント」をしているからです!
Total Cost (USD): $0.000131

これで費用が表示されました
model_version を指定しないと正しい結果にならないので注意です

まとめ

従量課金だと費用が気になりますね

PR

Pythonプログラミングパーフェクトマスター

Pythonプログラミングパーフェクトマスター

このリンクは、アフィリエイトリンクです


Amazonのアソシエイトとして、blog.freks.jp は適格販売により収入を得ています。
This site is managed by freks