1use std::collections::HashMap;
12use std::sync::LazyLock;
13
14pub type NamespaceMapping = HashMap<Vec<String>, Vec<String>>;
16
17pub static SERIALIZABLE_MAPPING: LazyLock<NamespaceMapping> = LazyLock::new(|| {
22 let mut map = HashMap::new();
23
24 map.insert(
26 vec![
27 "langchain".into(),
28 "schema".into(),
29 "messages".into(),
30 "AIMessage".into(),
31 ],
32 vec![
33 "langchain_core".into(),
34 "messages".into(),
35 "ai".into(),
36 "AIMessage".into(),
37 ],
38 );
39 map.insert(
40 vec![
41 "langchain".into(),
42 "schema".into(),
43 "messages".into(),
44 "AIMessageChunk".into(),
45 ],
46 vec![
47 "langchain_core".into(),
48 "messages".into(),
49 "ai".into(),
50 "AIMessageChunk".into(),
51 ],
52 );
53 map.insert(
54 vec![
55 "langchain".into(),
56 "schema".into(),
57 "messages".into(),
58 "BaseMessage".into(),
59 ],
60 vec![
61 "langchain_core".into(),
62 "messages".into(),
63 "base".into(),
64 "BaseMessage".into(),
65 ],
66 );
67 map.insert(
68 vec![
69 "langchain".into(),
70 "schema".into(),
71 "messages".into(),
72 "BaseMessageChunk".into(),
73 ],
74 vec![
75 "langchain_core".into(),
76 "messages".into(),
77 "base".into(),
78 "BaseMessageChunk".into(),
79 ],
80 );
81 map.insert(
82 vec![
83 "langchain".into(),
84 "schema".into(),
85 "messages".into(),
86 "ChatMessage".into(),
87 ],
88 vec![
89 "langchain_core".into(),
90 "messages".into(),
91 "chat".into(),
92 "ChatMessage".into(),
93 ],
94 );
95 map.insert(
96 vec![
97 "langchain".into(),
98 "schema".into(),
99 "messages".into(),
100 "FunctionMessage".into(),
101 ],
102 vec![
103 "langchain_core".into(),
104 "messages".into(),
105 "function".into(),
106 "FunctionMessage".into(),
107 ],
108 );
109 map.insert(
110 vec![
111 "langchain".into(),
112 "schema".into(),
113 "messages".into(),
114 "HumanMessage".into(),
115 ],
116 vec![
117 "langchain_core".into(),
118 "messages".into(),
119 "human".into(),
120 "HumanMessage".into(),
121 ],
122 );
123 map.insert(
124 vec![
125 "langchain".into(),
126 "schema".into(),
127 "messages".into(),
128 "SystemMessage".into(),
129 ],
130 vec![
131 "langchain_core".into(),
132 "messages".into(),
133 "system".into(),
134 "SystemMessage".into(),
135 ],
136 );
137 map.insert(
138 vec![
139 "langchain".into(),
140 "schema".into(),
141 "messages".into(),
142 "ToolMessage".into(),
143 ],
144 vec![
145 "langchain_core".into(),
146 "messages".into(),
147 "tool".into(),
148 "ToolMessage".into(),
149 ],
150 );
151 map.insert(
152 vec![
153 "langchain".into(),
154 "schema".into(),
155 "messages".into(),
156 "RemoveMessage".into(),
157 ],
158 vec![
159 "langchain_core".into(),
160 "messages".into(),
161 "modifier".into(),
162 "RemoveMessage".into(),
163 ],
164 );
165
166 map.insert(
168 vec![
169 "langchain".into(),
170 "schema".into(),
171 "agent".into(),
172 "AgentAction".into(),
173 ],
174 vec![
175 "langchain_core".into(),
176 "agents".into(),
177 "AgentAction".into(),
178 ],
179 );
180 map.insert(
181 vec![
182 "langchain".into(),
183 "schema".into(),
184 "agent".into(),
185 "AgentFinish".into(),
186 ],
187 vec![
188 "langchain_core".into(),
189 "agents".into(),
190 "AgentFinish".into(),
191 ],
192 );
193
194 map.insert(
196 vec![
197 "langchain".into(),
198 "schema".into(),
199 "prompt_template".into(),
200 "BasePromptTemplate".into(),
201 ],
202 vec![
203 "langchain_core".into(),
204 "prompts".into(),
205 "base".into(),
206 "BasePromptTemplate".into(),
207 ],
208 );
209 map.insert(
210 vec![
211 "langchain".into(),
212 "prompts".into(),
213 "prompt".into(),
214 "PromptTemplate".into(),
215 ],
216 vec![
217 "langchain_core".into(),
218 "prompts".into(),
219 "prompt".into(),
220 "PromptTemplate".into(),
221 ],
222 );
223 map.insert(
224 vec![
225 "langchain".into(),
226 "prompts".into(),
227 "chat".into(),
228 "MessagesPlaceholder".into(),
229 ],
230 vec![
231 "langchain_core".into(),
232 "prompts".into(),
233 "chat".into(),
234 "MessagesPlaceholder".into(),
235 ],
236 );
237 map.insert(
238 vec![
239 "langchain".into(),
240 "prompts".into(),
241 "chat".into(),
242 "ChatPromptTemplate".into(),
243 ],
244 vec![
245 "langchain_core".into(),
246 "prompts".into(),
247 "chat".into(),
248 "ChatPromptTemplate".into(),
249 ],
250 );
251 map.insert(
252 vec![
253 "langchain".into(),
254 "prompts".into(),
255 "chat".into(),
256 "HumanMessagePromptTemplate".into(),
257 ],
258 vec![
259 "langchain_core".into(),
260 "prompts".into(),
261 "chat".into(),
262 "HumanMessagePromptTemplate".into(),
263 ],
264 );
265 map.insert(
266 vec![
267 "langchain".into(),
268 "prompts".into(),
269 "chat".into(),
270 "SystemMessagePromptTemplate".into(),
271 ],
272 vec![
273 "langchain_core".into(),
274 "prompts".into(),
275 "chat".into(),
276 "SystemMessagePromptTemplate".into(),
277 ],
278 );
279 map.insert(
280 vec![
281 "langchain".into(),
282 "prompts".into(),
283 "image".into(),
284 "ImagePromptTemplate".into(),
285 ],
286 vec![
287 "langchain_core".into(),
288 "prompts".into(),
289 "image".into(),
290 "ImagePromptTemplate".into(),
291 ],
292 );
293 map.insert(
294 vec![
295 "langchain".into(),
296 "prompts".into(),
297 "chat".into(),
298 "AIMessagePromptTemplate".into(),
299 ],
300 vec![
301 "langchain_core".into(),
302 "prompts".into(),
303 "chat".into(),
304 "AIMessagePromptTemplate".into(),
305 ],
306 );
307 map.insert(
308 vec![
309 "langchain".into(),
310 "prompts".into(),
311 "chat".into(),
312 "BaseMessagePromptTemplate".into(),
313 ],
314 vec![
315 "langchain_core".into(),
316 "prompts".into(),
317 "chat".into(),
318 "BaseMessagePromptTemplate".into(),
319 ],
320 );
321 map.insert(
322 vec![
323 "langchain".into(),
324 "schema".into(),
325 "agent".into(),
326 "AgentActionMessageLog".into(),
327 ],
328 vec![
329 "langchain_core".into(),
330 "agents".into(),
331 "AgentActionMessageLog".into(),
332 ],
333 );
334
335 map.insert(
337 vec![
338 "langchain".into(),
339 "schema".into(),
340 "output".into(),
341 "ChatGeneration".into(),
342 ],
343 vec![
344 "langchain_core".into(),
345 "outputs".into(),
346 "chat_generation".into(),
347 "ChatGeneration".into(),
348 ],
349 );
350 map.insert(
351 vec![
352 "langchain".into(),
353 "schema".into(),
354 "output".into(),
355 "Generation".into(),
356 ],
357 vec![
358 "langchain_core".into(),
359 "outputs".into(),
360 "generation".into(),
361 "Generation".into(),
362 ],
363 );
364 map.insert(
365 vec![
366 "langchain".into(),
367 "schema".into(),
368 "output".into(),
369 "ChatGenerationChunk".into(),
370 ],
371 vec![
372 "langchain_core".into(),
373 "outputs".into(),
374 "chat_generation".into(),
375 "ChatGenerationChunk".into(),
376 ],
377 );
378 map.insert(
379 vec![
380 "langchain".into(),
381 "schema".into(),
382 "output".into(),
383 "GenerationChunk".into(),
384 ],
385 vec![
386 "langchain_core".into(),
387 "outputs".into(),
388 "generation".into(),
389 "GenerationChunk".into(),
390 ],
391 );
392
393 map.insert(
395 vec![
396 "langchain".into(),
397 "schema".into(),
398 "document".into(),
399 "Document".into(),
400 ],
401 vec![
402 "langchain_core".into(),
403 "documents".into(),
404 "base".into(),
405 "Document".into(),
406 ],
407 );
408
409 map.insert(
411 vec![
412 "langchain".into(),
413 "schema".into(),
414 "runnable".into(),
415 "DynamicRunnable".into(),
416 ],
417 vec![
418 "langchain_core".into(),
419 "runnables".into(),
420 "configurable".into(),
421 "DynamicRunnable".into(),
422 ],
423 );
424 map.insert(
425 vec![
426 "langchain".into(),
427 "schema".into(),
428 "prompt".into(),
429 "PromptValue".into(),
430 ],
431 vec![
432 "langchain_core".into(),
433 "prompt_values".into(),
434 "PromptValue".into(),
435 ],
436 );
437 map.insert(
438 vec![
439 "langchain".into(),
440 "schema".into(),
441 "runnable".into(),
442 "RunnableBinding".into(),
443 ],
444 vec![
445 "langchain_core".into(),
446 "runnables".into(),
447 "base".into(),
448 "RunnableBinding".into(),
449 ],
450 );
451 map.insert(
452 vec![
453 "langchain".into(),
454 "schema".into(),
455 "runnable".into(),
456 "RunnableBranch".into(),
457 ],
458 vec![
459 "langchain_core".into(),
460 "runnables".into(),
461 "branch".into(),
462 "RunnableBranch".into(),
463 ],
464 );
465 map.insert(
466 vec![
467 "langchain".into(),
468 "schema".into(),
469 "runnable".into(),
470 "RunnableWithFallbacks".into(),
471 ],
472 vec![
473 "langchain_core".into(),
474 "runnables".into(),
475 "fallbacks".into(),
476 "RunnableWithFallbacks".into(),
477 ],
478 );
479 map.insert(
480 vec![
481 "langchain".into(),
482 "schema".into(),
483 "runnable".into(),
484 "RunnableParallel".into(),
485 ],
486 vec![
487 "langchain_core".into(),
488 "runnables".into(),
489 "base".into(),
490 "RunnableParallel".into(),
491 ],
492 );
493 map.insert(
494 vec![
495 "langchain".into(),
496 "schema".into(),
497 "runnable".into(),
498 "RunnableSequence".into(),
499 ],
500 vec![
501 "langchain_core".into(),
502 "runnables".into(),
503 "base".into(),
504 "RunnableSequence".into(),
505 ],
506 );
507 map.insert(
508 vec![
509 "langchain".into(),
510 "schema".into(),
511 "runnable".into(),
512 "RunnablePassthrough".into(),
513 ],
514 vec![
515 "langchain_core".into(),
516 "runnables".into(),
517 "passthrough".into(),
518 "RunnablePassthrough".into(),
519 ],
520 );
521 map.insert(
522 vec![
523 "langchain".into(),
524 "schema".into(),
525 "runnable".into(),
526 "RunnableAssign".into(),
527 ],
528 vec![
529 "langchain_core".into(),
530 "runnables".into(),
531 "passthrough".into(),
532 "RunnableAssign".into(),
533 ],
534 );
535 map.insert(
536 vec![
537 "langchain".into(),
538 "schema".into(),
539 "runnable".into(),
540 "RunnableEach".into(),
541 ],
542 vec![
543 "langchain_core".into(),
544 "runnables".into(),
545 "base".into(),
546 "RunnableEach".into(),
547 ],
548 );
549 map.insert(
550 vec![
551 "langchain".into(),
552 "schema".into(),
553 "runnable".into(),
554 "RunnableRetry".into(),
555 ],
556 vec![
557 "langchain_core".into(),
558 "runnables".into(),
559 "retry".into(),
560 "RunnableRetry".into(),
561 ],
562 );
563 map.insert(
564 vec![
565 "langchain".into(),
566 "schema".into(),
567 "runnable".into(),
568 "RouterRunnable".into(),
569 ],
570 vec![
571 "langchain_core".into(),
572 "runnables".into(),
573 "router".into(),
574 "RouterRunnable".into(),
575 ],
576 );
577
578 map.insert(
580 vec![
581 "langchain".into(),
582 "schema".into(),
583 "output_parser".into(),
584 "StrOutputParser".into(),
585 ],
586 vec![
587 "langchain_core".into(),
588 "output_parsers".into(),
589 "string".into(),
590 "StrOutputParser".into(),
591 ],
592 );
593 map.insert(
594 vec![
595 "langchain".into(),
596 "output_parsers".into(),
597 "list".into(),
598 "CommaSeparatedListOutputParser".into(),
599 ],
600 vec![
601 "langchain_core".into(),
602 "output_parsers".into(),
603 "list".into(),
604 "CommaSeparatedListOutputParser".into(),
605 ],
606 );
607
608 map.insert(
610 vec![
611 "langchain".into(),
612 "schema".into(),
613 "messages".into(),
614 "ChatMessageChunk".into(),
615 ],
616 vec![
617 "langchain_core".into(),
618 "messages".into(),
619 "chat".into(),
620 "ChatMessageChunk".into(),
621 ],
622 );
623 map.insert(
624 vec![
625 "langchain".into(),
626 "schema".into(),
627 "messages".into(),
628 "HumanMessageChunk".into(),
629 ],
630 vec![
631 "langchain_core".into(),
632 "messages".into(),
633 "human".into(),
634 "HumanMessageChunk".into(),
635 ],
636 );
637 map.insert(
638 vec![
639 "langchain".into(),
640 "schema".into(),
641 "messages".into(),
642 "FunctionMessageChunk".into(),
643 ],
644 vec![
645 "langchain_core".into(),
646 "messages".into(),
647 "function".into(),
648 "FunctionMessageChunk".into(),
649 ],
650 );
651 map.insert(
652 vec![
653 "langchain".into(),
654 "schema".into(),
655 "messages".into(),
656 "SystemMessageChunk".into(),
657 ],
658 vec![
659 "langchain_core".into(),
660 "messages".into(),
661 "system".into(),
662 "SystemMessageChunk".into(),
663 ],
664 );
665 map.insert(
666 vec![
667 "langchain".into(),
668 "schema".into(),
669 "messages".into(),
670 "ToolMessageChunk".into(),
671 ],
672 vec![
673 "langchain_core".into(),
674 "messages".into(),
675 "tool".into(),
676 "ToolMessageChunk".into(),
677 ],
678 );
679
680 map.insert(
682 vec![
683 "langchain".into(),
684 "prompts".into(),
685 "base".into(),
686 "StringPromptTemplate".into(),
687 ],
688 vec![
689 "langchain_core".into(),
690 "prompts".into(),
691 "string".into(),
692 "StringPromptTemplate".into(),
693 ],
694 );
695 map.insert(
696 vec![
697 "langchain".into(),
698 "prompts".into(),
699 "base".into(),
700 "StringPromptValue".into(),
701 ],
702 vec![
703 "langchain_core".into(),
704 "prompt_values".into(),
705 "StringPromptValue".into(),
706 ],
707 );
708 map.insert(
709 vec![
710 "langchain".into(),
711 "prompts".into(),
712 "chat".into(),
713 "ChatPromptValue".into(),
714 ],
715 vec![
716 "langchain_core".into(),
717 "prompt_values".into(),
718 "ChatPromptValue".into(),
719 ],
720 );
721 map.insert(
722 vec![
723 "langchain".into(),
724 "prompts".into(),
725 "chat".into(),
726 "ChatPromptValueConcrete".into(),
727 ],
728 vec![
729 "langchain_core".into(),
730 "prompt_values".into(),
731 "ChatPromptValueConcrete".into(),
732 ],
733 );
734
735 map.insert(
737 vec![
738 "langchain".into(),
739 "schema".into(),
740 "prompt_template".into(),
741 "BaseChatPromptTemplate".into(),
742 ],
743 vec![
744 "langchain_core".into(),
745 "prompts".into(),
746 "chat".into(),
747 "BaseChatPromptTemplate".into(),
748 ],
749 );
750 map.insert(
751 vec![
752 "langchain".into(),
753 "prompts".into(),
754 "chat".into(),
755 "ChatMessagePromptTemplate".into(),
756 ],
757 vec![
758 "langchain_core".into(),
759 "prompts".into(),
760 "chat".into(),
761 "ChatMessagePromptTemplate".into(),
762 ],
763 );
764 map.insert(
765 vec![
766 "langchain".into(),
767 "prompts".into(),
768 "chat".into(),
769 "BaseStringMessagePromptTemplate".into(),
770 ],
771 vec![
772 "langchain_core".into(),
773 "prompts".into(),
774 "chat".into(),
775 "BaseStringMessagePromptTemplate".into(),
776 ],
777 );
778 map.insert(
779 vec![
780 "langchain".into(),
781 "prompts".into(),
782 "few_shot_with_templates".into(),
783 "FewShotPromptWithTemplates".into(),
784 ],
785 vec![
786 "langchain_core".into(),
787 "prompts".into(),
788 "few_shot_with_templates".into(),
789 "FewShotPromptWithTemplates".into(),
790 ],
791 );
792
793 map.insert(
795 vec![
796 "langchain_core".into(),
797 "prompts".into(),
798 "structured".into(),
799 "StructuredPrompt".into(),
800 ],
801 vec![
802 "langchain_core".into(),
803 "prompts".into(),
804 "structured".into(),
805 "StructuredPrompt".into(),
806 ],
807 );
808
809 map.insert(
811 vec![
812 "langchain_core".into(),
813 "prompts".into(),
814 "message".into(),
815 "_DictMessagePromptTemplate".into(),
816 ],
817 vec![
818 "langchain_core".into(),
819 "prompts".into(),
820 "dict".into(),
821 "DictPromptTemplate".into(),
822 ],
823 );
824
825 map
826});
827
828pub static OG_SERIALIZABLE_MAPPING: LazyLock<NamespaceMapping> = LazyLock::new(|| {
830 let mut map = HashMap::new();
831
832 map.insert(
833 vec!["langchain".into(), "schema".into(), "AIMessage".into()],
834 vec![
835 "langchain_core".into(),
836 "messages".into(),
837 "ai".into(),
838 "AIMessage".into(),
839 ],
840 );
841 map.insert(
842 vec!["langchain".into(), "schema".into(), "ChatMessage".into()],
843 vec![
844 "langchain_core".into(),
845 "messages".into(),
846 "chat".into(),
847 "ChatMessage".into(),
848 ],
849 );
850 map.insert(
851 vec![
852 "langchain".into(),
853 "schema".into(),
854 "FunctionMessage".into(),
855 ],
856 vec![
857 "langchain_core".into(),
858 "messages".into(),
859 "function".into(),
860 "FunctionMessage".into(),
861 ],
862 );
863 map.insert(
864 vec!["langchain".into(), "schema".into(), "HumanMessage".into()],
865 vec![
866 "langchain_core".into(),
867 "messages".into(),
868 "human".into(),
869 "HumanMessage".into(),
870 ],
871 );
872 map.insert(
873 vec!["langchain".into(), "schema".into(), "SystemMessage".into()],
874 vec![
875 "langchain_core".into(),
876 "messages".into(),
877 "system".into(),
878 "SystemMessage".into(),
879 ],
880 );
881 map.insert(
882 vec![
883 "langchain".into(),
884 "schema".into(),
885 "prompt_template".into(),
886 "ImagePromptTemplate".into(),
887 ],
888 vec![
889 "langchain_core".into(),
890 "prompts".into(),
891 "image".into(),
892 "ImagePromptTemplate".into(),
893 ],
894 );
895
896 map
897});
898
899pub static OLD_CORE_NAMESPACES_MAPPING: LazyLock<NamespaceMapping> = LazyLock::new(|| {
901 let mut map = HashMap::new();
902
903 map.insert(
905 vec![
906 "langchain_core".into(),
907 "messages".into(),
908 "ai".into(),
909 "AIMessage".into(),
910 ],
911 vec![
912 "langchain_core".into(),
913 "messages".into(),
914 "ai".into(),
915 "AIMessage".into(),
916 ],
917 );
918 map.insert(
919 vec![
920 "langchain_core".into(),
921 "messages".into(),
922 "ai".into(),
923 "AIMessageChunk".into(),
924 ],
925 vec![
926 "langchain_core".into(),
927 "messages".into(),
928 "ai".into(),
929 "AIMessageChunk".into(),
930 ],
931 );
932 map.insert(
933 vec![
934 "langchain_core".into(),
935 "messages".into(),
936 "base".into(),
937 "BaseMessage".into(),
938 ],
939 vec![
940 "langchain_core".into(),
941 "messages".into(),
942 "base".into(),
943 "BaseMessage".into(),
944 ],
945 );
946 map.insert(
947 vec![
948 "langchain_core".into(),
949 "messages".into(),
950 "base".into(),
951 "BaseMessageChunk".into(),
952 ],
953 vec![
954 "langchain_core".into(),
955 "messages".into(),
956 "base".into(),
957 "BaseMessageChunk".into(),
958 ],
959 );
960 map.insert(
961 vec![
962 "langchain_core".into(),
963 "messages".into(),
964 "chat".into(),
965 "ChatMessage".into(),
966 ],
967 vec![
968 "langchain_core".into(),
969 "messages".into(),
970 "chat".into(),
971 "ChatMessage".into(),
972 ],
973 );
974 map.insert(
975 vec![
976 "langchain_core".into(),
977 "messages".into(),
978 "function".into(),
979 "FunctionMessage".into(),
980 ],
981 vec![
982 "langchain_core".into(),
983 "messages".into(),
984 "function".into(),
985 "FunctionMessage".into(),
986 ],
987 );
988 map.insert(
989 vec![
990 "langchain_core".into(),
991 "messages".into(),
992 "human".into(),
993 "HumanMessage".into(),
994 ],
995 vec![
996 "langchain_core".into(),
997 "messages".into(),
998 "human".into(),
999 "HumanMessage".into(),
1000 ],
1001 );
1002 map.insert(
1003 vec![
1004 "langchain_core".into(),
1005 "messages".into(),
1006 "system".into(),
1007 "SystemMessage".into(),
1008 ],
1009 vec![
1010 "langchain_core".into(),
1011 "messages".into(),
1012 "system".into(),
1013 "SystemMessage".into(),
1014 ],
1015 );
1016 map.insert(
1017 vec![
1018 "langchain_core".into(),
1019 "messages".into(),
1020 "tool".into(),
1021 "ToolMessage".into(),
1022 ],
1023 vec![
1024 "langchain_core".into(),
1025 "messages".into(),
1026 "tool".into(),
1027 "ToolMessage".into(),
1028 ],
1029 );
1030
1031 map.insert(
1033 vec![
1034 "langchain_core".into(),
1035 "agents".into(),
1036 "AgentAction".into(),
1037 ],
1038 vec![
1039 "langchain_core".into(),
1040 "agents".into(),
1041 "AgentAction".into(),
1042 ],
1043 );
1044 map.insert(
1045 vec![
1046 "langchain_core".into(),
1047 "agents".into(),
1048 "AgentFinish".into(),
1049 ],
1050 vec![
1051 "langchain_core".into(),
1052 "agents".into(),
1053 "AgentFinish".into(),
1054 ],
1055 );
1056 map.insert(
1057 vec![
1058 "langchain_core".into(),
1059 "agents".into(),
1060 "AgentActionMessageLog".into(),
1061 ],
1062 vec![
1063 "langchain_core".into(),
1064 "agents".into(),
1065 "AgentActionMessageLog".into(),
1066 ],
1067 );
1068
1069 map.insert(
1071 vec![
1072 "langchain_core".into(),
1073 "prompts".into(),
1074 "base".into(),
1075 "BasePromptTemplate".into(),
1076 ],
1077 vec![
1078 "langchain_core".into(),
1079 "prompts".into(),
1080 "base".into(),
1081 "BasePromptTemplate".into(),
1082 ],
1083 );
1084 map.insert(
1085 vec![
1086 "langchain_core".into(),
1087 "prompts".into(),
1088 "prompt".into(),
1089 "PromptTemplate".into(),
1090 ],
1091 vec![
1092 "langchain_core".into(),
1093 "prompts".into(),
1094 "prompt".into(),
1095 "PromptTemplate".into(),
1096 ],
1097 );
1098 map.insert(
1099 vec![
1100 "langchain_core".into(),
1101 "prompts".into(),
1102 "chat".into(),
1103 "MessagesPlaceholder".into(),
1104 ],
1105 vec![
1106 "langchain_core".into(),
1107 "prompts".into(),
1108 "chat".into(),
1109 "MessagesPlaceholder".into(),
1110 ],
1111 );
1112 map.insert(
1113 vec![
1114 "langchain_core".into(),
1115 "prompts".into(),
1116 "chat".into(),
1117 "ChatPromptTemplate".into(),
1118 ],
1119 vec![
1120 "langchain_core".into(),
1121 "prompts".into(),
1122 "chat".into(),
1123 "ChatPromptTemplate".into(),
1124 ],
1125 );
1126 map.insert(
1127 vec![
1128 "langchain_core".into(),
1129 "prompts".into(),
1130 "chat".into(),
1131 "HumanMessagePromptTemplate".into(),
1132 ],
1133 vec![
1134 "langchain_core".into(),
1135 "prompts".into(),
1136 "chat".into(),
1137 "HumanMessagePromptTemplate".into(),
1138 ],
1139 );
1140 map.insert(
1141 vec![
1142 "langchain_core".into(),
1143 "prompts".into(),
1144 "chat".into(),
1145 "SystemMessagePromptTemplate".into(),
1146 ],
1147 vec![
1148 "langchain_core".into(),
1149 "prompts".into(),
1150 "chat".into(),
1151 "SystemMessagePromptTemplate".into(),
1152 ],
1153 );
1154 map.insert(
1155 vec![
1156 "langchain_core".into(),
1157 "prompts".into(),
1158 "chat".into(),
1159 "AIMessagePromptTemplate".into(),
1160 ],
1161 vec![
1162 "langchain_core".into(),
1163 "prompts".into(),
1164 "chat".into(),
1165 "AIMessagePromptTemplate".into(),
1166 ],
1167 );
1168 map.insert(
1169 vec![
1170 "langchain_core".into(),
1171 "prompts".into(),
1172 "chat".into(),
1173 "BaseMessagePromptTemplate".into(),
1174 ],
1175 vec![
1176 "langchain_core".into(),
1177 "prompts".into(),
1178 "chat".into(),
1179 "BaseMessagePromptTemplate".into(),
1180 ],
1181 );
1182 map.insert(
1183 vec![
1184 "langchain_core".into(),
1185 "prompts".into(),
1186 "chat".into(),
1187 "BaseChatPromptTemplate".into(),
1188 ],
1189 vec![
1190 "langchain_core".into(),
1191 "prompts".into(),
1192 "chat".into(),
1193 "BaseChatPromptTemplate".into(),
1194 ],
1195 );
1196 map.insert(
1197 vec![
1198 "langchain_core".into(),
1199 "prompts".into(),
1200 "chat".into(),
1201 "ChatMessagePromptTemplate".into(),
1202 ],
1203 vec![
1204 "langchain_core".into(),
1205 "prompts".into(),
1206 "chat".into(),
1207 "ChatMessagePromptTemplate".into(),
1208 ],
1209 );
1210 map.insert(
1211 vec![
1212 "langchain_core".into(),
1213 "prompts".into(),
1214 "chat".into(),
1215 "BaseStringMessagePromptTemplate".into(),
1216 ],
1217 vec![
1218 "langchain_core".into(),
1219 "prompts".into(),
1220 "chat".into(),
1221 "BaseStringMessagePromptTemplate".into(),
1222 ],
1223 );
1224 map.insert(
1225 vec![
1226 "langchain_core".into(),
1227 "prompts".into(),
1228 "string".into(),
1229 "StringPromptTemplate".into(),
1230 ],
1231 vec![
1232 "langchain_core".into(),
1233 "prompts".into(),
1234 "string".into(),
1235 "StringPromptTemplate".into(),
1236 ],
1237 );
1238 map.insert(
1239 vec![
1240 "langchain_core".into(),
1241 "prompts".into(),
1242 "few_shot_with_templates".into(),
1243 "FewShotPromptWithTemplates".into(),
1244 ],
1245 vec![
1246 "langchain_core".into(),
1247 "prompts".into(),
1248 "few_shot_with_templates".into(),
1249 "FewShotPromptWithTemplates".into(),
1250 ],
1251 );
1252
1253 map.insert(
1255 vec![
1256 "langchain_core".into(),
1257 "outputs".into(),
1258 "chat_generation".into(),
1259 "ChatGeneration".into(),
1260 ],
1261 vec![
1262 "langchain_core".into(),
1263 "outputs".into(),
1264 "chat_generation".into(),
1265 "ChatGeneration".into(),
1266 ],
1267 );
1268 map.insert(
1269 vec![
1270 "langchain_core".into(),
1271 "outputs".into(),
1272 "generation".into(),
1273 "Generation".into(),
1274 ],
1275 vec![
1276 "langchain_core".into(),
1277 "outputs".into(),
1278 "generation".into(),
1279 "Generation".into(),
1280 ],
1281 );
1282 map.insert(
1283 vec![
1284 "langchain_core".into(),
1285 "outputs".into(),
1286 "chat_generation".into(),
1287 "ChatGenerationChunk".into(),
1288 ],
1289 vec![
1290 "langchain_core".into(),
1291 "outputs".into(),
1292 "chat_generation".into(),
1293 "ChatGenerationChunk".into(),
1294 ],
1295 );
1296 map.insert(
1297 vec![
1298 "langchain_core".into(),
1299 "outputs".into(),
1300 "generation".into(),
1301 "GenerationChunk".into(),
1302 ],
1303 vec![
1304 "langchain_core".into(),
1305 "outputs".into(),
1306 "generation".into(),
1307 "GenerationChunk".into(),
1308 ],
1309 );
1310
1311 map.insert(
1313 vec![
1314 "langchain_core".into(),
1315 "documents".into(),
1316 "base".into(),
1317 "Document".into(),
1318 ],
1319 vec![
1320 "langchain_core".into(),
1321 "documents".into(),
1322 "base".into(),
1323 "Document".into(),
1324 ],
1325 );
1326
1327 map.insert(
1329 vec![
1330 "langchain_core".into(),
1331 "prompt_values".into(),
1332 "PromptValue".into(),
1333 ],
1334 vec![
1335 "langchain_core".into(),
1336 "prompt_values".into(),
1337 "PromptValue".into(),
1338 ],
1339 );
1340 map.insert(
1341 vec![
1342 "langchain_core".into(),
1343 "prompt_values".into(),
1344 "StringPromptValue".into(),
1345 ],
1346 vec![
1347 "langchain_core".into(),
1348 "prompt_values".into(),
1349 "StringPromptValue".into(),
1350 ],
1351 );
1352 map.insert(
1353 vec![
1354 "langchain_core".into(),
1355 "prompt_values".into(),
1356 "ChatPromptValue".into(),
1357 ],
1358 vec![
1359 "langchain_core".into(),
1360 "prompt_values".into(),
1361 "ChatPromptValue".into(),
1362 ],
1363 );
1364 map.insert(
1365 vec![
1366 "langchain_core".into(),
1367 "prompt_values".into(),
1368 "ChatPromptValueConcrete".into(),
1369 ],
1370 vec![
1371 "langchain_core".into(),
1372 "prompt_values".into(),
1373 "ChatPromptValueConcrete".into(),
1374 ],
1375 );
1376
1377 map.insert(
1379 vec![
1380 "langchain_core".into(),
1381 "runnables".into(),
1382 "configurable".into(),
1383 "DynamicRunnable".into(),
1384 ],
1385 vec![
1386 "langchain_core".into(),
1387 "runnables".into(),
1388 "configurable".into(),
1389 "DynamicRunnable".into(),
1390 ],
1391 );
1392 map.insert(
1393 vec![
1394 "langchain_core".into(),
1395 "runnables".into(),
1396 "base".into(),
1397 "RunnableBinding".into(),
1398 ],
1399 vec![
1400 "langchain_core".into(),
1401 "runnables".into(),
1402 "base".into(),
1403 "RunnableBinding".into(),
1404 ],
1405 );
1406 map.insert(
1407 vec![
1408 "langchain_core".into(),
1409 "runnables".into(),
1410 "branch".into(),
1411 "RunnableBranch".into(),
1412 ],
1413 vec![
1414 "langchain_core".into(),
1415 "runnables".into(),
1416 "branch".into(),
1417 "RunnableBranch".into(),
1418 ],
1419 );
1420 map.insert(
1421 vec![
1422 "langchain_core".into(),
1423 "runnables".into(),
1424 "fallbacks".into(),
1425 "RunnableWithFallbacks".into(),
1426 ],
1427 vec![
1428 "langchain_core".into(),
1429 "runnables".into(),
1430 "fallbacks".into(),
1431 "RunnableWithFallbacks".into(),
1432 ],
1433 );
1434 map.insert(
1435 vec![
1436 "langchain_core".into(),
1437 "runnables".into(),
1438 "base".into(),
1439 "RunnableParallel".into(),
1440 ],
1441 vec![
1442 "langchain_core".into(),
1443 "runnables".into(),
1444 "base".into(),
1445 "RunnableParallel".into(),
1446 ],
1447 );
1448 map.insert(
1449 vec![
1450 "langchain_core".into(),
1451 "runnables".into(),
1452 "base".into(),
1453 "RunnableSequence".into(),
1454 ],
1455 vec![
1456 "langchain_core".into(),
1457 "runnables".into(),
1458 "base".into(),
1459 "RunnableSequence".into(),
1460 ],
1461 );
1462 map.insert(
1463 vec![
1464 "langchain_core".into(),
1465 "runnables".into(),
1466 "base".into(),
1467 "RunnableBindingBase".into(),
1468 ],
1469 vec![
1470 "langchain_core".into(),
1471 "runnables".into(),
1472 "base".into(),
1473 "RunnableBindingBase".into(),
1474 ],
1475 );
1476 map.insert(
1477 vec![
1478 "langchain_core".into(),
1479 "runnables".into(),
1480 "base".into(),
1481 "RunnableEach".into(),
1482 ],
1483 vec![
1484 "langchain_core".into(),
1485 "runnables".into(),
1486 "base".into(),
1487 "RunnableEach".into(),
1488 ],
1489 );
1490 map.insert(
1491 vec![
1492 "langchain_core".into(),
1493 "runnables".into(),
1494 "base".into(),
1495 "RunnableEachBase".into(),
1496 ],
1497 vec![
1498 "langchain_core".into(),
1499 "runnables".into(),
1500 "base".into(),
1501 "RunnableEachBase".into(),
1502 ],
1503 );
1504 map.insert(
1505 vec![
1506 "langchain_core".into(),
1507 "runnables".into(),
1508 "passthrough".into(),
1509 "RunnablePassthrough".into(),
1510 ],
1511 vec![
1512 "langchain_core".into(),
1513 "runnables".into(),
1514 "passthrough".into(),
1515 "RunnablePassthrough".into(),
1516 ],
1517 );
1518 map.insert(
1519 vec![
1520 "langchain_core".into(),
1521 "runnables".into(),
1522 "passthrough".into(),
1523 "RunnableAssign".into(),
1524 ],
1525 vec![
1526 "langchain_core".into(),
1527 "runnables".into(),
1528 "passthrough".into(),
1529 "RunnableAssign".into(),
1530 ],
1531 );
1532 map.insert(
1533 vec![
1534 "langchain_core".into(),
1535 "runnables".into(),
1536 "router".into(),
1537 "RouterRunnable".into(),
1538 ],
1539 vec![
1540 "langchain_core".into(),
1541 "runnables".into(),
1542 "router".into(),
1543 "RouterRunnable".into(),
1544 ],
1545 );
1546 map.insert(
1547 vec![
1548 "langchain_core".into(),
1549 "runnables".into(),
1550 "retry".into(),
1551 "RunnableRetry".into(),
1552 ],
1553 vec![
1554 "langchain_core".into(),
1555 "runnables".into(),
1556 "retry".into(),
1557 "RunnableRetry".into(),
1558 ],
1559 );
1560 map.insert(
1561 vec![
1562 "langchain_core".into(),
1563 "runnables".into(),
1564 "configurable".into(),
1565 "RunnableConfigurableAlternatives".into(),
1566 ],
1567 vec![
1568 "langchain_core".into(),
1569 "runnables".into(),
1570 "configurable".into(),
1571 "RunnableConfigurableAlternatives".into(),
1572 ],
1573 );
1574 map.insert(
1575 vec![
1576 "langchain_core".into(),
1577 "runnables".into(),
1578 "configurable".into(),
1579 "RunnableConfigurableFields".into(),
1580 ],
1581 vec![
1582 "langchain_core".into(),
1583 "runnables".into(),
1584 "configurable".into(),
1585 "RunnableConfigurableFields".into(),
1586 ],
1587 );
1588 map.insert(
1589 vec![
1590 "langchain_core".into(),
1591 "runnables".into(),
1592 "history".into(),
1593 "RunnableWithMessageHistory".into(),
1594 ],
1595 vec![
1596 "langchain_core".into(),
1597 "runnables".into(),
1598 "history".into(),
1599 "RunnableWithMessageHistory".into(),
1600 ],
1601 );
1602
1603 map.insert(
1605 vec![
1606 "langchain_core".into(),
1607 "output_parsers".into(),
1608 "string".into(),
1609 "StrOutputParser".into(),
1610 ],
1611 vec![
1612 "langchain_core".into(),
1613 "output_parsers".into(),
1614 "string".into(),
1615 "StrOutputParser".into(),
1616 ],
1617 );
1618 map.insert(
1619 vec![
1620 "langchain_core".into(),
1621 "output_parsers".into(),
1622 "list".into(),
1623 "CommaSeparatedListOutputParser".into(),
1624 ],
1625 vec![
1626 "langchain_core".into(),
1627 "output_parsers".into(),
1628 "list".into(),
1629 "CommaSeparatedListOutputParser".into(),
1630 ],
1631 );
1632
1633 map.insert(
1635 vec![
1636 "langchain_core".into(),
1637 "messages".into(),
1638 "chat".into(),
1639 "ChatMessageChunk".into(),
1640 ],
1641 vec![
1642 "langchain_core".into(),
1643 "messages".into(),
1644 "chat".into(),
1645 "ChatMessageChunk".into(),
1646 ],
1647 );
1648 map.insert(
1649 vec![
1650 "langchain_core".into(),
1651 "messages".into(),
1652 "human".into(),
1653 "HumanMessageChunk".into(),
1654 ],
1655 vec![
1656 "langchain_core".into(),
1657 "messages".into(),
1658 "human".into(),
1659 "HumanMessageChunk".into(),
1660 ],
1661 );
1662 map.insert(
1663 vec![
1664 "langchain_core".into(),
1665 "messages".into(),
1666 "function".into(),
1667 "FunctionMessageChunk".into(),
1668 ],
1669 vec![
1670 "langchain_core".into(),
1671 "messages".into(),
1672 "function".into(),
1673 "FunctionMessageChunk".into(),
1674 ],
1675 );
1676 map.insert(
1677 vec![
1678 "langchain_core".into(),
1679 "messages".into(),
1680 "system".into(),
1681 "SystemMessageChunk".into(),
1682 ],
1683 vec![
1684 "langchain_core".into(),
1685 "messages".into(),
1686 "system".into(),
1687 "SystemMessageChunk".into(),
1688 ],
1689 );
1690 map.insert(
1691 vec![
1692 "langchain_core".into(),
1693 "messages".into(),
1694 "tool".into(),
1695 "ToolMessageChunk".into(),
1696 ],
1697 vec![
1698 "langchain_core".into(),
1699 "messages".into(),
1700 "tool".into(),
1701 "ToolMessageChunk".into(),
1702 ],
1703 );
1704
1705 map
1706});
1707
1708pub static JS_SERIALIZABLE_MAPPING: LazyLock<NamespaceMapping> = LazyLock::new(|| {
1710 let mut map = HashMap::new();
1711
1712 map.insert(
1714 vec![
1715 "langchain_core".into(),
1716 "messages".into(),
1717 "AIMessage".into(),
1718 ],
1719 vec![
1720 "langchain_core".into(),
1721 "messages".into(),
1722 "ai".into(),
1723 "AIMessage".into(),
1724 ],
1725 );
1726 map.insert(
1727 vec![
1728 "langchain_core".into(),
1729 "messages".into(),
1730 "AIMessageChunk".into(),
1731 ],
1732 vec![
1733 "langchain_core".into(),
1734 "messages".into(),
1735 "ai".into(),
1736 "AIMessageChunk".into(),
1737 ],
1738 );
1739 map.insert(
1740 vec![
1741 "langchain_core".into(),
1742 "messages".into(),
1743 "BaseMessage".into(),
1744 ],
1745 vec![
1746 "langchain_core".into(),
1747 "messages".into(),
1748 "base".into(),
1749 "BaseMessage".into(),
1750 ],
1751 );
1752 map.insert(
1753 vec![
1754 "langchain_core".into(),
1755 "messages".into(),
1756 "BaseMessageChunk".into(),
1757 ],
1758 vec![
1759 "langchain_core".into(),
1760 "messages".into(),
1761 "base".into(),
1762 "BaseMessageChunk".into(),
1763 ],
1764 );
1765 map.insert(
1766 vec![
1767 "langchain_core".into(),
1768 "messages".into(),
1769 "ChatMessage".into(),
1770 ],
1771 vec![
1772 "langchain_core".into(),
1773 "messages".into(),
1774 "chat".into(),
1775 "ChatMessage".into(),
1776 ],
1777 );
1778 map.insert(
1779 vec![
1780 "langchain_core".into(),
1781 "messages".into(),
1782 "ChatMessageChunk".into(),
1783 ],
1784 vec![
1785 "langchain_core".into(),
1786 "messages".into(),
1787 "chat".into(),
1788 "ChatMessageChunk".into(),
1789 ],
1790 );
1791 map.insert(
1792 vec![
1793 "langchain_core".into(),
1794 "messages".into(),
1795 "FunctionMessage".into(),
1796 ],
1797 vec![
1798 "langchain_core".into(),
1799 "messages".into(),
1800 "function".into(),
1801 "FunctionMessage".into(),
1802 ],
1803 );
1804 map.insert(
1805 vec![
1806 "langchain_core".into(),
1807 "messages".into(),
1808 "FunctionMessageChunk".into(),
1809 ],
1810 vec![
1811 "langchain_core".into(),
1812 "messages".into(),
1813 "function".into(),
1814 "FunctionMessageChunk".into(),
1815 ],
1816 );
1817 map.insert(
1818 vec![
1819 "langchain_core".into(),
1820 "messages".into(),
1821 "HumanMessage".into(),
1822 ],
1823 vec![
1824 "langchain_core".into(),
1825 "messages".into(),
1826 "human".into(),
1827 "HumanMessage".into(),
1828 ],
1829 );
1830 map.insert(
1831 vec![
1832 "langchain_core".into(),
1833 "messages".into(),
1834 "HumanMessageChunk".into(),
1835 ],
1836 vec![
1837 "langchain_core".into(),
1838 "messages".into(),
1839 "human".into(),
1840 "HumanMessageChunk".into(),
1841 ],
1842 );
1843 map.insert(
1844 vec![
1845 "langchain_core".into(),
1846 "messages".into(),
1847 "SystemMessage".into(),
1848 ],
1849 vec![
1850 "langchain_core".into(),
1851 "messages".into(),
1852 "system".into(),
1853 "SystemMessage".into(),
1854 ],
1855 );
1856 map.insert(
1857 vec![
1858 "langchain_core".into(),
1859 "messages".into(),
1860 "SystemMessageChunk".into(),
1861 ],
1862 vec![
1863 "langchain_core".into(),
1864 "messages".into(),
1865 "system".into(),
1866 "SystemMessageChunk".into(),
1867 ],
1868 );
1869 map.insert(
1870 vec![
1871 "langchain_core".into(),
1872 "messages".into(),
1873 "ToolMessage".into(),
1874 ],
1875 vec![
1876 "langchain_core".into(),
1877 "messages".into(),
1878 "tool".into(),
1879 "ToolMessage".into(),
1880 ],
1881 );
1882 map.insert(
1883 vec![
1884 "langchain_core".into(),
1885 "messages".into(),
1886 "ToolMessageChunk".into(),
1887 ],
1888 vec![
1889 "langchain_core".into(),
1890 "messages".into(),
1891 "tool".into(),
1892 "ToolMessageChunk".into(),
1893 ],
1894 );
1895 map.insert(
1896 vec![
1897 "langchain_core".into(),
1898 "prompts".into(),
1899 "image".into(),
1900 "ImagePromptTemplate".into(),
1901 ],
1902 vec![
1903 "langchain_core".into(),
1904 "prompts".into(),
1905 "image".into(),
1906 "ImagePromptTemplate".into(),
1907 ],
1908 );
1909
1910 map
1911});
1912
1913pub fn get_all_serializable_mappings() -> NamespaceMapping {
1915 let mut combined = HashMap::new();
1916 combined.extend(SERIALIZABLE_MAPPING.clone());
1917 combined.extend(OLD_CORE_NAMESPACES_MAPPING.clone());
1918 combined.extend(OG_SERIALIZABLE_MAPPING.clone());
1919 combined.extend(JS_SERIALIZABLE_MAPPING.clone());
1920 combined
1921}
1922
1923pub const DEFAULT_NAMESPACES: &[&str] = &[
1925 "langchain",
1926 "langchain_core",
1927 "langchain_community",
1928 "langchain_anthropic",
1929 "langchain_groq",
1930 "langchain_google_genai",
1931 "langchain_aws",
1932 "langchain_openai",
1933 "langchain_google_vertexai",
1934 "langchain_mistralai",
1935 "langchain_fireworks",
1936 "langchain_xai",
1937 "langchain_sambanova",
1938 "langchain_perplexity",
1939];
1940
1941pub const DISALLOW_LOAD_FROM_PATH: &[&str] = &["langchain_community", "langchain"];
1944
1945#[cfg(test)]
1946mod tests {
1947 use super::*;
1948
1949 #[test]
1950 fn test_serializable_mapping_exists() {
1951 assert!(!SERIALIZABLE_MAPPING.is_empty());
1952 }
1953
1954 #[test]
1955 fn test_ai_message_mapping() {
1956 let key = vec![
1957 "langchain".to_string(),
1958 "schema".to_string(),
1959 "messages".to_string(),
1960 "AIMessage".to_string(),
1961 ];
1962 let expected = vec![
1963 "langchain_core".to_string(),
1964 "messages".to_string(),
1965 "ai".to_string(),
1966 "AIMessage".to_string(),
1967 ];
1968 assert_eq!(SERIALIZABLE_MAPPING.get(&key), Some(&expected));
1969 }
1970
1971 #[test]
1972 fn test_default_namespaces() {
1973 assert!(DEFAULT_NAMESPACES.contains(&"langchain_core"));
1974 assert!(DEFAULT_NAMESPACES.contains(&"langchain_openai"));
1975 }
1976
1977 #[test]
1978 fn test_disallow_load_from_path() {
1979 assert!(DISALLOW_LOAD_FROM_PATH.contains(&"langchain_community"));
1980 assert!(DISALLOW_LOAD_FROM_PATH.contains(&"langchain"));
1981 }
1982
1983 #[test]
1984 fn test_combined_mappings() {
1985 let combined = get_all_serializable_mappings();
1986 assert!(!combined.is_empty());
1987 assert!(combined.len() >= SERIALIZABLE_MAPPING.len());
1988 }
1989}