Skip to content

Commit 83d6bef

Browse files
ToString override (#485)
1 parent 5b60d27 commit 83d6bef

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

src/Custom/Chat/ChatMessageContent.cs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Collections.ObjectModel;
44
using System.Linq;
5+
using System.Text;
56

67
namespace 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
}

0 commit comments

Comments
 (0)