ゴール
LangChainとAzureChatOpenAIを使用して、PythonでSQLiteデータベースとのインタラクションを実現するエージェントを実装する方法を説明します。
スタートライン
- 基本的なPythonの知識があること
- Azureのサブスクリプションを持っていること
- LangChainとOpenAIのライブラリがインストールされていること
環境
- Windows 11
- Python 3.11.5
- OpenAI
- LangChain
- AzureChatOpenAI
ステップ1:環境設定と依存関係のインポート
環境変数
OPENAI_API_KEY = "[Azure OpenAIのAPIキー]"
OPENAI_API_BASE = "[Azure OpenAIのエンドポイント]"
ライブラリのインストール
pip install langchain
pip install openai
データベースの準備
https://www.sqlitetutorial.net/sqlite-sample-database/ の「Download SQLite sample database」選択し、サンプルのデータベース「chinook.db」をダウンロードします。使用ディレクトリ内に「notebooks」フォルダを作成し、ダウンロードした「chinook.db」を配置します。
必要なライブラリのインポート
必要なライブラリをインポートし、環境変数を読み込みます。
from dotenv import load_dotenv
load_dotenv()
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.agents.agent_types import AgentType
from langchain.chat_models import AzureChatOpenAI
from langchain.sql_database import SQLDatabase
このコードは、LangChainのSQLエージェントとAzureChatOpenAIを使用するためのライブラリをインポートします。また、.env
ファイルから環境変数を読み込むためのload_dotenv関数も含まれています。
ステップ2:データベースとモデルの設定
次に、SQLデータベースとLangChainで使用するチャットモデルを設定します。
YOUR PATH
部分はchinook.dbを配置したご自身のパスに設定してください。
また、Azure OpenAIの設定もご自身の環境に合わせてください。
db = SQLDatabase.from_uri("sqlite:///<YOUR PATH>")
llm = AzureChatOpenAI(
temperature=0,
azure_deployment="gpt-35-turbo-16k",
openai_api_version="2023-07-01-preview",
)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
ここでは、SQLiteデータベースを指定してSQLDatabaseオブジェクトを作成し、AzureChatOpenAIを設定しています。toolkitはデータベースと言語モデルを組み合わせて機能します。
ステップ3:エージェントの実行
最後に、SQLエージェントを作成し、実行します。
agent_executor = create_sql_agent(
llm=llm,
toolkit=toolkit,
verbose=True,
agent_type=AgentType.OPENAI_FUNCTIONS,
)
agent_executor.run("質問内容")
このコードは、SQLデータベースと対話するエージェントを作成し、ユーザーの質問に応じて動作します。agent_executor.runメソッドに質問を渡すことで、エージェントが質問に答えます。
結果
質問:いくつのデータが存在しますか?
質問:albumsのデータの中で、Aから始まるデータを抽出してください。
質問:「invoices」テーブルから、国別の合計売上を計算してください。
質問:「invoices」テーブルから最新の10件のインボイスを日付順に取得してください。
フィニッシュ
お疲れ様でした!
以下のXで情報発信も行っています!
参考文献