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 22using System . Collections . Generic ;
33using System . Collections . ObjectModel ;
44using System . Linq ;
5+ using System . Text ;
56
67namespace OpenAI . Chat ;
78
@@ -36,4 +37,56 @@ internal bool IsInnerCollectionDefined()
3637 {
3738 return ! ( Items is ChangeTrackingList < ChatMessageContentPart > changeTrackingList && changeTrackingList . IsUndefined ) ;
3839 }
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+ }
3992}
You can’t perform that action at this time.
0 commit comments