Skip to content

YusukeHayashiii/google-ai-hackathon

Repository files navigation

Google AI Hackathon Project

目次

概要

このプロジェクトは、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データベースのURI
  • NEO4J_USERNAME: Neo4jデータベースのユーザー名
  • NEO4J_PASSWORD: Neo4jデータベースのパスワード
  • AURA_INSTANCEID: AuraDBのインスタンスID
  • AURA_INSTANCENAME: AuraDBのインスタンス名
  • PROJECT_ID: Google Cloud プロジェクトID
  • REGION: Google Cloud リージョン
  • OPENAI_API_KEY: OpenAI APIキー(必要な場合)
  • STAGING_BUCKET: ステージングバケット名

Dockerfile

ryeを使用する場合

# ベースイメージの指定
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を使用する場合

以下のような構成にすると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 -d

依存関係のインストール

ryeを使用している場合は以下

rye sync

pip installの場合は以下

pip install -r requirements.lock

使用方法

  1. 環境変数を設定
  2. 依存関係をインストール
  3. 以下のコマンドでアプリケーションを起動:
streamlit run app.py

主な機能

  • 織田信長、豊臣秀吉、徳川家康、明智光秀に関する質問に答えるチャットボット
  • Neo4jベクトルデータベースを使用した効率的な情報検索
  • Google Cloud AI Platformを活用した高度な自然言語処理

開発者向け情報

  • pyproject.tomlにプロジェクトの設定が記述されています
  • ryeを使用してパッケージ管理を行っています
  • VSCodeの開発コンテナ設定が含まれています

注意事項

  • このプロジェクトはハッカソン用に開発されたものであり、本番環境での使用には適していない可能性があります
  • APIキーや認証情報の取り扱いには十分注意してください

補足

  • ナレッジグラフはすでにNeo4jに作成されているので、make_agent.pyapp.pyでチャットボットを起動できます
  • ナレッジグラフを一から作る場合はmake_graph.pyで作成できます
  • ナレッジグラフを作成するためのテキストデータはget_wiki_articles.pyを実行し、workspace/input/配下に入れてください

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors