File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 2
2
using System . Collections . Generic ;
3
3
using System . Collections . ObjectModel ;
4
4
using System . Linq ;
5
+ using System . Text ;
5
6
6
7
namespace OpenAI . Chat ;
7
8
@@ -36,4 +37,56 @@ internal bool IsInnerCollectionDefined()
36
37
{
37
38
return ! ( Items is ChangeTrackingList < ChatMessageContentPart > changeTrackingList && changeTrackingList . IsUndefined ) ;
38
39
}
40
+
41
+ /// <summary>
42
+ /// Returns a string representation of the chat message content by iterating through all content parts.
43
+ /// </summary>
44
+ /// <returns>A formatted string representation of all content parts.</returns>
45
+ public override string ToString ( )
46
+ {
47
+ StringBuilder builder = new ( ) ;
48
+
49
+ if ( Count == 0 )
50
+ {
51
+ return "<empty content>" ;
52
+ }
53
+
54
+ for ( int i = 0 ; i < Count ; i ++ )
55
+ {
56
+ if ( i > 0 ) {
57
+ builder . AppendLine ( ) ;
58
+ }
59
+
60
+ var part = this [ i ] ;
61
+ switch ( part . Kind )
62
+ {
63
+ case ChatMessageContentPartKind . Text :
64
+ builder . Append ( part . Text ) ;
65
+ break ;
66
+
67
+ case ChatMessageContentPartKind . Image :
68
+ builder . Append ( "<image>" ) ;
69
+ break ;
70
+
71
+ case ChatMessageContentPartKind . InputAudio :
72
+ builder . Append ( "<audio>" ) ;
73
+ break ;
74
+
75
+ case ChatMessageContentPartKind . File :
76
+ builder . Append ( $ "<file: { part . Filename } >") ;
77
+ break ;
78
+
79
+ case ChatMessageContentPartKind . Refusal :
80
+ var refusal = part . Refusal ;
81
+ builder . Append ( $ "<refusal: { refusal } >") ;
82
+ break ;
83
+
84
+ default :
85
+ builder . Append ( "<unknown content kind>" ) ;
86
+ break ;
87
+ }
88
+ }
89
+
90
+ return builder . ToString ( ) ;
91
+ }
39
92
}
You can’t perform that action at this time.
0 commit comments