[DRAFT] feat(prebuilt): add pre/post hooks for structured response in create_react_agent #11769
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Docs | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
defaults: | |
run: | |
working-directory: docs | |
jobs: | |
get-changed-files: | |
runs-on: ubuntu-latest | |
outputs: | |
changed-files: ${{ steps.changed-files.outputs.added_modified }} | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Get changed files | |
id: changed-files | |
uses: Ana06/get-changed-files@v2.3.0 | |
with: | |
filter: "docs/docs/**" | |
deploy: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 # Job will be cancelled if it runs for more than 10 minutes | |
env: | |
GITHUB_TOKEN: ${{ secrets.MKDOCS_GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v5 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: astral-sh/setup-uv@v7 | |
with: | |
python-version: "3.12" | |
enable-cache: true | |
cache-suffix: "docs" | |
- name: Install dependencies | |
run: | | |
yarn | |
uv sync --all-groups | |
# we run this installation only for internal PRs | |
# as GITHUB_TOKEN is not available for PRs from outside contributors | |
if [ -n "${GITHUB_TOKEN}" ]; then | |
uv run pip install "git+https://${GITHUB_TOKEN}@github.com/langchain-ai/mkdocs-material-insiders.git" | |
fi | |
- name: Run unit tests | |
# Run unit tests on the docs build pipeline | |
run: make tests | |
- name: Lint Docs | |
# This step lints the docs using the existing linting set up. | |
# It should be very fast and should not require any external services. | |
run: make lint-docs | |
- name: Build llms-text | |
run: make llms-text | |
- name: Build site | |
run: | | |
# If this is main branch, then we want to download stats. we do this | |
# with the env variable DOWNLOAD_STATS=true | |
if [ "${{ github.ref }}" == "refs/heads/main" ]; then | |
DOWNLOAD_STATS=true make build-docs | |
else | |
make build-docs | |
fi | |
env: | |
MKDOCS_GIT_COMMITTERS_APIKEY: ${{ secrets.MKDOCS_GIT_COMMITTERS_APIKEY }} | |
OPENAI_API_KEY: sf-proj-1234567890 # fake placeholder, shouldn't actually be used | |
ANTHROPIC_API_KEY: sk-ant-api03-1234567890 # fake placeholder, shouldn't actually be used | |
- name: Check links in notebooks | |
env: | |
LANGCHAIN_API_KEY: test | |
if: github.event_name == 'schedule' | |
run: | | |
if [ "${{ github.event_name }}" == "schedule" ]; then | |
echo "Running link check on all HTML files matching notebooks in docs directory..." | |
uv run pytest -v \ | |
--check-links-ignore "https://(api|web|docs)\.smith\.langchain\.com/.*" \ | |
--check-links-ignore "https://academy\.langchain\.com/.*" \ | |
--check-links-ignore "https://x.com/.*" \ | |
--check-links-ignore "https://twitter.com/.*" \ | |
--check-links-ignore "https://github\.com/.*" \ | |
--check-links-ignore "http://localhost:8123/.*" \ | |
--check-links-ignore "http://localhost:2024.*" \ | |
--check-links-ignore "http://127.0.0.1:.*" \ | |
--check-links-ignore "/.*\.(ipynb|html)$" \ | |
--check-links-ignore "https://python\.langchain\.com/.*" \ | |
--check-links-ignore "https://openai\.com/.*" \ | |
--check-links-ignore "https://www\.uber\.com/.*" \ | |
--check-links-ignore "https://pepy\.tech/.*" \ | |
--check-links-ignore "docs/docs/static/wordmark_*" \ | |
--check-links $(find site -name "index.html" | grep -v 'storm/index.html') | |
else | |
echo "Fetching changes from origin/main..." | |
git fetch origin main | |
echo "Checking for changed notebook files..." | |
CHANGED_FILES=$(git diff --name-only --diff-filter=d origin/main | grep 'docs/docs/.*\.ipynb$' | grep -v 'storm.ipynb' | sed -E 's|^docs/docs/|site/|; s/\.ipynb$/\/index.html/' || true) | |
echo "Changed files: ${CHANGED_FILES}" | |
if [ -n "${CHANGED_FILES}" ]; then | |
echo "Running link check on HTML files matching changed notebook files..." | |
uv run pytest -v \ | |
--check-links-ignore "https://(api|web|docs)\.smith\.langchain\.com/.*" \ | |
--check-links-ignore "https://academy\.langchain\.com/.*" \ | |
--check-links-ignore "http://localhost:8123/.*" \ | |
--check-links-ignore "http://localhost:2024.*" \ | |
--check-links-ignore "http://127.0.0.1:.*" \ | |
--check-links-ignore "https://x.com/.*" \ | |
--check-links-ignore "https://twitter.com/.*" \ | |
--check-links-ignore "https://github\.com/.*" \ | |
--check-links-ignore "/.*\.(ipynb|html)$" \ | |
--check-links-ignore "docs/docs/static/wordmark_*" \ | |
--check-links ${CHANGED_FILES} \ | |
|| ([ $? = 5 ] && exit 0 || exit $?) | |
else | |
echo "No notebook files changed." | |
fi | |
fi | |
- name: Configure GitHub Pages | |
if: github.ref == 'refs/heads/main' | |
uses: actions/configure-pages@v5 | |
- name: Upload Pages Artifact | |
# if: github.ref == 'refs/heads/main' | |
uses: actions/upload-pages-artifact@v4 | |
with: | |
path: ./docs/site/ | |
- name: Deploy to GitHub Pages | |
if: github.ref == 'refs/heads/main' | |
id: deployment | |
uses: actions/deploy-pages@v4 |