Docker環境でLangChainの開発環境を構築する
c:/
`-- docker-projects/
|-- Dockerfile
|-- requirements.txt
`-- main.py
必要ファイルの作成
Dockerfile
Dockerイメージを作成するための設計図となるテキストファイルです。
# ベースイメージ
FROM python:3.9
# 作業ディレクトリを作成
WORKDIR /app
# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Pythonのパッケージをインストール
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# アプリケーションコードをコピー
COPY . /app
# コンテナ起動時に実行するコマンドを指定(適宜変更)
CMD ["python", "main.py"]
パッケージ(requirements.txt)
Pythonプロジェクトで必要なパッケージとそのバージョンを一覧化したテキストファイルです。LangChainはここで指定します。
langchain
openai
tiktoken
faiss-cpu
langchain-community
エントリポイント(main.py)
from langchain import OpenAI, LLMChain
from langchain.prompts import PromptTemplate
# OpenAI APIキーの設定
import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
# プロンプトのテンプレートを作成
prompt = PromptTemplate(
input_variables=["question"],
template="Q: {question}\nA:"
)
# OpenAIのLLMを使用
llm = OpenAI(temperature=0.7)
# LLMChainを作成
chain = LLMChain(llm=llm, prompt=prompt)
# 質問に対する応答を生成
def get_response(question):
return chain.run(question)
if __name__ == "__main__":
question = "北海道で有名な海産物は?"
response = get_response(question)
print(f"質問: {question}")
print(f"応答: {response}")
Dockerイメージのビルド
docker build -t langchain-app .
Dockerコンテナの実行
docker run --rm langchain_app
実行結果
質問: 北海道で有名な海産物は?
応答: 北海道では、ズワイガニ、ホタテ、いくら、たらこ、サケなどが有名な海産物です。また、ウニやホッキ貝、あさりなども観光客に人気があります。
トラブルシューティング
OpenAIのAPIキーが存在しない場合
openai.AuthenticationError: Error code: 401 – {‘error’: {‘message’: ‘Incorrect API key provided: xxx. You can find your API key at https://platform.openai.com/account/api-keys.’, ‘type’: ‘invalid_request_error’, ‘param’: None, ‘code’: ‘invalid_api_key’}}
OpenAIのAPIキーのクレジット残高が不足している場合
openai.RateLimitError: Error code: 429 – {‘error’: {‘message’: ‘You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.’, ‘type’: ‘insufficient_quota’, ‘param’: None, ‘code’: ‘insufficient_quota’}}
コメント