Skip to content

feat(langchain): add NEAR AI provider to initChatModel #16875

feat(langchain): add NEAR AI provider to initChatModel

feat(langchain): add NEAR AI provider to initChatModel #16875

Workflow file for this run

name: Dependency compatibility tests
on:
push:
branches: ["main"]
pull_request:
# Only run this workflow if the following directories have changed.
paths:
- "libs/**"
workflow_dispatch: # Allows triggering the workflow manually in GitHub UI
permissions:
contents: read
# If another push to the same PR or branch happens while this workflow is still running,
# cancel the earlier run in favor of the next run.
#
# There's no point in testing an outdated version of the code. GitHub only allows
# a limited number of job runners to be active at the same time, so it's better to cancel
# pointless jobs early so that more useful jobs can run sooner.
concurrency:
group: exports-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
PUPPETEER_SKIP_DOWNLOAD: "true"
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "true"
NODE_VERSION: "22.x"
# Run a separate job for each check in the docker-compose file,
# so that they run in parallel instead of overwhelming the default 2 CPU runner.
jobs:
get-changed-files:
runs-on: ubuntu-latest
outputs:
changed_files: ${{ steps.get_changes.outputs.changed_files }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 2
- name: Get changes
id: get_changes
run: |
echo "changed_files<<EOF" >> $GITHUB_OUTPUT
git diff --name-only -r HEAD^1 HEAD | while read line; do printf "%s\n" "$line"; done >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# LangChain
langchain-latest-deps:
runs-on: ubuntu-latest
needs: get-changed-files
if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/langchain/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-core/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-openai/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-textsplitters/'))
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup pnpm
uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build required workspace packages
run: pnpm build --filter=@langchain/openai --filter=@langchain/anthropic --filter=@langchain/textsplitters
- name: Test LangChain with latest deps
run: docker compose -f dependency_range_tests/docker-compose.yml run langchain-latest-deps
langchain-lowest-deps:
runs-on: ubuntu-latest
needs: get-changed-files
if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/langchain/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain/'))
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup pnpm
uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build required workspace packages
run: pnpm build --filter=@langchain/openai --filter=@langchain/anthropic --filter=@langchain/textsplitters
- name: Test LangChain with lowest deps
run: docker compose -f dependency_range_tests/docker-compose.yml run langchain-lowest-deps
# OpenAI
# openai-latest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/openai/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-core/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-openai/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/openai` with latest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run openai-latest-deps
# openai-lowest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/openai/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-openai/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/openai` with lowest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run openai-lowest-deps
# Anthropic
# anthropic-latest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/anthropic/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-core/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-anthropic/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/anthropic` with latest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run anthropic-latest-deps
# anthropic-lowest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/anthropic/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-anthropic/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/anthropic` with lowest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run anthropic-lowest-deps
# Google VertexAI
# google-vertexai-latest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/google-vertexai/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-core/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-google-vertexai/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-google-gauth/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-google-common/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/google-vertexai` with latest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run google-vertexai-latest-deps
# google-vertexai-lowest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/google-vertexai/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-google-vertexai/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/google-vertexai` with lowest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run google-vertexai-lowest-deps
# Cohere
# cohere-latest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/cohere/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/langchain-core/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-cohere/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/cohere` with latest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run cohere-latest-deps
# cohere-lowest-deps:
# runs-on: ubuntu-latest
# needs: get-changed-files
# if: (contains(needs.get-changed-files.outputs.changed_files, 'dependency_range_tests/scripts/with_standard_tests/cohere/') || contains(needs.get-changed-files.outputs.changed_files, 'libs/providers/langchain-cohere/'))
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# - name: Setup pnpm
# uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
# - name: Use Node.js ${{ env.NODE_VERSION }}
# uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Build `@langchain/standard-tests`
# run: pnpm build --filter=@langchain/standard-tests
# - name: Test `@langchain/cohere` with lowest deps
# run: docker compose -f dependency_range_tests/docker-compose.yml run cohere-lowest-deps