langchain 0.0.74 → 0.0.76

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.
Files changed (163) hide show
  1. package/client.cjs +1 -0
  2. package/client.d.ts +1 -0
  3. package/client.js +1 -0
  4. package/dist/base_language/count_tokens.cjs +5 -21
  5. package/dist/base_language/count_tokens.d.ts +1 -6
  6. package/dist/base_language/count_tokens.js +4 -19
  7. package/dist/base_language/index.cjs +16 -24
  8. package/dist/base_language/index.d.ts +22 -3
  9. package/dist/base_language/index.js +17 -25
  10. package/dist/cache/redis.d.ts +3 -1
  11. package/dist/callbacks/base.d.ts +17 -3
  12. package/dist/callbacks/handlers/console.cjs +15 -28
  13. package/dist/callbacks/handlers/console.d.ts +11 -20
  14. package/dist/callbacks/handlers/console.js +14 -27
  15. package/dist/callbacks/handlers/initialize.cjs +8 -3
  16. package/dist/callbacks/handlers/initialize.d.ts +4 -2
  17. package/dist/callbacks/handlers/initialize.js +6 -2
  18. package/dist/callbacks/handlers/tracer.cjs +193 -0
  19. package/dist/callbacks/handlers/tracer.d.ts +65 -0
  20. package/dist/callbacks/handlers/tracer.js +189 -0
  21. package/dist/callbacks/handlers/tracer_langchain.cjs +163 -0
  22. package/dist/callbacks/handlers/tracer_langchain.d.ts +39 -0
  23. package/dist/callbacks/handlers/tracer_langchain.js +159 -0
  24. package/dist/callbacks/handlers/tracer_langchain_v1.cjs +202 -0
  25. package/dist/callbacks/handlers/tracer_langchain_v1.d.ts +57 -0
  26. package/dist/callbacks/handlers/tracer_langchain_v1.js +198 -0
  27. package/dist/callbacks/index.cjs +10 -5
  28. package/dist/callbacks/index.d.ts +5 -3
  29. package/dist/callbacks/index.js +5 -3
  30. package/dist/callbacks/manager.cjs +39 -9
  31. package/dist/callbacks/manager.d.ts +5 -2
  32. package/dist/callbacks/manager.js +40 -10
  33. package/dist/chains/llm_chain.cjs +17 -5
  34. package/dist/chains/llm_chain.d.ts +9 -3
  35. package/dist/chains/llm_chain.js +17 -5
  36. package/dist/chains/question_answering/map_reduce_prompts.cjs +5 -5
  37. package/dist/chains/question_answering/map_reduce_prompts.d.ts +1 -1
  38. package/dist/chains/question_answering/map_reduce_prompts.js +1 -1
  39. package/dist/chains/question_answering/refine_prompts.cjs +5 -5
  40. package/dist/chains/question_answering/refine_prompts.d.ts +1 -1
  41. package/dist/chains/question_answering/refine_prompts.js +1 -1
  42. package/dist/chains/question_answering/stuff_prompts.cjs +2 -2
  43. package/dist/chains/question_answering/stuff_prompts.d.ts +1 -1
  44. package/dist/chains/question_answering/stuff_prompts.js +1 -1
  45. package/dist/chains/sequential_chain.cjs +2 -2
  46. package/dist/chains/sequential_chain.d.ts +2 -2
  47. package/dist/chains/sequential_chain.js +2 -2
  48. package/dist/chains/sql_db/sql_db_prompt.cjs +20 -1
  49. package/dist/chains/sql_db/sql_db_prompt.d.ts +1 -0
  50. package/dist/chains/sql_db/sql_db_prompt.js +19 -0
  51. package/dist/chains/summarization/load.cjs +14 -5
  52. package/dist/chains/summarization/load.d.ts +7 -2
  53. package/dist/chains/summarization/load.js +14 -5
  54. package/dist/chat_models/anthropic.cjs +36 -9
  55. package/dist/chat_models/anthropic.d.ts +6 -3
  56. package/dist/chat_models/anthropic.js +36 -9
  57. package/dist/chat_models/base.cjs +40 -13
  58. package/dist/chat_models/base.d.ts +14 -7
  59. package/dist/chat_models/base.js +41 -14
  60. package/dist/chat_models/openai.cjs +20 -14
  61. package/dist/chat_models/openai.d.ts +2 -1
  62. package/dist/chat_models/openai.js +20 -14
  63. package/dist/client/index.cjs +5 -0
  64. package/dist/client/index.d.ts +1 -0
  65. package/dist/client/index.js +1 -0
  66. package/dist/client/langchainplus.cjs +405 -0
  67. package/dist/client/langchainplus.d.ts +65 -0
  68. package/dist/client/langchainplus.js +398 -0
  69. package/dist/document_loaders/fs/unstructured.cjs +8 -0
  70. package/dist/document_loaders/fs/unstructured.d.ts +3 -0
  71. package/dist/document_loaders/fs/unstructured.js +8 -0
  72. package/dist/document_loaders/web/apify_dataset.cjs +64 -0
  73. package/dist/document_loaders/web/apify_dataset.d.ts +28 -0
  74. package/dist/document_loaders/web/apify_dataset.js +60 -0
  75. package/dist/embeddings/openai.cjs +2 -2
  76. package/dist/embeddings/openai.js +2 -2
  77. package/dist/llms/base.cjs +43 -17
  78. package/dist/llms/base.d.ts +16 -9
  79. package/dist/llms/base.js +44 -18
  80. package/dist/llms/cohere.cjs +3 -2
  81. package/dist/llms/cohere.d.ts +1 -1
  82. package/dist/llms/cohere.js +3 -2
  83. package/dist/llms/hf.cjs +2 -2
  84. package/dist/llms/hf.d.ts +1 -1
  85. package/dist/llms/hf.js +2 -2
  86. package/dist/llms/openai-chat.cjs +13 -14
  87. package/dist/llms/openai-chat.d.ts +2 -1
  88. package/dist/llms/openai-chat.js +13 -14
  89. package/dist/llms/openai.cjs +15 -13
  90. package/dist/llms/openai.d.ts +4 -3
  91. package/dist/llms/openai.js +15 -13
  92. package/dist/llms/replicate.cjs +2 -2
  93. package/dist/llms/replicate.d.ts +1 -1
  94. package/dist/llms/replicate.js +2 -2
  95. package/dist/memory/base.cjs +9 -1
  96. package/dist/memory/base.d.ts +1 -0
  97. package/dist/memory/base.js +7 -0
  98. package/dist/memory/entity_memory.cjs +151 -0
  99. package/dist/memory/entity_memory.d.ts +35 -0
  100. package/dist/memory/entity_memory.js +147 -0
  101. package/dist/memory/index.cjs +5 -1
  102. package/dist/memory/index.d.ts +2 -0
  103. package/dist/memory/index.js +2 -0
  104. package/dist/memory/prompt.cjs +84 -1
  105. package/dist/memory/prompt.d.ts +6 -0
  106. package/dist/memory/prompt.js +83 -0
  107. package/dist/memory/stores/entity/in_memory.cjs +32 -0
  108. package/dist/memory/stores/entity/in_memory.d.ts +10 -0
  109. package/dist/memory/stores/entity/in_memory.js +28 -0
  110. package/dist/prompts/index.cjs +6 -1
  111. package/dist/prompts/index.d.ts +1 -0
  112. package/dist/prompts/index.js +1 -0
  113. package/dist/{chains/prompt_selector.d.ts → prompts/selectors/conditional.d.ts} +4 -4
  114. package/dist/retrievers/document_compressors/chain_extract.cjs +9 -11
  115. package/dist/retrievers/document_compressors/chain_extract.js +9 -11
  116. package/dist/schema/index.cjs +13 -1
  117. package/dist/schema/index.d.ts +19 -0
  118. package/dist/schema/index.js +11 -0
  119. package/dist/stores/message/dynamodb.cjs +8 -6
  120. package/dist/stores/message/dynamodb.js +8 -6
  121. package/dist/stores/message/redis.cjs +69 -0
  122. package/dist/stores/message/redis.d.ts +18 -0
  123. package/dist/stores/message/redis.js +65 -0
  124. package/dist/stores/message/utils.cjs +30 -15
  125. package/dist/stores/message/utils.d.ts +4 -2
  126. package/dist/stores/message/utils.js +28 -14
  127. package/dist/text_splitter.cjs +3 -23
  128. package/dist/text_splitter.d.ts +1 -3
  129. package/dist/text_splitter.js +3 -23
  130. package/dist/tools/webbrowser.cjs +5 -7
  131. package/dist/tools/webbrowser.js +3 -5
  132. package/dist/types/openai-types.d.ts +3 -2
  133. package/dist/util/async_caller.cjs +16 -0
  134. package/dist/util/async_caller.d.ts +4 -0
  135. package/dist/util/async_caller.js +16 -0
  136. package/dist/util/axios-fetch-adapter.cjs +6 -0
  137. package/dist/util/axios-fetch-adapter.js +6 -0
  138. package/dist/util/env.cjs +39 -7
  139. package/dist/util/env.d.ts +19 -0
  140. package/dist/util/env.js +32 -6
  141. package/dist/util/sql_utils.cjs +18 -0
  142. package/dist/util/sql_utils.js +19 -1
  143. package/dist/util/tiktoken.cjs +26 -0
  144. package/dist/util/tiktoken.d.ts +9 -0
  145. package/dist/util/tiktoken.js +21 -0
  146. package/dist/vectorstores/redis.cjs +236 -0
  147. package/dist/vectorstores/redis.d.ts +80 -0
  148. package/dist/vectorstores/redis.js +232 -0
  149. package/document_loaders/web/apify_dataset.cjs +1 -0
  150. package/document_loaders/web/apify_dataset.d.ts +1 -0
  151. package/document_loaders/web/apify_dataset.js +1 -0
  152. package/package.json +41 -5
  153. package/stores/message/redis.cjs +1 -0
  154. package/stores/message/redis.d.ts +1 -0
  155. package/stores/message/redis.js +1 -0
  156. package/vectorstores/redis.cjs +1 -0
  157. package/vectorstores/redis.d.ts +1 -0
  158. package/vectorstores/redis.js +1 -0
  159. package/dist/callbacks/handlers/tracers.cjs +0 -341
  160. package/dist/callbacks/handlers/tracers.d.ts +0 -100
  161. package/dist/callbacks/handlers/tracers.js +0 -336
  162. /package/dist/{chains/prompt_selector.cjs → prompts/selectors/conditional.cjs} +0 -0
  163. /package/dist/{chains/prompt_selector.js → prompts/selectors/conditional.js} +0 -0
@@ -0,0 +1,159 @@
1
+ import { getRuntimeEnvironment } from "../../util/env.js";
2
+ import { BaseTracer } from "./tracer.js";
3
+ export class LangChainTracer extends BaseTracer {
4
+ constructor({ exampleId, tenantId, sessionName, sessionExtra, } = {}) {
5
+ super();
6
+ Object.defineProperty(this, "name", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: "langchain_tracer"
11
+ });
12
+ Object.defineProperty(this, "endpoint", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: (typeof process !== "undefined"
17
+ ? // eslint-disable-next-line no-process-env
18
+ process.env?.LANGCHAIN_ENDPOINT
19
+ : undefined) || "http://localhost:8000"
20
+ });
21
+ Object.defineProperty(this, "headers", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: {
26
+ "Content-Type": "application/json",
27
+ }
28
+ });
29
+ Object.defineProperty(this, "sessionName", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
35
+ Object.defineProperty(this, "sessionExtra", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: void 0
40
+ });
41
+ Object.defineProperty(this, "session", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: void 0
46
+ });
47
+ Object.defineProperty(this, "exampleId", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: void 0
52
+ });
53
+ Object.defineProperty(this, "tenantId", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: void 0
58
+ });
59
+ // eslint-disable-next-line no-process-env
60
+ if (typeof process !== "undefined" && process.env?.LANGCHAIN_API_KEY) {
61
+ // eslint-disable-next-line no-process-env
62
+ this.headers["x-api-key"] = process.env?.LANGCHAIN_API_KEY;
63
+ }
64
+ this.tenantId =
65
+ tenantId ??
66
+ (typeof process !== "undefined"
67
+ ? // eslint-disable-next-line no-process-env
68
+ process.env?.LANGCHAIN_TENANT_ID
69
+ : undefined);
70
+ this.sessionName =
71
+ sessionName ??
72
+ (typeof process !== "undefined"
73
+ ? // eslint-disable-next-line no-process-env
74
+ process.env?.LANGCHAIN_SESSION
75
+ : undefined) ??
76
+ "default";
77
+ this.sessionExtra = sessionExtra;
78
+ this.exampleId = exampleId;
79
+ }
80
+ async ensureSession() {
81
+ if (this.session) {
82
+ return this.session;
83
+ }
84
+ const tenantId = await this.ensureTenantId();
85
+ const endpoint = `${this.endpoint}/sessions?upsert=true`;
86
+ const res = await fetch(endpoint, {
87
+ method: "POST",
88
+ headers: this.headers,
89
+ body: JSON.stringify({
90
+ name: this.sessionName,
91
+ tenant_id: tenantId,
92
+ extra: this.sessionExtra,
93
+ }),
94
+ });
95
+ if (!res.ok) {
96
+ const body = await res.text();
97
+ throw new Error(`Failed to create session: ${res.status} ${res.statusText} ${body}`);
98
+ }
99
+ const session = await res.json();
100
+ this.session = session;
101
+ return session;
102
+ }
103
+ async ensureTenantId() {
104
+ if (this.tenantId) {
105
+ return this.tenantId;
106
+ }
107
+ const endpoint = `${this.endpoint}/tenants`;
108
+ const response = await fetch(endpoint, {
109
+ method: "GET",
110
+ headers: this.headers,
111
+ });
112
+ if (!response.ok) {
113
+ const body = await response.text();
114
+ throw new Error(`Failed to fetch tenant ID: ${response.status} ${response.statusText} ${body}`);
115
+ }
116
+ const tenants = await response.json();
117
+ if (!tenants || tenants.length === 0) {
118
+ throw new Error(`No tenants found for endpoint ${endpoint}`);
119
+ }
120
+ const tenantId = tenants[0].id;
121
+ this.tenantId = tenantId;
122
+ return tenantId;
123
+ }
124
+ async _convertToCreate(run, example_id = undefined) {
125
+ const session = await this.ensureSession();
126
+ const runExtra = run.extra ?? {};
127
+ runExtra.runtime = await getRuntimeEnvironment();
128
+ const persistedRun = {
129
+ id: run.id,
130
+ name: run.name,
131
+ start_time: run.start_time,
132
+ end_time: run.end_time,
133
+ run_type: run.run_type,
134
+ reference_example_id: example_id,
135
+ extra: runExtra,
136
+ execution_order: run.execution_order,
137
+ serialized: run.serialized,
138
+ error: run.error,
139
+ inputs: run.inputs,
140
+ outputs: run.outputs ?? {},
141
+ session_id: session.id,
142
+ child_runs: await Promise.all(run.child_runs.map((child_run) => this._convertToCreate(child_run))),
143
+ };
144
+ return persistedRun;
145
+ }
146
+ async persistRun(run) {
147
+ const persistedRun = await this._convertToCreate(run, this.exampleId);
148
+ const endpoint = `${this.endpoint}/runs`;
149
+ const response = await fetch(endpoint, {
150
+ method: "POST",
151
+ headers: this.headers,
152
+ body: JSON.stringify(persistedRun),
153
+ });
154
+ if (!response.ok) {
155
+ const body = await response.text();
156
+ throw new Error(`Failed to persist run: ${response.status} ${response.statusText} ${body}`);
157
+ }
158
+ }
159
+ }
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LangChainTracerV1 = void 0;
4
+ const base_js_1 = require("../../memory/base.cjs");
5
+ const tracer_js_1 = require("./tracer.cjs");
6
+ class LangChainTracerV1 extends tracer_js_1.BaseTracer {
7
+ constructor() {
8
+ super();
9
+ Object.defineProperty(this, "name", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: "langchain_tracer"
14
+ });
15
+ Object.defineProperty(this, "endpoint", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: (typeof process !== "undefined"
20
+ ? // eslint-disable-next-line no-process-env
21
+ process.env?.LANGCHAIN_ENDPOINT
22
+ : undefined) || "http://localhost:8000"
23
+ });
24
+ Object.defineProperty(this, "headers", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: {
29
+ "Content-Type": "application/json",
30
+ }
31
+ });
32
+ Object.defineProperty(this, "session", {
33
+ enumerable: true,
34
+ configurable: true,
35
+ writable: true,
36
+ value: void 0
37
+ });
38
+ // eslint-disable-next-line no-process-env
39
+ if (typeof process !== "undefined" && process.env?.LANGCHAIN_API_KEY) {
40
+ // eslint-disable-next-line no-process-env
41
+ this.headers["x-api-key"] = process.env?.LANGCHAIN_API_KEY;
42
+ }
43
+ }
44
+ async newSession(sessionName) {
45
+ const sessionCreate = {
46
+ start_time: Date.now(),
47
+ name: sessionName,
48
+ };
49
+ const session = await this.persistSession(sessionCreate);
50
+ this.session = session;
51
+ return session;
52
+ }
53
+ async loadSession(sessionName) {
54
+ const endpoint = `${this.endpoint}/sessions?name=${sessionName}`;
55
+ return this._handleSessionResponse(endpoint);
56
+ }
57
+ async loadDefaultSession() {
58
+ const endpoint = `${this.endpoint}/sessions?name=default`;
59
+ return this._handleSessionResponse(endpoint);
60
+ }
61
+ async convertV2RunToRun(run) {
62
+ const session = this.session ?? (await this.loadDefaultSession());
63
+ const serialized = run.serialized;
64
+ let runResult;
65
+ if (run.run_type === "llm") {
66
+ const prompts = run.inputs.prompts
67
+ ? run.inputs.prompts
68
+ : run.inputs.messages.map((x) => (0, base_js_1.getBufferString)(x));
69
+ const llmRun = {
70
+ uuid: run.id,
71
+ start_time: run.start_time,
72
+ end_time: run.end_time,
73
+ execution_order: run.execution_order,
74
+ child_execution_order: run.child_execution_order,
75
+ serialized,
76
+ type: run.run_type,
77
+ session_id: session.id,
78
+ prompts,
79
+ response: run.outputs,
80
+ };
81
+ runResult = llmRun;
82
+ }
83
+ else if (run.run_type === "chain") {
84
+ const child_runs = await Promise.all(run.child_runs.map((child_run) => this.convertV2RunToRun(child_run)));
85
+ const chainRun = {
86
+ uuid: run.id,
87
+ start_time: run.start_time,
88
+ end_time: run.end_time,
89
+ execution_order: run.execution_order,
90
+ child_execution_order: run.child_execution_order,
91
+ serialized,
92
+ type: run.run_type,
93
+ session_id: session.id,
94
+ inputs: run.inputs,
95
+ outputs: run.outputs,
96
+ child_llm_runs: child_runs.filter((child_run) => child_run.type === "llm"),
97
+ child_chain_runs: child_runs.filter((child_run) => child_run.type === "chain"),
98
+ child_tool_runs: child_runs.filter((child_run) => child_run.type === "tool"),
99
+ };
100
+ runResult = chainRun;
101
+ }
102
+ else if (run.run_type === "tool") {
103
+ const child_runs = await Promise.all(run.child_runs.map((child_run) => this.convertV2RunToRun(child_run)));
104
+ const toolRun = {
105
+ uuid: run.id,
106
+ start_time: run.start_time,
107
+ end_time: run.end_time,
108
+ execution_order: run.execution_order,
109
+ child_execution_order: run.child_execution_order,
110
+ serialized,
111
+ type: run.run_type,
112
+ session_id: session.id,
113
+ tool_input: run.inputs.input,
114
+ output: run.outputs?.output,
115
+ action: JSON.stringify(serialized),
116
+ child_llm_runs: child_runs.filter((child_run) => child_run.type === "llm"),
117
+ child_chain_runs: child_runs.filter((child_run) => child_run.type === "chain"),
118
+ child_tool_runs: child_runs.filter((child_run) => child_run.type === "tool"),
119
+ };
120
+ runResult = toolRun;
121
+ }
122
+ else {
123
+ throw new Error(`Unknown run type: ${run.run_type}`);
124
+ }
125
+ return runResult;
126
+ }
127
+ async persistRun(run) {
128
+ let endpoint;
129
+ let v1Run;
130
+ if (run.run_type !== undefined) {
131
+ v1Run = await this.convertV2RunToRun(run);
132
+ }
133
+ else {
134
+ v1Run = run;
135
+ }
136
+ if (v1Run.type === "llm") {
137
+ endpoint = `${this.endpoint}/llm-runs`;
138
+ }
139
+ else if (v1Run.type === "chain") {
140
+ endpoint = `${this.endpoint}/chain-runs`;
141
+ }
142
+ else {
143
+ endpoint = `${this.endpoint}/tool-runs`;
144
+ }
145
+ const response = await fetch(endpoint, {
146
+ method: "POST",
147
+ headers: this.headers,
148
+ body: JSON.stringify(v1Run),
149
+ });
150
+ if (!response.ok) {
151
+ console.error(`Failed to persist run: ${response.status} ${response.statusText}`);
152
+ }
153
+ }
154
+ async persistSession(sessionCreate) {
155
+ const endpoint = `${this.endpoint}/sessions`;
156
+ const response = await fetch(endpoint, {
157
+ method: "POST",
158
+ headers: this.headers,
159
+ body: JSON.stringify(sessionCreate),
160
+ });
161
+ if (!response.ok) {
162
+ console.error(`Failed to persist session: ${response.status} ${response.statusText}, using default session.`);
163
+ return {
164
+ id: 1,
165
+ ...sessionCreate,
166
+ };
167
+ }
168
+ return {
169
+ id: (await response.json()).id,
170
+ ...sessionCreate,
171
+ };
172
+ }
173
+ async _handleSessionResponse(endpoint) {
174
+ const response = await fetch(endpoint, {
175
+ method: "GET",
176
+ headers: this.headers,
177
+ });
178
+ let tracerSession;
179
+ if (!response.ok) {
180
+ console.error(`Failed to load session: ${response.status} ${response.statusText}`);
181
+ tracerSession = {
182
+ id: 1,
183
+ start_time: Date.now(),
184
+ };
185
+ this.session = tracerSession;
186
+ return tracerSession;
187
+ }
188
+ const resp = (await response.json());
189
+ if (resp.length === 0) {
190
+ tracerSession = {
191
+ id: 1,
192
+ start_time: Date.now(),
193
+ };
194
+ this.session = tracerSession;
195
+ return tracerSession;
196
+ }
197
+ [tracerSession] = resp;
198
+ this.session = tracerSession;
199
+ return tracerSession;
200
+ }
201
+ }
202
+ exports.LangChainTracerV1 = LangChainTracerV1;
@@ -0,0 +1,57 @@
1
+ import { ChainValues, LLMResult } from "../../schema/index.js";
2
+ import { BaseTracer, RunType, Run } from "./tracer.js";
3
+ export interface BaseRunV1 {
4
+ uuid: string;
5
+ parent_uuid?: string;
6
+ start_time: number;
7
+ end_time: number;
8
+ execution_order: number;
9
+ child_execution_order: number;
10
+ serialized: {
11
+ name: string;
12
+ };
13
+ session_id: number;
14
+ error?: string;
15
+ type: RunType;
16
+ }
17
+ export interface LLMRun extends BaseRunV1 {
18
+ prompts: string[];
19
+ response?: LLMResult;
20
+ }
21
+ export interface ChainRun extends BaseRunV1 {
22
+ inputs: ChainValues;
23
+ outputs?: ChainValues;
24
+ child_llm_runs: LLMRun[];
25
+ child_chain_runs: ChainRun[];
26
+ child_tool_runs: ToolRun[];
27
+ }
28
+ export interface ToolRun extends BaseRunV1 {
29
+ tool_input: string;
30
+ output?: string;
31
+ action: string;
32
+ child_llm_runs: LLMRun[];
33
+ child_chain_runs: ChainRun[];
34
+ child_tool_runs: ToolRun[];
35
+ }
36
+ export interface BaseTracerSession {
37
+ start_time: number;
38
+ name?: string;
39
+ }
40
+ export type TracerSessionCreate = BaseTracerSession;
41
+ export interface TracerSessionV1 extends BaseTracerSession {
42
+ id: number;
43
+ }
44
+ export declare class LangChainTracerV1 extends BaseTracer {
45
+ name: string;
46
+ protected endpoint: string;
47
+ protected headers: Record<string, string>;
48
+ protected session: TracerSessionV1;
49
+ constructor();
50
+ newSession(sessionName?: string): Promise<TracerSessionV1>;
51
+ loadSession(sessionName: string): Promise<TracerSessionV1>;
52
+ loadDefaultSession(): Promise<TracerSessionV1>;
53
+ protected convertV2RunToRun(run: Run): Promise<LLMRun | ChainRun | ToolRun>;
54
+ protected persistRun(run: Run | LLMRun | ChainRun | ToolRun): Promise<void>;
55
+ protected persistSession(sessionCreate: BaseTracerSession): Promise<TracerSessionV1>;
56
+ protected _handleSessionResponse(endpoint: string): Promise<TracerSessionV1>;
57
+ }
@@ -0,0 +1,198 @@
1
+ import { getBufferString } from "../../memory/base.js";
2
+ import { BaseTracer } from "./tracer.js";
3
+ export class LangChainTracerV1 extends BaseTracer {
4
+ constructor() {
5
+ super();
6
+ Object.defineProperty(this, "name", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: "langchain_tracer"
11
+ });
12
+ Object.defineProperty(this, "endpoint", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: (typeof process !== "undefined"
17
+ ? // eslint-disable-next-line no-process-env
18
+ process.env?.LANGCHAIN_ENDPOINT
19
+ : undefined) || "http://localhost:8000"
20
+ });
21
+ Object.defineProperty(this, "headers", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: {
26
+ "Content-Type": "application/json",
27
+ }
28
+ });
29
+ Object.defineProperty(this, "session", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
35
+ // eslint-disable-next-line no-process-env
36
+ if (typeof process !== "undefined" && process.env?.LANGCHAIN_API_KEY) {
37
+ // eslint-disable-next-line no-process-env
38
+ this.headers["x-api-key"] = process.env?.LANGCHAIN_API_KEY;
39
+ }
40
+ }
41
+ async newSession(sessionName) {
42
+ const sessionCreate = {
43
+ start_time: Date.now(),
44
+ name: sessionName,
45
+ };
46
+ const session = await this.persistSession(sessionCreate);
47
+ this.session = session;
48
+ return session;
49
+ }
50
+ async loadSession(sessionName) {
51
+ const endpoint = `${this.endpoint}/sessions?name=${sessionName}`;
52
+ return this._handleSessionResponse(endpoint);
53
+ }
54
+ async loadDefaultSession() {
55
+ const endpoint = `${this.endpoint}/sessions?name=default`;
56
+ return this._handleSessionResponse(endpoint);
57
+ }
58
+ async convertV2RunToRun(run) {
59
+ const session = this.session ?? (await this.loadDefaultSession());
60
+ const serialized = run.serialized;
61
+ let runResult;
62
+ if (run.run_type === "llm") {
63
+ const prompts = run.inputs.prompts
64
+ ? run.inputs.prompts
65
+ : run.inputs.messages.map((x) => getBufferString(x));
66
+ const llmRun = {
67
+ uuid: run.id,
68
+ start_time: run.start_time,
69
+ end_time: run.end_time,
70
+ execution_order: run.execution_order,
71
+ child_execution_order: run.child_execution_order,
72
+ serialized,
73
+ type: run.run_type,
74
+ session_id: session.id,
75
+ prompts,
76
+ response: run.outputs,
77
+ };
78
+ runResult = llmRun;
79
+ }
80
+ else if (run.run_type === "chain") {
81
+ const child_runs = await Promise.all(run.child_runs.map((child_run) => this.convertV2RunToRun(child_run)));
82
+ const chainRun = {
83
+ uuid: run.id,
84
+ start_time: run.start_time,
85
+ end_time: run.end_time,
86
+ execution_order: run.execution_order,
87
+ child_execution_order: run.child_execution_order,
88
+ serialized,
89
+ type: run.run_type,
90
+ session_id: session.id,
91
+ inputs: run.inputs,
92
+ outputs: run.outputs,
93
+ child_llm_runs: child_runs.filter((child_run) => child_run.type === "llm"),
94
+ child_chain_runs: child_runs.filter((child_run) => child_run.type === "chain"),
95
+ child_tool_runs: child_runs.filter((child_run) => child_run.type === "tool"),
96
+ };
97
+ runResult = chainRun;
98
+ }
99
+ else if (run.run_type === "tool") {
100
+ const child_runs = await Promise.all(run.child_runs.map((child_run) => this.convertV2RunToRun(child_run)));
101
+ const toolRun = {
102
+ uuid: run.id,
103
+ start_time: run.start_time,
104
+ end_time: run.end_time,
105
+ execution_order: run.execution_order,
106
+ child_execution_order: run.child_execution_order,
107
+ serialized,
108
+ type: run.run_type,
109
+ session_id: session.id,
110
+ tool_input: run.inputs.input,
111
+ output: run.outputs?.output,
112
+ action: JSON.stringify(serialized),
113
+ child_llm_runs: child_runs.filter((child_run) => child_run.type === "llm"),
114
+ child_chain_runs: child_runs.filter((child_run) => child_run.type === "chain"),
115
+ child_tool_runs: child_runs.filter((child_run) => child_run.type === "tool"),
116
+ };
117
+ runResult = toolRun;
118
+ }
119
+ else {
120
+ throw new Error(`Unknown run type: ${run.run_type}`);
121
+ }
122
+ return runResult;
123
+ }
124
+ async persistRun(run) {
125
+ let endpoint;
126
+ let v1Run;
127
+ if (run.run_type !== undefined) {
128
+ v1Run = await this.convertV2RunToRun(run);
129
+ }
130
+ else {
131
+ v1Run = run;
132
+ }
133
+ if (v1Run.type === "llm") {
134
+ endpoint = `${this.endpoint}/llm-runs`;
135
+ }
136
+ else if (v1Run.type === "chain") {
137
+ endpoint = `${this.endpoint}/chain-runs`;
138
+ }
139
+ else {
140
+ endpoint = `${this.endpoint}/tool-runs`;
141
+ }
142
+ const response = await fetch(endpoint, {
143
+ method: "POST",
144
+ headers: this.headers,
145
+ body: JSON.stringify(v1Run),
146
+ });
147
+ if (!response.ok) {
148
+ console.error(`Failed to persist run: ${response.status} ${response.statusText}`);
149
+ }
150
+ }
151
+ async persistSession(sessionCreate) {
152
+ const endpoint = `${this.endpoint}/sessions`;
153
+ const response = await fetch(endpoint, {
154
+ method: "POST",
155
+ headers: this.headers,
156
+ body: JSON.stringify(sessionCreate),
157
+ });
158
+ if (!response.ok) {
159
+ console.error(`Failed to persist session: ${response.status} ${response.statusText}, using default session.`);
160
+ return {
161
+ id: 1,
162
+ ...sessionCreate,
163
+ };
164
+ }
165
+ return {
166
+ id: (await response.json()).id,
167
+ ...sessionCreate,
168
+ };
169
+ }
170
+ async _handleSessionResponse(endpoint) {
171
+ const response = await fetch(endpoint, {
172
+ method: "GET",
173
+ headers: this.headers,
174
+ });
175
+ let tracerSession;
176
+ if (!response.ok) {
177
+ console.error(`Failed to load session: ${response.status} ${response.statusText}`);
178
+ tracerSession = {
179
+ id: 1,
180
+ start_time: Date.now(),
181
+ };
182
+ this.session = tracerSession;
183
+ return tracerSession;
184
+ }
185
+ const resp = (await response.json());
186
+ if (resp.length === 0) {
187
+ tracerSession = {
188
+ id: 1,
189
+ start_time: Date.now(),
190
+ };
191
+ this.session = tracerSession;
192
+ return tracerSession;
193
+ }
194
+ [tracerSession] = resp;
195
+ this.session = tracerSession;
196
+ return tracerSession;
197
+ }
198
+ }
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConsoleCallbackHandler = exports.CallbackManagerForToolRun = exports.CallbackManagerForLLMRun = exports.CallbackManagerForChainRun = exports.CallbackManager = exports.getTracingCallbackHandler = exports.LangChainTracer = exports.BaseCallbackHandler = void 0;
3
+ exports.CallbackManagerForToolRun = exports.CallbackManagerForLLMRun = exports.CallbackManagerForChainRun = exports.CallbackManager = exports.getTracingV2CallbackHandler = exports.getTracingCallbackHandler = exports.LangChainTracerV1 = exports.LangChainTracer = exports.ConsoleCallbackHandler = exports.BaseTracer = exports.BaseCallbackHandler = void 0;
4
4
  var base_js_1 = require("./base.cjs");
5
5
  Object.defineProperty(exports, "BaseCallbackHandler", { enumerable: true, get: function () { return base_js_1.BaseCallbackHandler; } });
6
- var tracers_js_1 = require("./handlers/tracers.cjs");
7
- Object.defineProperty(exports, "LangChainTracer", { enumerable: true, get: function () { return tracers_js_1.LangChainTracer; } });
6
+ var tracer_js_1 = require("./handlers/tracer.cjs");
7
+ Object.defineProperty(exports, "BaseTracer", { enumerable: true, get: function () { return tracer_js_1.BaseTracer; } });
8
+ var console_js_1 = require("./handlers/console.cjs");
9
+ Object.defineProperty(exports, "ConsoleCallbackHandler", { enumerable: true, get: function () { return console_js_1.ConsoleCallbackHandler; } });
10
+ var tracer_langchain_js_1 = require("./handlers/tracer_langchain.cjs");
11
+ Object.defineProperty(exports, "LangChainTracer", { enumerable: true, get: function () { return tracer_langchain_js_1.LangChainTracer; } });
12
+ var tracer_langchain_v1_js_1 = require("./handlers/tracer_langchain_v1.cjs");
13
+ Object.defineProperty(exports, "LangChainTracerV1", { enumerable: true, get: function () { return tracer_langchain_v1_js_1.LangChainTracerV1; } });
8
14
  var initialize_js_1 = require("./handlers/initialize.cjs");
9
15
  Object.defineProperty(exports, "getTracingCallbackHandler", { enumerable: true, get: function () { return initialize_js_1.getTracingCallbackHandler; } });
16
+ Object.defineProperty(exports, "getTracingV2CallbackHandler", { enumerable: true, get: function () { return initialize_js_1.getTracingV2CallbackHandler; } });
10
17
  var manager_js_1 = require("./manager.cjs");
11
18
  Object.defineProperty(exports, "CallbackManager", { enumerable: true, get: function () { return manager_js_1.CallbackManager; } });
12
19
  Object.defineProperty(exports, "CallbackManagerForChainRun", { enumerable: true, get: function () { return manager_js_1.CallbackManagerForChainRun; } });
13
20
  Object.defineProperty(exports, "CallbackManagerForLLMRun", { enumerable: true, get: function () { return manager_js_1.CallbackManagerForLLMRun; } });
14
21
  Object.defineProperty(exports, "CallbackManagerForToolRun", { enumerable: true, get: function () { return manager_js_1.CallbackManagerForToolRun; } });
15
- var console_js_1 = require("./handlers/console.cjs");
16
- Object.defineProperty(exports, "ConsoleCallbackHandler", { enumerable: true, get: function () { return console_js_1.ConsoleCallbackHandler; } });
@@ -1,5 +1,7 @@
1
1
  export { BaseCallbackHandler, CallbackHandlerMethods, BaseCallbackHandlerInput, } from "./base.js";
2
- export { LangChainTracer, BaseRun, LLMRun, ChainRun, ToolRun, } from "./handlers/tracers.js";
3
- export { getTracingCallbackHandler } from "./handlers/initialize.js";
4
- export { CallbackManager, CallbackManagerForChainRun, CallbackManagerForLLMRun, CallbackManagerForToolRun, CallbackManagerOptions, Callbacks, } from "./manager.js";
2
+ export { Run, RunType, BaseRun, BaseTracer } from "./handlers/tracer.js";
5
3
  export { ConsoleCallbackHandler } from "./handlers/console.js";
4
+ export { LangChainTracer } from "./handlers/tracer_langchain.js";
5
+ export { LangChainTracerV1 } from "./handlers/tracer_langchain_v1.js";
6
+ export { getTracingCallbackHandler, getTracingV2CallbackHandler, } from "./handlers/initialize.js";
7
+ export { CallbackManager, CallbackManagerForChainRun, CallbackManagerForLLMRun, CallbackManagerForToolRun, CallbackManagerOptions, Callbacks, } from "./manager.js";
@@ -1,5 +1,7 @@
1
1
  export { BaseCallbackHandler, } from "./base.js";
2
- export { LangChainTracer, } from "./handlers/tracers.js";
3
- export { getTracingCallbackHandler } from "./handlers/initialize.js";
4
- export { CallbackManager, CallbackManagerForChainRun, CallbackManagerForLLMRun, CallbackManagerForToolRun, } from "./manager.js";
2
+ export { BaseTracer } from "./handlers/tracer.js";
5
3
  export { ConsoleCallbackHandler } from "./handlers/console.js";
4
+ export { LangChainTracer } from "./handlers/tracer_langchain.js";
5
+ export { LangChainTracerV1 } from "./handlers/tracer_langchain_v1.js";
6
+ export { getTracingCallbackHandler, getTracingV2CallbackHandler, } from "./handlers/initialize.js";
7
+ export { CallbackManager, CallbackManagerForChainRun, CallbackManagerForLLMRun, CallbackManagerForToolRun, } from "./manager.js";