導入前回の記事では、プロジェクトに必要な知識のポイントについて簡単に説明しました。今日は、プロジェクト全体の環境設定を開始します。以下の記事では、プロジェクトをスムーズに進めるために、プロジェクトに必要なさまざまなツールや環境をどのように設定すればよいかを詳しく紹介します。 展開する次に、環境変数が有効になるように、コンピューターを数回再起動する必要がある場合があります。これは、開発を進める前に環境が正しく設定されていることを確認する必要があるため必要です。 パイソンPython の最新バージョン (3.10.*) は、公式 Web サイトのダウンロード ページから入手できます: https://www.python.org/downloads/windows/ ダウンロードが完了したら、デフォルト設定に従って「次へ」をクリックしてインストールを続行できます。すぐにコンピューターを再起動したくない場合は、Docker Desktop のインストールを続行できます。 写真 Docker デスクトップDocker Desktop は、Windows 上で実行され、Docker コンテナをより便利に管理および実行できるビジュアル ツールです。 Docker をインストールする目的は、開発とテストを改善するためにデータベース環境を独立して実行することです。 Docker Desktop のダウンロード アドレスは、公式 Web サイトにあります: https://docs.docker.com/desktop/install/windows-install/ このページでは、Docker Desktop for Windows のインストール ファイルを見つけることができます。ダウンロードが完了したら、インストール ウィザードの手順に従ってインストールできます。 インストールが完了すると、Docker Desktop を使用してコンテナを作成、起動、停止したり、ネットワークやストレージなどのコンテナ設定を管理したりできるようになります。 Docker コンテナ内でデータベース環境を個別に実行することで、データベースをより適切に分離して管理できるようになり、開発プロセスの効率と信頼性が向上します。 写真 インストールが完了したら、コンピューターを再起動して環境変数を有効にします。 Python および Docker 環境変数はインストール プロセス中に自動的に設定されるため、手動で設定する必要はありません。したがって、これらの環境変数を有効にするには、コンピューターを再起動するだけです。再起動後、Python と Docker の使用を開始できます。 ビジュアルスタジオコードVisual Studio Code は、Windows、macOS、Linux オペレーティング システム用の無料のソース コード エディターです。さまざまなプログラミング言語やテクノロジーの開発に広く使用されている、軽量でありながら強力なツールです。 公式ダウンロードアドレス: https://code.visualstudio.com/Download 写真 ps: まず、効率を向上させるインテリジェントな AI プログラミング機能を備えているため、カーソルを開発に使用してみようと思いました。しかし、開発コンテナを起動すると、何度も検索しても解決策が見つからない一連のエラーが発生しました。そのため、カーソルの使用を断念することにしました。 Baidu パドルパドルこれで、前回の記事で作成したディレクトリとファイルに基づいて開発環境のインストールを開始できます。 Baidu PaddlePaddle プラットフォームには開発環境がプリインストールされており、すぐに開発を開始できると考える学生もいるかもしれませんが、簡単な演習を行うだけであれば問題ありませんが、個人または企業レベルの開発プロジェクトの場合は、通常、ローカルで開発して展開する必要があります。それで、もっと複雑な方法で説明しようと思います。 Baidu PaddlePaddle プラットフォームに興味がある場合は、試してみることもできます。迅速な開発のための詳細なドキュメントが提供されているため、ここでは説明しません。 Baidu PaddlePaddleプラットフォームの公式アドレスはhttps://aistudio.baidu.com/indexです。 写真 cmd コマンドラインで docker version コマンドを使用すると、コンソールに対応する出力が表示されます。これは、データベース コンテナの公開を開始できることを意味します。 写真 ご興味がございましたら、公式の迅速な開発例もご覧ください。詳細については、公式ウェブサイトをご覧ください: https://milvus.io/ 公式の設定ファイルを私たちの設定ファイルに取り込んだので、公式の例を再度確認する必要はありません。さらに、構成ファイルには独自のコンテナも含まれています。今後は、開発したプログラムを他のコンポーネントが呼び出すためのインターフェースとして使用する予定なので、まずはこの部分の作業を完了しました。 設定ファイル以下はdocker-compose.yamlの設定ファイルです。 version: '3' services: xiaoyu-chat: build: context: . dockerfile: Dockerfile target: ${TARGET:-dev} # Default value is "dev" args: - MAKE=${MAKE} environment: - OPENAI_API_KEY=${OPENAI_API_KEY} etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.0 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd minio: container_name: milvus-minio image: minio/minio:RELEASE.2020-12-03T00-03-10Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data command: minio server /minio_data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.3.2 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus ports: - "19530:19530" depends_on: - "etcd" - "minio" networks: default: name: milvus 以下が Dockerfile です。特に業務コードは書いていないので、最後の行はファイルを実行せずに空のコンテナを作成するだけです。完了したら、この行を実際の実行コマンドに置き換えてください。 FROM python:3.10 as base WORKDIR /app # setup code COPY . . RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ poetry==1.4.2 # Install dependencies using Poetry RUN poetry config virtualenvs.create true && \ poetry install --no-interaction --no-ansi # image to dev FROM base as dev CMD sh -c "while sleep 1000; do :; done" 以下はpyproject.tomlの設定ファイルです。 [tool.poetry] name = "xiaoyu-chat" version = "0.1.0" description = "AI QA" authors = ["xiaoyu"] [tool.poetry.dependencies] python = "^3.10, <3.11" fastapi = "^0.104.1" ipykernel = "^6.26.0" langchain = "^0.0.326" openai = "^0.28.1" [[tool.poetry.source]] name = "aliyun" url = "https://mirrors.aliyun.com/pypi/simple/" default = true secondary = false Git を使用する場合は、次のような .gitignore ファイルを既に作成してあります。 # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so volumes/ # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # PEP 582; used by eg github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintainted in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ 最後に残っているのは環境変数 env ファイルですが、これは非常にシンプルです。 OpenAIを呼び出すにはキーを設定する必要があります。取得方法が分からない場合は、以前公式アカウントで公開した記事を参照してください。 OPENAI_API_KEY='sk-UvHNty93g44iGO1ydfgNT12lbkFJYK6WqgOTxjtIIL6xxxd9' とても良い!環境設定が完了したので、VS Code に Dev Container プラグインをインストールできます。 Dev Container プラグインを使用せずにコンテナをオーケストレーションすることも、Docker コマンドを使用して直接操作することもできます。ただし、Dev Container プラグインを使用すると、コンテナ内のコードや環境などを直接操作できます。 以下は devcontainers.json 構成ファイルの内容です。 // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/python { // Use 'forwardPorts' to make a list of ports inside the container available locally. // "forwardPorts": [], // Use 'postCreateCommand' to run commands after the container is created. // "postCreateCommand": "pip3 install --user -r requirements.txt", // Configure tool-specific properties. // "customizations": {}, // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. // "remoteUser": "root" "dockerComposeFile": "../docker-compose.yaml", "service": "xiaoyu-chat", "workspaceFolder": "/app", "customizations": { "vscode": { "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "ms-toolsai.jupyter" ] } }, "forwardPorts": [3000,4444,7900,5900], "shutdownAction": "stopCompose" } ここで、Ctrl + Shift + P ショートカットを使用してコマンド パレットを開き、「コンテナーで再度開く」コマンドを選択して Dev コンテナーを起動すると、コンテナーのオーケストレーションが開始されます。コンテナが起動するまでしばらくお待ちください。 起動したコンテナでは、コンソールを追加してコンテナ内に直接アクセスし、環境を変更できます。これにより、コンテナ環境を簡単に調整および構成できます。 写真 下の画像には 2 つのコマンドが表示されています。最初のコマンドはコンテナに入るために使用され、2 番目のコマンドはコンテナから出るために使用されます。 写真 この時点で、Docker Desktop の実行状況を確認して、そのステータスとパフォーマンスを把握できます。今後は、Dev コンテナに入るかどうかに関係なく、データベース サービスを開始するのと同じくらい簡単に、コンテナを直接実行できるようになります。これにより、Docker コンテナをより便利に管理および使用できるようになります。 写真 要約する上記の手順を経て、私たちのプロジェクトは正常に開始されました。明日の記事では、コード例を順に説明し、プロセス全体の使用方法を説明します。これらのコード例を通じて、プロジェクトの具体的な実装の詳細を深く理解し、実際のプロジェクトでこれらのツールと環境を使用する方法を学びます。 |