@langchain/anthropic 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -203,6 +203,7 @@ class ChatAnthropicMessages extends chat_models_1.BaseChatModel {
203
203
  ...this.formatMessagesForAnthropic(messages),
204
204
  stream: true,
205
205
  });
206
+ let usageData = { input_tokens: 0, output_tokens: 0 };
206
207
  for await (const data of stream) {
207
208
  if (options.signal?.aborted) {
208
209
  stream.controller.abort();
@@ -210,7 +211,7 @@ class ChatAnthropicMessages extends chat_models_1.BaseChatModel {
210
211
  }
211
212
  if (data.type === "message_start") {
212
213
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
213
- const { content, ...additionalKwargs } = data.message;
214
+ const { content, usage, ...additionalKwargs } = data.message;
214
215
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
215
216
  const filteredAdditionalKwargs = {};
216
217
  for (const [key, value] of Object.entries(additionalKwargs)) {
@@ -218,6 +219,7 @@ class ChatAnthropicMessages extends chat_models_1.BaseChatModel {
218
219
  filteredAdditionalKwargs[key] = value;
219
220
  }
220
221
  }
222
+ usageData = usage;
221
223
  yield new outputs_1.ChatGenerationChunk({
222
224
  message: new messages_1.AIMessageChunk({
223
225
  content: "",
@@ -234,6 +236,9 @@ class ChatAnthropicMessages extends chat_models_1.BaseChatModel {
234
236
  }),
235
237
  text: "",
236
238
  });
239
+ if (data?.usage !== undefined) {
240
+ usageData.output_tokens += data.usage.output_tokens;
241
+ }
237
242
  }
238
243
  else if (data.type === "content_block_delta") {
239
244
  const content = data.delta?.text;
@@ -249,6 +254,13 @@ class ChatAnthropicMessages extends chat_models_1.BaseChatModel {
249
254
  }
250
255
  }
251
256
  }
257
+ yield new outputs_1.ChatGenerationChunk({
258
+ message: new messages_1.AIMessageChunk({
259
+ content: "",
260
+ additional_kwargs: { usage: usageData },
261
+ }),
262
+ text: "",
263
+ });
252
264
  }
253
265
  /**
254
266
  * Formats messages as a prompt for the model.
@@ -200,6 +200,7 @@ export class ChatAnthropicMessages extends BaseChatModel {
200
200
  ...this.formatMessagesForAnthropic(messages),
201
201
  stream: true,
202
202
  });
203
+ let usageData = { input_tokens: 0, output_tokens: 0 };
203
204
  for await (const data of stream) {
204
205
  if (options.signal?.aborted) {
205
206
  stream.controller.abort();
@@ -207,7 +208,7 @@ export class ChatAnthropicMessages extends BaseChatModel {
207
208
  }
208
209
  if (data.type === "message_start") {
209
210
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
210
- const { content, ...additionalKwargs } = data.message;
211
+ const { content, usage, ...additionalKwargs } = data.message;
211
212
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
213
  const filteredAdditionalKwargs = {};
213
214
  for (const [key, value] of Object.entries(additionalKwargs)) {
@@ -215,6 +216,7 @@ export class ChatAnthropicMessages extends BaseChatModel {
215
216
  filteredAdditionalKwargs[key] = value;
216
217
  }
217
218
  }
219
+ usageData = usage;
218
220
  yield new ChatGenerationChunk({
219
221
  message: new AIMessageChunk({
220
222
  content: "",
@@ -231,6 +233,9 @@ export class ChatAnthropicMessages extends BaseChatModel {
231
233
  }),
232
234
  text: "",
233
235
  });
236
+ if (data?.usage !== undefined) {
237
+ usageData.output_tokens += data.usage.output_tokens;
238
+ }
234
239
  }
235
240
  else if (data.type === "content_block_delta") {
236
241
  const content = data.delta?.text;
@@ -246,6 +251,13 @@ export class ChatAnthropicMessages extends BaseChatModel {
246
251
  }
247
252
  }
248
253
  }
254
+ yield new ChatGenerationChunk({
255
+ message: new AIMessageChunk({
256
+ content: "",
257
+ additional_kwargs: { usage: usageData },
258
+ }),
259
+ text: "",
260
+ });
249
261
  }
250
262
  /**
251
263
  * Formats messages as a prompt for the model.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/anthropic",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Anthropic integrations for LangChain.js",
5
5
  "type": "module",
6
6
  "engines": {