---
title: "@langchain/openai Breaking Changes on npm | Since.dev"
description: "What each @langchain/openai release removed, renamed or changed: 41 breaking changes in 3 versions on npm, each with its source."
canonical_url: https://since.dev/packages/npm/@langchain/openai
last_updated: 2025-07-15
---

# @langchain/openai breaking changes

Every breaking API change we have recorded in @langchain/openai on npm: 41 breaking changes in 3 versions. Below are its newest 3 versions, removals and renames first, each with its source.

Newest change July 15, 2025

## 0.6.0

17 breaking changes, first published July 15, 2025.

- **Removed** `ChatOpenAICallOptions.reasoning_effort`  

Use reasoning instead. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Removed** `ChatOpenAICallOptions.stream_options.include_usage`  

ChatOpenAICallOptions.stream_options.include_usage was removed in @langchain/openai 0.6.0 [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Removed** `ChatOpenAIStructuredOutputMethodOptions`  

ChatOpenAIStructuredOutputMethodOptions was removed in @langchain/openai 0.6.0 [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Removed** `OpenAIChatInput.reasoningEffort`  

Use reasoning instead. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Signature changed** `_convertMessagesToOpenAIParams`  

Was function \_convertMessagesToOpenAIParams(messages: BaseMessage\[\], model?: string): OpenAICompletionParam\[\]; now function \_convertMessagesToOpenAIParams(messages: BaseMessage\[\], model?: string)... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Signature changed** `ChatOpenAI`  

Was class ChatOpenAI<CallOptions extends ChatOpenAICallOptions = ChatOpenAICallOptions> extends BaseChatModel<CallOptions, AIMessageChunk> implements Partial<OpenAIChatInput>; now class ChatOpenAI<CallOptions extends ChatOpenAICallOptions... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Signature changed** `ChatOpenAI.service_tier`  

Was service_tier?: ResponsesCreateParams\["service_tier"\]; now service_tier?: OpenAIClient.Chat.ChatCompletionCreateParams\["service_tier"\]. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Signature changed** `ChatOpenAI.withStructuredOutput`  

Was withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | Record<string, any>, config?: ChatOpenAIStructuredOutputMethodOptions<boolean>)... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Signature changed** `ChatOpenAICallOptions`  

Was interface ChatOpenAICallOptions extends OpenAICallOptions, BaseFunctionCallOptions; now type ChatOpenAICallOptions = ChatOpenAICompletionsCallOptions & ChatOpenAIResponsesCallOptions. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)
- **Signature changed** `ChatOpenAICallOptions.include`  

Was include?: ResponsesCreateParams\["include"\]; now include?: OpenAIClient.Responses.ResponseCreateParams\["include"\]. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.6.0)

And 7 more in this version.

## 0.5.0

1 breaking change, first published March 25, 2025.

- **Signature changed** `ChatOpenAI.n`  

Was n: number; now n?: number. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.5.0)

## 0.4.0

23 breaking changes, first published January 25, 2025.

- **Removed** `LegacyOpenAIInput`  

LegacyOpenAIInput was removed in @langchain/openai 0.4.0 [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Removed** `OpenAIChat`  

Use ChatOpenAI instead. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Removed** `OpenAIChatCallOptions`  

OpenAIChatCallOptions was removed in @langchain/openai 0.4.0 [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `AzureChatOpenAI.constructor`  

Was constructor(fields?: Partial<OpenAIChatInput> & Partial<AzureOpenAIInput> & {openAIApiKey?: string; openAIApiVersion?: string; openAIBasePath?: string; deploymentName?: string;} & BaseChatModelParams & {configuration?: ClientOptions &... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `AzureOpenAI.constructor`  

Was constructor(fields?: Partial<OpenAIInput> & {openAIApiKey?: string; openAIApiVersion?: string; openAIBasePath?: string; deploymentName?: string;} & Partial<AzureOpenAIInput> & BaseLLMParams & {configuration?: ClientOptions &... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `AzureOpenAIEmbeddings.constructor`  

Was constructor(fields?: Partial<OpenAIEmbeddingsParams> & Partial<AzureOpenAIInput> & {verbose?: boolean; apiKey?: string; configuration?: ClientOptions; deploymentName?: string; openAIApiVersion?: string;}, configuration?: ClientOptions... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `ChatOpenAI`  

Was class ChatOpenAI<CallOptions extends ChatOpenAICallOptions = ChatOpenAICallOptions> extends BaseChatModel<CallOptions, AIMessageChunk> implements OpenAIChatInput, AzureOpenAIInput; now class ChatOpenAI<CallOptions extends... [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `ChatOpenAI.constructor`  

Was constructor(fields?: ChatOpenAIFields, configuration?: ClientOptions & LegacyOpenAIInput); now constructor(fields?: ChatOpenAIFields). [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `ChatOpenAI.frequencyPenalty`  

Was frequencyPenalty: number; now frequencyPenalty?: number. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)
- **Signature changed** `ChatOpenAI.presencePenalty`  

Was presencePenalty: number; now presencePenalty?: number. [npmjs.com](https://www.npmjs.com/package/@langchain/openai/v/0.4.0)

And 13 more in this version.

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
