@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 5.45 kB
Source Map (JSON)
{"version":3,"file":"chat.cjs","names":["BaseMessage","BaseMessageChunk","mergeContent","_mergeDicts"],"sources":["../../src/messages/chat.ts"],"sourcesContent":["import {\n BaseMessage,\n BaseMessageChunk,\n type BaseMessageFields,\n mergeContent,\n _mergeDicts,\n} from \"./base.js\";\nimport { $InferMessageContent, MessageStructure } from \"./message.js\";\nimport { Constructor } from \"./utils.js\";\n\nexport interface ChatMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageFields<TStructure, \"generic\"> {\n role: string;\n}\n\n/**\n * Represents a chat message in a conversation.\n */\nexport class ChatMessage<TStructure extends MessageStructure = MessageStructure>\n extends BaseMessage<TStructure, \"generic\">\n implements ChatMessageFields<TStructure>\n{\n static lc_name() {\n return \"ChatMessage\";\n }\n\n readonly type = \"generic\" as const;\n\n role: string;\n\n static _chatMessageClass(): typeof ChatMessage {\n return ChatMessage;\n }\n\n constructor(\n content: $InferMessageContent<TStructure, \"generic\">,\n role: string\n );\n\n constructor(fields: ChatMessageFields<TStructure>);\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"generic\">\n | ChatMessageFields<TStructure>,\n role?: string\n ) {\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n // oxlint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n fields = { content: fields, role: role! };\n }\n super(fields);\n this.role = fields.role;\n }\n\n static isInstance(obj: unknown): obj is ChatMessage {\n return super.isInstance(obj) && obj.type === \"generic\";\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n role: this.role,\n };\n }\n}\n\n/**\n * Represents a chunk of a chat message, which can be concatenated with\n * other chat message chunks.\n */\nexport class ChatMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageChunk<TStructure, \"generic\"> {\n static lc_name() {\n return \"ChatMessageChunk\";\n }\n\n readonly type = \"generic\" as const;\n\n role: string;\n\n constructor(\n content: $InferMessageContent<TStructure, \"generic\">,\n role: string\n );\n\n constructor(fields: ChatMessageFields<TStructure>);\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"generic\">\n | ChatMessageFields<TStructure>,\n role?: string\n ) {\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n // oxlint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n fields = { content: fields, role: role! };\n }\n super(fields);\n this.role = fields.role;\n }\n\n concat(chunk: ChatMessageChunk<TStructure>) {\n const Cls = this.constructor as Constructor<this>;\n return new Cls({\n content: mergeContent(this.content, chunk.content),\n additional_kwargs: _mergeDicts(\n this.additional_kwargs,\n chunk.additional_kwargs\n ),\n response_metadata: _mergeDicts(\n this.response_metadata,\n chunk.response_metadata\n ),\n role: this.role,\n id: this.id ?? chunk.id,\n });\n }\n\n static isInstance(obj: unknown): obj is ChatMessageChunk {\n return super.isInstance(obj) && obj.type === \"generic\";\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n role: this.role,\n };\n }\n}\n\n/**\n * @deprecated Use {@link ChatMessage.isInstance} instead\n */\nexport function isChatMessage(x: BaseMessage): x is ChatMessage {\n return x._getType() === \"generic\";\n}\n\n/**\n * @deprecated Use {@link ChatMessageChunk.isInstance} instead\n */\nexport function isChatMessageChunk(x: BaseMessageChunk): x is ChatMessageChunk {\n return x._getType() === \"generic\";\n}\n"],"mappings":";;;;;AAmBA,IAAa,cAAb,MAAa,oBACHA,aAAAA,YAEV;CACE,OAAO,UAAU;EACf,OAAO;CACT;CAEA,OAAgB;CAEhB;CAEA,OAAO,oBAAwC;EAC7C,OAAO;CACT;CASA,YACE,QAGA,MACA;EACA,IAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAEpD,SAAS;GAAE,SAAS;GAAc;EAAM;EAE1C,MAAM,MAAM;EACZ,KAAK,OAAO,OAAO;CACrB;CAEA,OAAO,WAAW,KAAkC;EAClD,OAAO,MAAM,WAAW,GAAG,KAAK,IAAI,SAAS;CAC/C;CAEA,QAAQ,OAAO,aAAa,KAAc;EACxC,OAAO,KAAK,WAAW,GAAG;CAC5B;CAEA,IAAa,mBAA4C;EACvD,OAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;EACb;CACF;AACF;;;;;AAMA,IAAa,mBAAb,cAEUC,aAAAA,iBAAwC;CAChD,OAAO,UAAU;EACf,OAAO;CACT;CAEA,OAAgB;CAEhB;CASA,YACE,QAGA,MACA;EACA,IAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAEpD,SAAS;GAAE,SAAS;GAAc;EAAM;EAE1C,MAAM,MAAM;EACZ,KAAK,OAAO,OAAO;CACrB;CAEA,OAAO,OAAqC;EAC1C,MAAM,MAAM,KAAK;EACjB,OAAO,IAAI,IAAI;GACb,SAASC,aAAAA,aAAa,KAAK,SAAS,MAAM,OAAO;GACjD,mBAAmBC,aAAAA,YACjB,KAAK,mBACL,MAAM,iBACR;GACA,mBAAmBA,aAAAA,YACjB,KAAK,mBACL,MAAM,iBACR;GACA,MAAM,KAAK;GACX,IAAI,KAAK,MAAM,MAAM;EACvB,CAAC;CACH;CAEA,OAAO,WAAW,KAAuC;EACvD,OAAO,MAAM,WAAW,GAAG,KAAK,IAAI,SAAS;CAC/C;CAEA,QAAQ,OAAO,aAAa,KAAc;EACxC,OAAO,KAAK,WAAW,GAAG;CAC5B;CAEA,IAAa,mBAA4C;EACvD,OAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;EACb;CACF;AACF;;;;AAKA,SAAgB,cAAc,GAAkC;CAC9D,OAAO,EAAE,SAAS,MAAM;AAC1B;;;;AAKA,SAAgB,mBAAmB,GAA4C;CAC7E,OAAO,EAAE,SAAS,MAAM;AAC1B"}