@langchain/anthropic 0.3.6 → 0.3.8

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.
@@ -21,13 +21,13 @@ function _formatImage(imageUrl) {
21
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
22
  };
23
23
  }
24
- function _mergeMessages(messages) {
24
+ function _ensureMessageContents(messages) {
25
25
  // Merge runs of human/tool messages into single human messages with content blocks.
26
- const merged = [];
26
+ const updatedMsgs = [];
27
27
  for (const message of messages) {
28
28
  if (message._getType() === "tool") {
29
29
  if (typeof message.content === "string") {
30
- const previousMessage = merged[merged.length - 1];
30
+ const previousMessage = updatedMsgs[updatedMsgs.length - 1];
31
31
  if (previousMessage?._getType() === "human" &&
32
32
  Array.isArray(previousMessage.content) &&
33
33
  "type" in previousMessage.content[0] &&
@@ -41,7 +41,7 @@ function _mergeMessages(messages) {
41
41
  }
42
42
  else {
43
43
  // If not, we create a new human message with the tool result.
44
- merged.push(new messages_1.HumanMessage({
44
+ updatedMsgs.push(new messages_1.HumanMessage({
45
45
  content: [
46
46
  {
47
47
  type: "tool_result",
@@ -53,35 +53,22 @@ function _mergeMessages(messages) {
53
53
  }
54
54
  }
55
55
  else {
56
- merged.push(new messages_1.HumanMessage({ content: message.content }));
56
+ updatedMsgs.push(new messages_1.HumanMessage({
57
+ content: [
58
+ {
59
+ type: "tool_result",
60
+ content: _formatContent(message.content),
61
+ tool_use_id: message.tool_call_id,
62
+ },
63
+ ],
64
+ }));
57
65
  }
58
66
  }
59
67
  else {
60
- const previousMessage = merged[merged.length - 1];
61
- if (previousMessage?._getType() === "human" &&
62
- message._getType() === "human") {
63
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
- let combinedContent;
65
- if (typeof previousMessage.content === "string") {
66
- combinedContent = [{ type: "text", text: previousMessage.content }];
67
- }
68
- else {
69
- combinedContent = previousMessage.content;
70
- }
71
- if (typeof message.content === "string") {
72
- combinedContent.push({ type: "text", text: message.content });
73
- }
74
- else {
75
- combinedContent = combinedContent.concat(message.content);
76
- }
77
- previousMessage.content = combinedContent;
78
- }
79
- else {
80
- merged.push(message);
81
- }
68
+ updatedMsgs.push(message);
82
69
  }
83
70
  }
84
- return merged;
71
+ return updatedMsgs;
85
72
  }
86
73
  function _convertLangChainToolCallToAnthropic(toolCall) {
87
74
  if (toolCall.id === undefined) {
@@ -168,7 +155,7 @@ function _formatContent(content) {
168
155
  * @returns The formatted prompt.
169
156
  */
170
157
  function _convertMessagesToAnthropicPayload(messages) {
171
- const mergedMessages = _mergeMessages(messages);
158
+ const mergedMessages = _ensureMessageContents(messages);
172
159
  let system;
173
160
  if (mergedMessages.length > 0 && mergedMessages[0]._getType() === "system") {
174
161
  system = messages[0].content;
@@ -18,13 +18,13 @@ function _formatImage(imageUrl) {
18
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
19
  };
20
20
  }
21
- function _mergeMessages(messages) {
21
+ function _ensureMessageContents(messages) {
22
22
  // Merge runs of human/tool messages into single human messages with content blocks.
23
- const merged = [];
23
+ const updatedMsgs = [];
24
24
  for (const message of messages) {
25
25
  if (message._getType() === "tool") {
26
26
  if (typeof message.content === "string") {
27
- const previousMessage = merged[merged.length - 1];
27
+ const previousMessage = updatedMsgs[updatedMsgs.length - 1];
28
28
  if (previousMessage?._getType() === "human" &&
29
29
  Array.isArray(previousMessage.content) &&
30
30
  "type" in previousMessage.content[0] &&
@@ -38,7 +38,7 @@ function _mergeMessages(messages) {
38
38
  }
39
39
  else {
40
40
  // If not, we create a new human message with the tool result.
41
- merged.push(new HumanMessage({
41
+ updatedMsgs.push(new HumanMessage({
42
42
  content: [
43
43
  {
44
44
  type: "tool_result",
@@ -50,35 +50,22 @@ function _mergeMessages(messages) {
50
50
  }
51
51
  }
52
52
  else {
53
- merged.push(new HumanMessage({ content: message.content }));
53
+ updatedMsgs.push(new HumanMessage({
54
+ content: [
55
+ {
56
+ type: "tool_result",
57
+ content: _formatContent(message.content),
58
+ tool_use_id: message.tool_call_id,
59
+ },
60
+ ],
61
+ }));
54
62
  }
55
63
  }
56
64
  else {
57
- const previousMessage = merged[merged.length - 1];
58
- if (previousMessage?._getType() === "human" &&
59
- message._getType() === "human") {
60
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- let combinedContent;
62
- if (typeof previousMessage.content === "string") {
63
- combinedContent = [{ type: "text", text: previousMessage.content }];
64
- }
65
- else {
66
- combinedContent = previousMessage.content;
67
- }
68
- if (typeof message.content === "string") {
69
- combinedContent.push({ type: "text", text: message.content });
70
- }
71
- else {
72
- combinedContent = combinedContent.concat(message.content);
73
- }
74
- previousMessage.content = combinedContent;
75
- }
76
- else {
77
- merged.push(message);
78
- }
65
+ updatedMsgs.push(message);
79
66
  }
80
67
  }
81
- return merged;
68
+ return updatedMsgs;
82
69
  }
83
70
  export function _convertLangChainToolCallToAnthropic(toolCall) {
84
71
  if (toolCall.id === undefined) {
@@ -164,7 +151,7 @@ function _formatContent(content) {
164
151
  * @returns The formatted prompt.
165
152
  */
166
153
  export function _convertMessagesToAnthropicPayload(messages) {
167
- const mergedMessages = _mergeMessages(messages);
154
+ const mergedMessages = _ensureMessageContents(messages);
168
155
  let system;
169
156
  if (mergedMessages.length > 0 && mergedMessages[0]._getType() === "system") {
170
157
  system = messages[0].content;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/anthropic",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "Anthropic integrations for LangChain.js",
5
5
  "type": "module",
6
6
  "engines": {