このプロジェクトは、Google AI Hackathonのために作成されたものです。歴史に関するQ&Aチャットボットを実装しています。
- Python 3.12
- Streamlit
- Langchain
- Google Cloud AI Platform
- Neo4j
- Docker
app.py: メインのStreamlitアプリケーションmake_agent.py: チャットボットエージェントのセットアップget_wiki_article.py: 指定された日本の歴史的人物に関するWikipedia記事をダウンロードし、テキストファイルとして保存するmake_graph.py: テキストデータからグラフデータベースを構築し、クエリや検索を行う
以下の環境変数を.envファイルに設定してください:
COMPOSE_PROJECT_NAME: プロジェクト名PORTS_NUM_ST1: Streamlitのポート番号NEO4J_URI: Neo4jデータベースのURINEO4J_USERNAME: Neo4jデータベースのユーザー名NEO4J_PASSWORD: Neo4jデータベースのパスワードAURA_INSTANCEID: AuraDBのインスタンスIDAURA_INSTANCENAME: AuraDBのインスタンス名PROJECT_ID: Google Cloud プロジェクトIDREGION: Google Cloud リージョンOPENAI_API_KEY: OpenAI APIキー(必要な場合)STAGING_BUCKET: ステージングバケット名
# ベースイメージの指定
FROM python:3.12-slim
# Google Cloud CLIのバージョンとRyeのバージョンを環境変数として定義
ENV GCLOUD_VERSION=477.0.0
ENV RYE_VERSION=0.28.0
# システムパッケージのアップデートと必要なツールのインストール
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends \
git \
curl \
fonts-ipaexfont \
fonts-noto-cjk \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*
# Ryeのインストール
RUN curl -sSf https://rye.astral.sh/get | RYE_VERSION=${RYE_VERSION} RYE_INSTALL_OPTION="--yes" bash
ENV PATH="/root/.rye/shims:${PATH}"
# Google Cloud CLIをダウンロードしてインストール
RUN curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-${GCLOUD_VERSION}-linux-arm.tar.gz && \
tar -xzf google-cloud-cli-${GCLOUD_VERSION}-linux-arm.tar.gz && \
./google-cloud-sdk/install.sh --quiet && \
rm google-cloud-cli-${GCLOUD_VERSION}-linux-arm.tar.gz
# matplotlibの設定ファイルのコピー
COPY matplotlibrc /root/.config/matplotlib/matplotlibrc
# pyproject.tomlとrequirements.lockをコピー
# COPY ../pyproject.toml ../requirements.lock ./
# PATH を更新
ENV PATH="${PATH}:/google-cloud-sdk/bin"
# 作業ディレクトリの設定
WORKDIR /workspace
# Open ports for Streamlit
EXPOSE 8501
# Ryeプロジェクトの初期化と依存関係のインストール
# RUN rye sync
# エントリーポイントの設定
CMD ["/bin/bash"]以下のような構成にするとpipとrequirements.txtを使ってコンテナを作成できます。
# ベースイメージの指定
FROM python:3.12 AS builder
# Google Cloud CLIのバージョンを環境変数として定義
ENV GCLOUD_VERSION=477.0.0
# システムパッケージのアップデート
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends \
git \
curl \
fonts-ipaexfont \
fonts-noto-cjk \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*
# pythonライブラリのインストール
COPY requirements.txt .
RUN pip3 install --upgrade pip \
&& pip3 install --no-cache-dir -r requirements.txt
# Google Cloud CLIをダウンロードしてインストール
RUN curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-${GCLOUD_VERSION}-linux-arm.tar.gz && \
tar -xzf google-cloud-cli-${GCLOUD_VERSION}-linux-arm.tar.gz && \
./google-cloud-sdk/install.sh --quiet
# 実行環境
FROM python:3.12-slim
# 必要なパッケージのみをコピー
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /google-cloud-sdk /google-cloud-sdk
# フォントのコピー
COPY --from=builder /usr/share/fonts/opentype/ipaexfont-gothic /usr/share/fonts/opentype/ipaexfont-gothic
COPY --from=builder /usr/share/fonts/opentype/noto /usr/share/fonts/opentype/noto
# matplotlibの設定ファイルのコピー
COPY matplotlibrc /root/.config/matplotlib/matplotlibrc
# PATH を更新
ENV PATH $PATH:/google-cloud-sdk/bin
# 作業ディレクトリの設定
WORKDIR /workspace
# Open ports for Streamlit
EXPOSE 8501
CMD ["/bin/bash"]vscodeの場合はdevcontainerを使って作成できます。
コマンドの場合は.devcontainerに移動してから以下を実行してください。
docker compose up -dryeを使用している場合は以下
rye syncpip installの場合は以下
pip install -r requirements.lock- 環境変数を設定
- 依存関係をインストール
- 以下のコマンドでアプリケーションを起動:
streamlit run app.py- 織田信長、豊臣秀吉、徳川家康、明智光秀に関する質問に答えるチャットボット
- Neo4jベクトルデータベースを使用した効率的な情報検索
- Google Cloud AI Platformを活用した高度な自然言語処理
pyproject.tomlにプロジェクトの設定が記述されていますryeを使用してパッケージ管理を行っています- VSCodeの開発コンテナ設定が含まれています
- このプロジェクトはハッカソン用に開発されたものであり、本番環境での使用には適していない可能性があります
- APIキーや認証情報の取り扱いには十分注意してください
- ナレッジグラフはすでにNeo4jに作成されているので、
make_agent.pyとapp.pyでチャットボットを起動できます - ナレッジグラフを一から作る場合は
make_graph.pyで作成できます - ナレッジグラフを作成するためのテキストデータは
get_wiki_articles.pyを実行し、workspace/input/配下に入れてください