prompt_values.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import { Serializable } from "./load/serializable.js";
  2. import { HumanMessage } from "./messages/human.js";
  3. import { getBufferString } from "./messages/utils.js";
  4. /**
  5. * Base PromptValue class. All prompt values should extend this class.
  6. */
  7. export class BasePromptValue extends Serializable {
  8. }
  9. /**
  10. * Represents a prompt value as a string. It extends the BasePromptValue
  11. * class and overrides the toString and toChatMessages methods.
  12. */
  13. export class StringPromptValue extends BasePromptValue {
  14. static lc_name() {
  15. return "StringPromptValue";
  16. }
  17. constructor(value) {
  18. super({ value });
  19. Object.defineProperty(this, "lc_namespace", {
  20. enumerable: true,
  21. configurable: true,
  22. writable: true,
  23. value: ["langchain_core", "prompt_values"]
  24. });
  25. Object.defineProperty(this, "lc_serializable", {
  26. enumerable: true,
  27. configurable: true,
  28. writable: true,
  29. value: true
  30. });
  31. Object.defineProperty(this, "value", {
  32. enumerable: true,
  33. configurable: true,
  34. writable: true,
  35. value: void 0
  36. });
  37. this.value = value;
  38. }
  39. toString() {
  40. return this.value;
  41. }
  42. toChatMessages() {
  43. return [new HumanMessage(this.value)];
  44. }
  45. }
  46. /**
  47. * Class that represents a chat prompt value. It extends the
  48. * BasePromptValue and includes an array of BaseMessage instances.
  49. */
  50. export class ChatPromptValue extends BasePromptValue {
  51. static lc_name() {
  52. return "ChatPromptValue";
  53. }
  54. constructor(fields) {
  55. if (Array.isArray(fields)) {
  56. // eslint-disable-next-line no-param-reassign
  57. fields = { messages: fields };
  58. }
  59. super(fields);
  60. Object.defineProperty(this, "lc_namespace", {
  61. enumerable: true,
  62. configurable: true,
  63. writable: true,
  64. value: ["langchain_core", "prompt_values"]
  65. });
  66. Object.defineProperty(this, "lc_serializable", {
  67. enumerable: true,
  68. configurable: true,
  69. writable: true,
  70. value: true
  71. });
  72. Object.defineProperty(this, "messages", {
  73. enumerable: true,
  74. configurable: true,
  75. writable: true,
  76. value: void 0
  77. });
  78. this.messages = fields.messages;
  79. }
  80. toString() {
  81. return getBufferString(this.messages);
  82. }
  83. toChatMessages() {
  84. return this.messages;
  85. }
  86. }
  87. /**
  88. * Class that represents an image prompt value. It extends the
  89. * BasePromptValue and includes an ImageURL instance.
  90. */
  91. export class ImagePromptValue extends BasePromptValue {
  92. static lc_name() {
  93. return "ImagePromptValue";
  94. }
  95. constructor(fields) {
  96. if (!("imageUrl" in fields)) {
  97. // eslint-disable-next-line no-param-reassign
  98. fields = { imageUrl: fields };
  99. }
  100. super(fields);
  101. Object.defineProperty(this, "lc_namespace", {
  102. enumerable: true,
  103. configurable: true,
  104. writable: true,
  105. value: ["langchain_core", "prompt_values"]
  106. });
  107. Object.defineProperty(this, "lc_serializable", {
  108. enumerable: true,
  109. configurable: true,
  110. writable: true,
  111. value: true
  112. });
  113. Object.defineProperty(this, "imageUrl", {
  114. enumerable: true,
  115. configurable: true,
  116. writable: true,
  117. value: void 0
  118. });
  119. /** @ignore */
  120. Object.defineProperty(this, "value", {
  121. enumerable: true,
  122. configurable: true,
  123. writable: true,
  124. value: void 0
  125. });
  126. this.imageUrl = fields.imageUrl;
  127. }
  128. toString() {
  129. return this.imageUrl.url;
  130. }
  131. toChatMessages() {
  132. return [
  133. new HumanMessage({
  134. content: [
  135. {
  136. type: "image_url",
  137. image_url: {
  138. detail: this.imageUrl.detail,
  139. url: this.imageUrl.url,
  140. },
  141. },
  142. ],
  143. }),
  144. ];
  145. }
  146. }