@langchain/core 0.1.20-rc.0 → 0.1.21
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.
- package/agents.d.cts +1 -0
- package/caches.d.cts +1 -0
- package/callbacks/base.d.cts +1 -0
- package/callbacks/manager.d.cts +1 -0
- package/callbacks/promises.d.cts +1 -0
- package/chat_history.d.cts +1 -0
- package/dist/load/import_type.cjs +3 -0
- package/dist/load/import_type.d.ts +4 -0
- package/dist/load/import_type.js +2 -0
- package/dist/messages/index.cjs +3 -0
- package/dist/messages/index.d.ts +5 -2
- package/dist/messages/index.js +3 -0
- package/dist/prompt_values.cjs +62 -1
- package/dist/prompt_values.d.ts +25 -0
- package/dist/prompt_values.js +60 -0
- package/dist/prompts/chat.cjs +235 -27
- package/dist/prompts/chat.d.ts +35 -10
- package/dist/prompts/chat.js +235 -27
- package/dist/prompts/image.cjs +115 -0
- package/dist/prompts/image.d.ts +56 -0
- package/dist/prompts/image.js +111 -0
- package/dist/prompts/prompt.d.ts +3 -2
- package/dist/prompts/serde.d.ts +2 -1
- package/dist/prompts/template.cjs +22 -1
- package/dist/prompts/template.d.ts +2 -1
- package/dist/prompts/template.js +22 -1
- package/dist/runnables/base.cjs +4 -3
- package/dist/runnables/base.js +4 -3
- package/dist/utils/stream.cjs +1 -1
- package/dist/utils/stream.js +1 -1
- package/documents.d.cts +1 -0
- package/embeddings.d.cts +1 -0
- package/example_selectors.d.cts +1 -0
- package/language_models/base.d.cts +1 -0
- package/language_models/chat_models.d.cts +1 -0
- package/language_models/llms.d.cts +1 -0
- package/load/serializable.d.cts +1 -0
- package/load.d.cts +1 -0
- package/memory.d.cts +1 -0
- package/messages.d.cts +1 -0
- package/output_parsers.d.cts +1 -0
- package/outputs.d.cts +1 -0
- package/package.json +267 -47
- package/prompt_values.d.cts +1 -0
- package/prompts.d.cts +1 -0
- package/retrievers.d.cts +1 -0
- package/runnables.d.cts +1 -0
- package/stores.d.cts +1 -0
- package/tools.d.cts +1 -0
- package/tracers/base.d.cts +1 -0
- package/tracers/console.d.cts +1 -0
- package/tracers/initialize.d.cts +1 -0
- package/tracers/log_stream.d.cts +1 -0
- package/tracers/run_collector.d.cts +1 -0
- package/tracers/tracer_langchain.d.cts +1 -0
- package/tracers/tracer_langchain_v1.d.cts +1 -0
- package/utils/async_caller.d.cts +1 -0
- package/utils/chunk_array.d.cts +1 -0
- package/utils/env.d.cts +1 -0
- package/utils/function_calling.d.cts +1 -0
- package/utils/hash.d.cts +1 -0
- package/utils/json_patch.d.cts +1 -0
- package/utils/json_schema.d.cts +1 -0
- package/utils/math.d.cts +1 -0
- package/utils/stream.d.cts +1 -0
- package/utils/testing.d.cts +1 -0
- package/utils/tiktoken.d.cts +1 -0
- package/utils/types.d.cts +1 -0
- package/vectorstores.d.cts +1 -0
package/agents.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/agents.js'
|
package/caches.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/caches.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/callbacks/base.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/callbacks/manager.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/callbacks/promises.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/chat_history.js'
|
package/dist/messages/index.cjs
CHANGED
|
@@ -387,6 +387,9 @@ class ChatMessage extends BaseMessage {
|
|
|
387
387
|
static lc_name() {
|
|
388
388
|
return "ChatMessage";
|
|
389
389
|
}
|
|
390
|
+
static _chatMessageClass() {
|
|
391
|
+
return ChatMessage;
|
|
392
|
+
}
|
|
390
393
|
constructor(fields, role) {
|
|
391
394
|
if (typeof fields === "string") {
|
|
392
395
|
// eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion
|
package/dist/messages/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface StoredGeneration {
|
|
|
16
16
|
message?: StoredMessage;
|
|
17
17
|
}
|
|
18
18
|
export type MessageType = "human" | "ai" | "generic" | "system" | "function" | "tool";
|
|
19
|
+
type ImageDetail = "auto" | "low" | "high";
|
|
19
20
|
export type MessageContentText = {
|
|
20
21
|
type: "text";
|
|
21
22
|
text: string;
|
|
@@ -24,7 +25,7 @@ export type MessageContentImageUrl = {
|
|
|
24
25
|
type: "image_url";
|
|
25
26
|
image_url: string | {
|
|
26
27
|
url: string;
|
|
27
|
-
detail?:
|
|
28
|
+
detail?: ImageDetail;
|
|
28
29
|
};
|
|
29
30
|
};
|
|
30
31
|
export type MessageContentComplex = MessageContentText | MessageContentImageUrl;
|
|
@@ -212,12 +213,13 @@ export declare class ToolMessageChunk extends BaseMessageChunk {
|
|
|
212
213
|
export declare class ChatMessage extends BaseMessage implements ChatMessageFieldsWithRole {
|
|
213
214
|
static lc_name(): string;
|
|
214
215
|
role: string;
|
|
216
|
+
static _chatMessageClass(): typeof ChatMessage;
|
|
215
217
|
constructor(content: string, role: string);
|
|
216
218
|
constructor(fields: ChatMessageFieldsWithRole);
|
|
217
219
|
_getType(): MessageType;
|
|
218
220
|
static isInstance(message: BaseMessage): message is ChatMessage;
|
|
219
221
|
}
|
|
220
|
-
export type BaseMessageLike = BaseMessage | [StringWithAutocomplete<MessageType | "user" | "assistant">,
|
|
222
|
+
export type BaseMessageLike = BaseMessage | [StringWithAutocomplete<MessageType | "user" | "assistant">, MessageContent] | string;
|
|
221
223
|
export declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;
|
|
222
224
|
export declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;
|
|
223
225
|
export declare function coerceMessageLikeToMessage(messageLike: BaseMessageLike): BaseMessage;
|
|
@@ -255,3 +257,4 @@ export declare function mapStoredMessagesToChatMessages(messages: StoredMessage[
|
|
|
255
257
|
* is used to prepare chat messages for storage.
|
|
256
258
|
*/
|
|
257
259
|
export declare function mapChatMessagesToStoredMessages(messages: BaseMessage[]): StoredMessage[];
|
|
260
|
+
export {};
|
package/dist/messages/index.js
CHANGED
|
@@ -372,6 +372,9 @@ export class ChatMessage extends BaseMessage {
|
|
|
372
372
|
static lc_name() {
|
|
373
373
|
return "ChatMessage";
|
|
374
374
|
}
|
|
375
|
+
static _chatMessageClass() {
|
|
376
|
+
return ChatMessage;
|
|
377
|
+
}
|
|
375
378
|
constructor(fields, role) {
|
|
376
379
|
if (typeof fields === "string") {
|
|
377
380
|
// eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion
|
package/dist/prompt_values.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ChatPromptValue = exports.StringPromptValue = exports.BasePromptValue = void 0;
|
|
3
|
+
exports.ImagePromptValue = exports.ChatPromptValue = exports.StringPromptValue = exports.BasePromptValue = void 0;
|
|
4
4
|
const serializable_js_1 = require("./load/serializable.cjs");
|
|
5
5
|
const index_js_1 = require("./messages/index.cjs");
|
|
6
6
|
/**
|
|
@@ -89,3 +89,64 @@ class ChatPromptValue extends BasePromptValue {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
exports.ChatPromptValue = ChatPromptValue;
|
|
92
|
+
/**
|
|
93
|
+
* Class that represents an image prompt value. It extends the
|
|
94
|
+
* BasePromptValue and includes an ImageURL instance.
|
|
95
|
+
*/
|
|
96
|
+
class ImagePromptValue extends BasePromptValue {
|
|
97
|
+
static lc_name() {
|
|
98
|
+
return "ImagePromptValue";
|
|
99
|
+
}
|
|
100
|
+
constructor(fields) {
|
|
101
|
+
if (!("imageUrl" in fields)) {
|
|
102
|
+
// eslint-disable-next-line no-param-reassign
|
|
103
|
+
fields = { imageUrl: fields };
|
|
104
|
+
}
|
|
105
|
+
super(fields);
|
|
106
|
+
Object.defineProperty(this, "lc_namespace", {
|
|
107
|
+
enumerable: true,
|
|
108
|
+
configurable: true,
|
|
109
|
+
writable: true,
|
|
110
|
+
value: ["langchain_core", "prompt_values"]
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(this, "lc_serializable", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
configurable: true,
|
|
115
|
+
writable: true,
|
|
116
|
+
value: true
|
|
117
|
+
});
|
|
118
|
+
Object.defineProperty(this, "imageUrl", {
|
|
119
|
+
enumerable: true,
|
|
120
|
+
configurable: true,
|
|
121
|
+
writable: true,
|
|
122
|
+
value: void 0
|
|
123
|
+
});
|
|
124
|
+
/** @ignore */
|
|
125
|
+
Object.defineProperty(this, "value", {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
configurable: true,
|
|
128
|
+
writable: true,
|
|
129
|
+
value: void 0
|
|
130
|
+
});
|
|
131
|
+
this.imageUrl = fields.imageUrl;
|
|
132
|
+
}
|
|
133
|
+
toString() {
|
|
134
|
+
return this.imageUrl.url;
|
|
135
|
+
}
|
|
136
|
+
toChatMessages() {
|
|
137
|
+
return [
|
|
138
|
+
new index_js_1.HumanMessage({
|
|
139
|
+
content: [
|
|
140
|
+
{
|
|
141
|
+
type: "image_url",
|
|
142
|
+
image_url: {
|
|
143
|
+
detail: this.imageUrl.detail,
|
|
144
|
+
url: this.imageUrl.url,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
}),
|
|
149
|
+
];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.ImagePromptValue = ImagePromptValue;
|
package/dist/prompt_values.d.ts
CHANGED
|
@@ -50,3 +50,28 @@ export declare class ChatPromptValue extends BasePromptValue implements ChatProm
|
|
|
50
50
|
toString(): string;
|
|
51
51
|
toChatMessages(): BaseMessage[];
|
|
52
52
|
}
|
|
53
|
+
export type ImageContent = {
|
|
54
|
+
/** Specifies the detail level of the image. */
|
|
55
|
+
detail?: "auto" | "low" | "high";
|
|
56
|
+
/** Either a URL of the image or the base64 encoded image data. */
|
|
57
|
+
url: string;
|
|
58
|
+
};
|
|
59
|
+
export interface ImagePromptValueFields {
|
|
60
|
+
imageUrl: ImageContent;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Class that represents an image prompt value. It extends the
|
|
64
|
+
* BasePromptValue and includes an ImageURL instance.
|
|
65
|
+
*/
|
|
66
|
+
export declare class ImagePromptValue extends BasePromptValue {
|
|
67
|
+
lc_namespace: string[];
|
|
68
|
+
lc_serializable: boolean;
|
|
69
|
+
static lc_name(): string;
|
|
70
|
+
imageUrl: ImageContent;
|
|
71
|
+
/** @ignore */
|
|
72
|
+
value: string;
|
|
73
|
+
constructor(fields: ImagePromptValueFields);
|
|
74
|
+
constructor(fields: ImageContent);
|
|
75
|
+
toString(): string;
|
|
76
|
+
toChatMessages(): HumanMessage[];
|
|
77
|
+
}
|
package/dist/prompt_values.js
CHANGED
|
@@ -83,3 +83,63 @@ export class ChatPromptValue extends BasePromptValue {
|
|
|
83
83
|
return this.messages;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Class that represents an image prompt value. It extends the
|
|
88
|
+
* BasePromptValue and includes an ImageURL instance.
|
|
89
|
+
*/
|
|
90
|
+
export class ImagePromptValue extends BasePromptValue {
|
|
91
|
+
static lc_name() {
|
|
92
|
+
return "ImagePromptValue";
|
|
93
|
+
}
|
|
94
|
+
constructor(fields) {
|
|
95
|
+
if (!("imageUrl" in fields)) {
|
|
96
|
+
// eslint-disable-next-line no-param-reassign
|
|
97
|
+
fields = { imageUrl: fields };
|
|
98
|
+
}
|
|
99
|
+
super(fields);
|
|
100
|
+
Object.defineProperty(this, "lc_namespace", {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
configurable: true,
|
|
103
|
+
writable: true,
|
|
104
|
+
value: ["langchain_core", "prompt_values"]
|
|
105
|
+
});
|
|
106
|
+
Object.defineProperty(this, "lc_serializable", {
|
|
107
|
+
enumerable: true,
|
|
108
|
+
configurable: true,
|
|
109
|
+
writable: true,
|
|
110
|
+
value: true
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(this, "imageUrl", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
configurable: true,
|
|
115
|
+
writable: true,
|
|
116
|
+
value: void 0
|
|
117
|
+
});
|
|
118
|
+
/** @ignore */
|
|
119
|
+
Object.defineProperty(this, "value", {
|
|
120
|
+
enumerable: true,
|
|
121
|
+
configurable: true,
|
|
122
|
+
writable: true,
|
|
123
|
+
value: void 0
|
|
124
|
+
});
|
|
125
|
+
this.imageUrl = fields.imageUrl;
|
|
126
|
+
}
|
|
127
|
+
toString() {
|
|
128
|
+
return this.imageUrl.url;
|
|
129
|
+
}
|
|
130
|
+
toChatMessages() {
|
|
131
|
+
return [
|
|
132
|
+
new HumanMessage({
|
|
133
|
+
content: [
|
|
134
|
+
{
|
|
135
|
+
type: "image_url",
|
|
136
|
+
image_url: {
|
|
137
|
+
detail: this.imageUrl.detail,
|
|
138
|
+
url: this.imageUrl.url,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
}),
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
}
|
package/dist/prompts/chat.cjs
CHANGED
|
@@ -6,8 +6,11 @@ exports.ChatPromptTemplate = exports.SystemMessagePromptTemplate = exports.AIMes
|
|
|
6
6
|
const index_js_1 = require("../messages/index.cjs");
|
|
7
7
|
const prompt_values_js_1 = require("../prompt_values.cjs");
|
|
8
8
|
const base_js_1 = require("../runnables/base.cjs");
|
|
9
|
+
const string_js_1 = require("./string.cjs");
|
|
9
10
|
const base_js_2 = require("./base.cjs");
|
|
10
11
|
const prompt_js_1 = require("./prompt.cjs");
|
|
12
|
+
const image_js_1 = require("./image.cjs");
|
|
13
|
+
const template_js_1 = require("./template.cjs");
|
|
11
14
|
/**
|
|
12
15
|
* Abstract class that serves as a base for creating message prompt
|
|
13
16
|
* templates. It defines how to format messages for different roles in a
|
|
@@ -176,6 +179,210 @@ class ChatMessagePromptTemplate extends BaseMessageStringPromptTemplate {
|
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
181
|
exports.ChatMessagePromptTemplate = ChatMessagePromptTemplate;
|
|
182
|
+
class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
|
|
183
|
+
static _messageClass() {
|
|
184
|
+
throw new Error("Can not invoke _messageClass from inside _StringImageMessagePromptTemplate");
|
|
185
|
+
}
|
|
186
|
+
constructor(
|
|
187
|
+
/** @TODO When we come up with a better way to type prompt templates, fix this */
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
189
|
+
fields, additionalOptions) {
|
|
190
|
+
if (!("prompt" in fields)) {
|
|
191
|
+
// eslint-disable-next-line no-param-reassign
|
|
192
|
+
fields = { prompt: fields };
|
|
193
|
+
}
|
|
194
|
+
super(fields);
|
|
195
|
+
Object.defineProperty(this, "lc_namespace", {
|
|
196
|
+
enumerable: true,
|
|
197
|
+
configurable: true,
|
|
198
|
+
writable: true,
|
|
199
|
+
value: ["langchain_core", "prompts", "chat"]
|
|
200
|
+
});
|
|
201
|
+
Object.defineProperty(this, "lc_serializable", {
|
|
202
|
+
enumerable: true,
|
|
203
|
+
configurable: true,
|
|
204
|
+
writable: true,
|
|
205
|
+
value: true
|
|
206
|
+
});
|
|
207
|
+
Object.defineProperty(this, "inputVariables", {
|
|
208
|
+
enumerable: true,
|
|
209
|
+
configurable: true,
|
|
210
|
+
writable: true,
|
|
211
|
+
value: []
|
|
212
|
+
});
|
|
213
|
+
Object.defineProperty(this, "additionalOptions", {
|
|
214
|
+
enumerable: true,
|
|
215
|
+
configurable: true,
|
|
216
|
+
writable: true,
|
|
217
|
+
value: {}
|
|
218
|
+
});
|
|
219
|
+
Object.defineProperty(this, "prompt", {
|
|
220
|
+
enumerable: true,
|
|
221
|
+
configurable: true,
|
|
222
|
+
writable: true,
|
|
223
|
+
value: void 0
|
|
224
|
+
});
|
|
225
|
+
Object.defineProperty(this, "messageClass", {
|
|
226
|
+
enumerable: true,
|
|
227
|
+
configurable: true,
|
|
228
|
+
writable: true,
|
|
229
|
+
value: void 0
|
|
230
|
+
});
|
|
231
|
+
// ChatMessage contains role field, others don't.
|
|
232
|
+
// Because of this, we have a separate class property for ChatMessage.
|
|
233
|
+
Object.defineProperty(this, "chatMessageClass", {
|
|
234
|
+
enumerable: true,
|
|
235
|
+
configurable: true,
|
|
236
|
+
writable: true,
|
|
237
|
+
value: void 0
|
|
238
|
+
});
|
|
239
|
+
this.prompt = fields.prompt;
|
|
240
|
+
if (Array.isArray(this.prompt)) {
|
|
241
|
+
let inputVariables = [];
|
|
242
|
+
this.prompt.forEach((prompt) => {
|
|
243
|
+
if ("inputVariables" in prompt) {
|
|
244
|
+
inputVariables = inputVariables.concat(prompt.inputVariables);
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
this.inputVariables = inputVariables;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
this.inputVariables = this.prompt.inputVariables;
|
|
251
|
+
}
|
|
252
|
+
this.additionalOptions = additionalOptions ?? this.additionalOptions;
|
|
253
|
+
}
|
|
254
|
+
createMessage(content) {
|
|
255
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
256
|
+
const constructor = this.constructor;
|
|
257
|
+
if (constructor._messageClass()) {
|
|
258
|
+
const MsgClass = constructor._messageClass();
|
|
259
|
+
return new MsgClass({ content });
|
|
260
|
+
}
|
|
261
|
+
else if (constructor.chatMessageClass) {
|
|
262
|
+
const MsgClass = constructor.chatMessageClass();
|
|
263
|
+
// Assuming ChatMessage constructor also takes a content argument
|
|
264
|
+
return new MsgClass({
|
|
265
|
+
content,
|
|
266
|
+
role: this.getRoleFromMessageClass(MsgClass.lc_name()),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
throw new Error("No message class defined");
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
getRoleFromMessageClass(name) {
|
|
274
|
+
switch (name) {
|
|
275
|
+
case "HumanMessage":
|
|
276
|
+
return "human";
|
|
277
|
+
case "AIMessage":
|
|
278
|
+
return "ai";
|
|
279
|
+
case "SystemMessage":
|
|
280
|
+
return "system";
|
|
281
|
+
case "ChatMessage":
|
|
282
|
+
return "chat";
|
|
283
|
+
default:
|
|
284
|
+
throw new Error("Invalid message class name");
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
static fromTemplate(template, additionalOptions) {
|
|
288
|
+
if (typeof template === "string") {
|
|
289
|
+
return new this(prompt_js_1.PromptTemplate.fromTemplate(template));
|
|
290
|
+
}
|
|
291
|
+
const prompt = [];
|
|
292
|
+
for (const item of template) {
|
|
293
|
+
if (typeof item === "string" ||
|
|
294
|
+
(typeof item === "object" && "text" in item)) {
|
|
295
|
+
let text = "";
|
|
296
|
+
if (typeof item === "string") {
|
|
297
|
+
text = item;
|
|
298
|
+
}
|
|
299
|
+
else if (typeof item.text === "string") {
|
|
300
|
+
text = item.text ?? "";
|
|
301
|
+
}
|
|
302
|
+
prompt.push(prompt_js_1.PromptTemplate.fromTemplate(text));
|
|
303
|
+
}
|
|
304
|
+
else if (typeof item === "object" && "image_url" in item) {
|
|
305
|
+
let imgTemplate = item.image_url ?? "";
|
|
306
|
+
let imgTemplateObject;
|
|
307
|
+
let inputVariables = [];
|
|
308
|
+
if (typeof imgTemplate === "string") {
|
|
309
|
+
const parsedTemplate = (0, template_js_1.parseFString)(imgTemplate);
|
|
310
|
+
const variables = parsedTemplate.flatMap((item) => item.type === "variable" ? [item.name] : []);
|
|
311
|
+
if (variables) {
|
|
312
|
+
if (variables.length > 1) {
|
|
313
|
+
throw new Error(`Only one format variable allowed per image template.\nGot: ${variables}\nFrom: ${imgTemplate}`);
|
|
314
|
+
}
|
|
315
|
+
inputVariables = [variables[0]];
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
inputVariables = [];
|
|
319
|
+
}
|
|
320
|
+
imgTemplate = { url: imgTemplate };
|
|
321
|
+
imgTemplateObject = new image_js_1.ImagePromptTemplate({
|
|
322
|
+
template: imgTemplate,
|
|
323
|
+
inputVariables,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
else if (typeof imgTemplate === "object") {
|
|
327
|
+
if ("url" in imgTemplate) {
|
|
328
|
+
const parsedTemplate = (0, template_js_1.parseFString)(imgTemplate.url);
|
|
329
|
+
inputVariables = parsedTemplate.flatMap((item) => item.type === "variable" ? [item.name] : []);
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
inputVariables = [];
|
|
333
|
+
}
|
|
334
|
+
imgTemplateObject = new image_js_1.ImagePromptTemplate({
|
|
335
|
+
template: imgTemplate,
|
|
336
|
+
inputVariables,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
throw new Error("Invalid image template");
|
|
341
|
+
}
|
|
342
|
+
prompt.push(imgTemplateObject);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return new this({ prompt, additionalOptions });
|
|
346
|
+
}
|
|
347
|
+
async format(input) {
|
|
348
|
+
// eslint-disable-next-line no-instanceof/no-instanceof
|
|
349
|
+
if (this.prompt instanceof string_js_1.BaseStringPromptTemplate) {
|
|
350
|
+
const text = await this.prompt.format(input);
|
|
351
|
+
return this.createMessage(text);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
const content = [];
|
|
355
|
+
for (const prompt of this.prompt) {
|
|
356
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
357
|
+
let inputs = {};
|
|
358
|
+
if (!("inputVariables" in prompt)) {
|
|
359
|
+
throw new Error(`Prompt ${prompt} does not have inputVariables defined.`);
|
|
360
|
+
}
|
|
361
|
+
for (const item of prompt.inputVariables) {
|
|
362
|
+
if (!inputs) {
|
|
363
|
+
inputs = { [item]: input[item] };
|
|
364
|
+
}
|
|
365
|
+
inputs = { ...inputs, [item]: input[item] };
|
|
366
|
+
}
|
|
367
|
+
// eslint-disable-next-line no-instanceof/no-instanceof
|
|
368
|
+
if (prompt instanceof string_js_1.BaseStringPromptTemplate) {
|
|
369
|
+
const formatted = await prompt.format(inputs);
|
|
370
|
+
content.push({ type: "text", text: formatted });
|
|
371
|
+
/** @TODO replace this */
|
|
372
|
+
// eslint-disable-next-line no-instanceof/no-instanceof
|
|
373
|
+
}
|
|
374
|
+
else if (prompt instanceof image_js_1.ImagePromptTemplate) {
|
|
375
|
+
const formatted = await prompt.format(inputs);
|
|
376
|
+
content.push({ type: "image_url", image_url: formatted });
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return this.createMessage(content);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
async formatMessages(values) {
|
|
383
|
+
return [await this.format(values)];
|
|
384
|
+
}
|
|
385
|
+
}
|
|
179
386
|
/**
|
|
180
387
|
* Class that represents a human message prompt template. It extends the
|
|
181
388
|
* BaseMessageStringPromptTemplate.
|
|
@@ -190,32 +397,26 @@ exports.ChatMessagePromptTemplate = ChatMessagePromptTemplate;
|
|
|
190
397
|
* });
|
|
191
398
|
* ```
|
|
192
399
|
*/
|
|
193
|
-
class HumanMessagePromptTemplate extends
|
|
400
|
+
class HumanMessagePromptTemplate extends _StringImageMessagePromptTemplate {
|
|
401
|
+
static _messageClass() {
|
|
402
|
+
return index_js_1.HumanMessage;
|
|
403
|
+
}
|
|
194
404
|
static lc_name() {
|
|
195
405
|
return "HumanMessagePromptTemplate";
|
|
196
406
|
}
|
|
197
|
-
async format(values) {
|
|
198
|
-
return new index_js_1.HumanMessage(await this.prompt.format(values));
|
|
199
|
-
}
|
|
200
|
-
static fromTemplate(template) {
|
|
201
|
-
return new this(prompt_js_1.PromptTemplate.fromTemplate(template));
|
|
202
|
-
}
|
|
203
407
|
}
|
|
204
408
|
exports.HumanMessagePromptTemplate = HumanMessagePromptTemplate;
|
|
205
409
|
/**
|
|
206
410
|
* Class that represents an AI message prompt template. It extends the
|
|
207
411
|
* BaseMessageStringPromptTemplate.
|
|
208
412
|
*/
|
|
209
|
-
class AIMessagePromptTemplate extends
|
|
413
|
+
class AIMessagePromptTemplate extends _StringImageMessagePromptTemplate {
|
|
414
|
+
static _messageClass() {
|
|
415
|
+
return index_js_1.AIMessage;
|
|
416
|
+
}
|
|
210
417
|
static lc_name() {
|
|
211
418
|
return "AIMessagePromptTemplate";
|
|
212
419
|
}
|
|
213
|
-
async format(values) {
|
|
214
|
-
return new index_js_1.AIMessage(await this.prompt.format(values));
|
|
215
|
-
}
|
|
216
|
-
static fromTemplate(template) {
|
|
217
|
-
return new this(prompt_js_1.PromptTemplate.fromTemplate(template));
|
|
218
|
-
}
|
|
219
420
|
}
|
|
220
421
|
exports.AIMessagePromptTemplate = AIMessagePromptTemplate;
|
|
221
422
|
/**
|
|
@@ -232,16 +433,13 @@ exports.AIMessagePromptTemplate = AIMessagePromptTemplate;
|
|
|
232
433
|
* });
|
|
233
434
|
* ```
|
|
234
435
|
*/
|
|
235
|
-
class SystemMessagePromptTemplate extends
|
|
436
|
+
class SystemMessagePromptTemplate extends _StringImageMessagePromptTemplate {
|
|
437
|
+
static _messageClass() {
|
|
438
|
+
return index_js_1.SystemMessage;
|
|
439
|
+
}
|
|
236
440
|
static lc_name() {
|
|
237
441
|
return "SystemMessagePromptTemplate";
|
|
238
442
|
}
|
|
239
|
-
async format(values) {
|
|
240
|
-
return new index_js_1.SystemMessage(await this.prompt.format(values));
|
|
241
|
-
}
|
|
242
|
-
static fromTemplate(template) {
|
|
243
|
-
return new this(prompt_js_1.PromptTemplate.fromTemplate(template));
|
|
244
|
-
}
|
|
245
443
|
}
|
|
246
444
|
exports.SystemMessagePromptTemplate = SystemMessagePromptTemplate;
|
|
247
445
|
function _isBaseMessagePromptTemplate(baseMessagePromptTemplateLike) {
|
|
@@ -350,16 +548,26 @@ class ChatPromptTemplate extends BaseChatPromptTemplate {
|
|
|
350
548
|
return message;
|
|
351
549
|
}
|
|
352
550
|
const formattedMessageContent = await Promise.all(message.content.map(async (item) => {
|
|
353
|
-
if (item.type !== "image_url"
|
|
354
|
-
typeof item.image_url === "string" ||
|
|
355
|
-
!item.image_url?.url) {
|
|
551
|
+
if (item.type !== "image_url") {
|
|
356
552
|
return item;
|
|
357
553
|
}
|
|
358
|
-
|
|
554
|
+
let imageUrl = "";
|
|
555
|
+
if (typeof item.image_url === "string") {
|
|
556
|
+
imageUrl = item.image_url;
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
imageUrl = item.image_url.url;
|
|
560
|
+
}
|
|
359
561
|
const promptTemplatePlaceholder = prompt_js_1.PromptTemplate.fromTemplate(imageUrl);
|
|
360
562
|
const formattedUrl = await promptTemplatePlaceholder.format(inputValues);
|
|
361
|
-
|
|
362
|
-
|
|
563
|
+
if (typeof item.image_url !== "string" && "url" in item.image_url) {
|
|
564
|
+
// eslint-disable-next-line no-param-reassign
|
|
565
|
+
item.image_url.url = formattedUrl;
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
// eslint-disable-next-line no-param-reassign
|
|
569
|
+
item.image_url = formattedUrl;
|
|
570
|
+
}
|
|
363
571
|
return item;
|
|
364
572
|
}));
|
|
365
573
|
// eslint-disable-next-line no-param-reassign
|
package/dist/prompts/chat.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { BaseCallbackConfig } from "../callbacks/manager.js";
|
|
2
|
-
import { BaseMessage, type BaseMessageLike } from "../messages/index.js";
|
|
2
|
+
import { AIMessage, HumanMessage, SystemMessage, BaseMessage, ChatMessage, type BaseMessageLike, MessageContent } from "../messages/index.js";
|
|
3
3
|
import { type ChatPromptValueInterface } from "../prompt_values.js";
|
|
4
4
|
import type { InputValues, PartialValues } from "../utils/types.js";
|
|
5
5
|
import { Runnable } from "../runnables/base.js";
|
|
6
6
|
import { BaseStringPromptTemplate } from "./string.js";
|
|
7
7
|
import { BasePromptTemplate, type BasePromptTemplateInput, type TypedPromptInputValues } from "./base.js";
|
|
8
8
|
import { type ParamsFromFString } from "./prompt.js";
|
|
9
|
+
import { ImagePromptTemplate } from "./image.js";
|
|
9
10
|
/**
|
|
10
11
|
* Abstract class that serves as a base for creating message prompt
|
|
11
12
|
* templates. It defines how to format messages for different roles in a
|
|
@@ -97,6 +98,32 @@ export declare class ChatMessagePromptTemplate<RunInput extends InputValues = an
|
|
|
97
98
|
format(values: RunInput): Promise<BaseMessage>;
|
|
98
99
|
static fromTemplate(template: string, role: string): ChatMessagePromptTemplate<any>;
|
|
99
100
|
}
|
|
101
|
+
interface _TextTemplateParam {
|
|
102
|
+
text?: string | Record<string, any>;
|
|
103
|
+
}
|
|
104
|
+
interface _ImageTemplateParam {
|
|
105
|
+
image_url?: string | Record<string, any>;
|
|
106
|
+
}
|
|
107
|
+
type MessageClass = typeof HumanMessage | typeof AIMessage | typeof SystemMessage;
|
|
108
|
+
type ChatMessageClass = typeof ChatMessage;
|
|
109
|
+
declare class _StringImageMessagePromptTemplate<RunInput extends InputValues = any, RunOutput extends BaseMessage[] = BaseMessage[]> extends BaseMessagePromptTemplate<RunInput, RunOutput> {
|
|
110
|
+
lc_namespace: string[];
|
|
111
|
+
lc_serializable: boolean;
|
|
112
|
+
inputVariables: Array<Extract<keyof RunInput, string>>;
|
|
113
|
+
additionalOptions: Record<string, unknown>;
|
|
114
|
+
prompt: BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>, string> | Array<BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>, string> | ImagePromptTemplate<InputValues<Extract<keyof RunInput, string>>, string> | MessageStringPromptTemplateFields<InputValues<Extract<keyof RunInput, string>>>>;
|
|
115
|
+
protected messageClass?: MessageClass;
|
|
116
|
+
static _messageClass(): MessageClass;
|
|
117
|
+
protected chatMessageClass?: ChatMessageClass;
|
|
118
|
+
constructor(
|
|
119
|
+
/** @TODO When we come up with a better way to type prompt templates, fix this */
|
|
120
|
+
fields: any, additionalOptions?: Record<string, unknown>);
|
|
121
|
+
createMessage(content: MessageContent): any;
|
|
122
|
+
getRoleFromMessageClass(name: string): "human" | "ai" | "system" | "chat";
|
|
123
|
+
static fromTemplate(template: string | Array<string | _TextTemplateParam | _ImageTemplateParam>, additionalOptions?: Record<string, unknown>): _StringImageMessagePromptTemplate<any, BaseMessage[]>;
|
|
124
|
+
format(input: TypedPromptInputValues<RunInput>): Promise<BaseMessage>;
|
|
125
|
+
formatMessages(values: RunInput): Promise<RunOutput>;
|
|
126
|
+
}
|
|
100
127
|
/**
|
|
101
128
|
* Class that represents a human message prompt template. It extends the
|
|
102
129
|
* BaseMessageStringPromptTemplate.
|
|
@@ -111,19 +138,17 @@ export declare class ChatMessagePromptTemplate<RunInput extends InputValues = an
|
|
|
111
138
|
* });
|
|
112
139
|
* ```
|
|
113
140
|
*/
|
|
114
|
-
export declare class HumanMessagePromptTemplate<RunInput extends InputValues = any> extends
|
|
141
|
+
export declare class HumanMessagePromptTemplate<RunInput extends InputValues = any> extends _StringImageMessagePromptTemplate<RunInput> {
|
|
142
|
+
static _messageClass(): typeof HumanMessage;
|
|
115
143
|
static lc_name(): string;
|
|
116
|
-
format(values: RunInput): Promise<BaseMessage>;
|
|
117
|
-
static fromTemplate(template: string): HumanMessagePromptTemplate<any>;
|
|
118
144
|
}
|
|
119
145
|
/**
|
|
120
146
|
* Class that represents an AI message prompt template. It extends the
|
|
121
147
|
* BaseMessageStringPromptTemplate.
|
|
122
148
|
*/
|
|
123
|
-
export declare class AIMessagePromptTemplate<RunInput extends InputValues = any> extends
|
|
149
|
+
export declare class AIMessagePromptTemplate<RunInput extends InputValues = any> extends _StringImageMessagePromptTemplate<RunInput> {
|
|
150
|
+
static _messageClass(): typeof AIMessage;
|
|
124
151
|
static lc_name(): string;
|
|
125
|
-
format(values: RunInput): Promise<BaseMessage>;
|
|
126
|
-
static fromTemplate(template: string): AIMessagePromptTemplate<any>;
|
|
127
152
|
}
|
|
128
153
|
/**
|
|
129
154
|
* Class that represents a system message prompt template. It extends the
|
|
@@ -139,10 +164,9 @@ export declare class AIMessagePromptTemplate<RunInput extends InputValues = any>
|
|
|
139
164
|
* });
|
|
140
165
|
* ```
|
|
141
166
|
*/
|
|
142
|
-
export declare class SystemMessagePromptTemplate<RunInput extends InputValues = any> extends
|
|
167
|
+
export declare class SystemMessagePromptTemplate<RunInput extends InputValues = any> extends _StringImageMessagePromptTemplate<RunInput> {
|
|
168
|
+
static _messageClass(): typeof SystemMessage;
|
|
143
169
|
static lc_name(): string;
|
|
144
|
-
format(values: RunInput): Promise<BaseMessage>;
|
|
145
|
-
static fromTemplate(template: string): SystemMessagePromptTemplate<any>;
|
|
146
170
|
}
|
|
147
171
|
/**
|
|
148
172
|
* Interface for the input of a ChatPromptTemplate.
|
|
@@ -202,3 +226,4 @@ export declare class ChatPromptTemplate<RunInput extends InputValues = any, Part
|
|
|
202
226
|
/** @deprecated Renamed to .fromMessages */
|
|
203
227
|
static fromPromptMessages<RunInput extends InputValues = any>(promptMessages: (ChatPromptTemplate<InputValues, string> | BaseMessagePromptTemplateLike)[]): ChatPromptTemplate<RunInput>;
|
|
204
228
|
}
|
|
229
|
+
export {};
|