1
+ const { whatis } = require ( "../../../util/langutil" ) ;
2
+
3
+ module . exports = class Messages {
4
+ static normalize_single_message ( message , params = { } ) {
5
+ params = Object . assign ( {
6
+ role : 'user' ,
7
+ } , params ) ;
8
+
9
+ if ( typeof message === 'string' ) {
10
+ message = {
11
+ content : [ message ] ,
12
+ } ;
13
+ }
14
+ if ( whatis ( message ) !== 'object' ) {
15
+ throw new Error ( 'each message must be a string or object' ) ;
16
+ }
17
+ if ( ! message . role ) {
18
+ message . role = params . role ;
19
+ }
20
+ if ( ! message . content ) {
21
+ throw new Error ( `each message must have a 'content' property` ) ;
22
+ }
23
+ if ( whatis ( message . content ) !== 'array' ) {
24
+ message . content = [ message . content ] ;
25
+ }
26
+ for ( let i = 0 ; i < message . content . length ; i ++ ) {
27
+ if ( whatis ( message . content [ i ] ) === 'string' ) {
28
+ message . content [ i ] = {
29
+ type : 'text' ,
30
+ text : message . content [ i ] ,
31
+ } ;
32
+ }
33
+ if ( whatis ( message . content [ i ] ) !== 'object' ) {
34
+ throw new Error ( 'each message content item must be a string or object' ) ;
35
+ }
36
+ if ( ! message . content [ i ] . type ) {
37
+ message . content [ i ] . type = 'text' ;
38
+ }
39
+ }
40
+
41
+ console . log ( '???' , message )
42
+ return message ;
43
+ }
44
+ static normalize_messages ( messages , params = { } ) {
45
+ for ( let i = 0 ; i < messages . length ; i ++ ) {
46
+ messages [ i ] = this . normalize_single_message ( messages [ i ] , params ) ;
47
+ }
48
+ }
49
+ }
0 commit comments