name: Run notebooks on: workflow_dispatch: inputs: python_version: description: 'Python version' required: false default: '3.11' working-directory: description: 'Working directory or subset (e.g., docs/docs/tutorials/llm_chain.ipynb or docs/docs/how_to)' required: false default: 'all' schedule: - cron: '0 13 * * *' env: POETRY_VERSION: "1.7.1" jobs: build: runs-on: ubuntu-latest if: github.repository == 'langchain-ai/langchain' || github.event_name != 'schedule' name: "Test docs" steps: - uses: actions/checkout@v4 - name: Set up Python + Poetry ${{ env.POETRY_VERSION }} uses: "./.github/actions/poetry_setup" with: python-version: ${{ github.event.inputs.python_version || '3.11' }} poetry-version: ${{ env.POETRY_VERSION }} working-directory: ${{ inputs.working-directory }} cache-key: run-notebooks - name: 'Authenticate to Google Cloud' id: 'auth' uses: google-github-actions/auth@v2 with: credentials_json: '${{ secrets.GOOGLE_CREDENTIALS }}' - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} - name: Install dependencies run: | poetry install --with dev,test - name: Pre-download files run: | poetry run python docs/scripts/cache_data.py curl -s https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql | sqlite3 docs/docs/how_to/Chinook.db cp docs/docs/how_to/Chinook.db docs/docs/tutorials/Chinook.db - name: Prepare notebooks run: | poetry run python docs/scripts/prepare_notebooks_for_ci.py --comment-install-cells --working-directory ${{ github.event.inputs.working-directory || 'all' }} - name: Run notebooks env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }} GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }} MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }} TOGETHER_API_KEY: ${{ secrets.TOGETHER_API_KEY }} WORKING_DIRECTORY: ${{ github.event.inputs.working-directory || 'all' }} run: | ./docs/scripts/execute_notebooks.sh $WORKING_DIRECTORY