Skip to content

Conversation

@christian-bromann
Copy link
Member

Ports the LLMToolEmulator middleware from Python to TypeScript, enabling tool emulation for testing purposes. The middleware allows selective emulation of tool calls using an LLM instead of executing actual tool implementations.

Features

  • Emulate all tools (default) or specific tools by name/instance
  • Configurable model for emulation (defaults to anthropic:claude-sonnet-4-5-20250929)
  • Type-safe TypeScript implementation following existing middleware patterns

Usage

import { toolEmulatorMiddleware } from "@langchain/langchain/agents/middleware";

// Emulate all tools
const middleware = toolEmulatorMiddleware();

// Emulate specific tools
const middleware = toolEmulatorMiddleware({
  tools: ["get_weather", "get_user_location"],
  model: "anthropic:claude-sonnet-4-5-20250929"
});

const agent = createAgent({
  model: "openai:gpt-4o",
  tools: [getWeather, getUserLocation],
  middleware: [middleware],
});

Changes

  • Added toolEmulatorMiddleware implementation (libs/langchain/src/agents/middleware/toolEmulator.ts)
  • Added comprehensive test suite with provider mocks
  • Exported middleware from middleware/index.ts

Testing

Full test coverage including initialization, tool filtering, model configuration, and integration with createAgent.

@changeset-bot
Copy link

changeset-bot bot commented Nov 6, 2025

⚠️ No Changeset found

Latest commit: a4d9e46

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants