📖

LangChainでAzureChatOpenAIを扱えるようにしてみる

2024/08/18に公開

概要

Azure Open AI Service の Chat APIを組み込んで、langchain動かしたいなと思ったので、以下ページを参考に設定してみました。

やったことは以下ドキュメントの通りであり、この記事は備忘録です。
https://python.langchain.com/v0.1/docs/integrations/chat/azure_chat_openai/

前提

Azure Open AI Service の Chat APIにリクエストできること

実際のコード

index.py
from langchain_openai import AzureChatOpenAI
import config
import os

os.environ["AZURE_OPENAI_API_KEY"] = {APIキー}
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://xxxxxx.openai.azure.com"
os.environ["AZURE_OPENAI_API_VERSION"] = "2023-05-15"
os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"] = "gpt-4o"


model = AzureChatOpenAI(
    azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"],
    api_version=os.environ["AZURE_OPENAI_API_VERSION"],
)

message = "人生とは何か?100文字以内でこの質問に答えてください。"

res = model.invoke(message)

print(res.content)

出力結果

人生とは、個々の経験や感情、学びや成長を通じて自己を理解し、他者と関わりながら意味や目的を見出す旅路である。

callback処理もやってみる

https://python.langchain.com/v0.1/docs/integrations/chat/azure_chat_openai/#model-version

実際のコード

index.py

from langchain_openai import AzureChatOpenAI
from langchain_community.callbacks import get_openai_callback
import config
import os

os.environ["AZURE_OPENAI_API_KEY"] = {APIキー}
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://xxxxxx.openai.azure.com"
os.environ["AZURE_OPENAI_API_VERSION"] = "2023-05-15"
os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"] = "gpt-4o"


model = AzureChatOpenAI(
    azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"],
    api_version=os.environ["AZURE_OPENAI_API_VERSION"],
)

message = "人生とは何か?100文字以内でこの質問に答えてください。"

with get_openai_callback() as cb:
    res = model.invoke([message])
    print(res.content)
    print(
        f"Total Cost (USD): ${format(cb.total_cost, '.6f')}"
    )

出力結果

この回答はコスト以上に効果がありそうな気がする。

人生とは、個々の経験、成長、喜び、悲しみを通じて自分自身と他者との関係を深める旅であり、意味や目的を見つける過程です。それは一度きりの貴重な機会です。
Total Cost (USD): $0.001075

環境

パッケージはlangchain系のみ抜粋

$ python --version
Python 3.12.5
$ pip list

langchain                0.2.14
langchain-community      0.2.12
langchain-core           0.2.33
langchain-openai         0.1.21
langchain-text-splitters 0.2.2
langsmith                0.1.98

Discussion