Skip to content

Commit ba45b1f

Browse files
authored
Add FileName in FileCitationMessageAnnotation (#816)
1 parent 87964c3 commit ba45b1f

File tree

10 files changed

+6919
-6875
lines changed

10 files changed

+6919
-6875
lines changed

api/OpenAI.net8.0.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5066,8 +5066,9 @@ public class CustomMcpToolCallApprovalPolicy : IJsonModel<CustomMcpToolCallAppro
50665066
}
50675067
[Experimental("OPENAI001")]
50685068
public class FileCitationMessageAnnotation : ResponseMessageAnnotation, IJsonModel<FileCitationMessageAnnotation>, IPersistableModel<FileCitationMessageAnnotation> {
5069-
public FileCitationMessageAnnotation(string fileId, int index);
5069+
public FileCitationMessageAnnotation(string fileId, int index, string filename);
50705070
public string FileId { get; set; }
5071+
public string Filename { get; set; }
50715072
public int Index { get; set; }
50725073
protected override ResponseMessageAnnotation JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
50735074
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);

api/OpenAI.netstandard2.0.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4425,8 +4425,9 @@ public class CustomMcpToolCallApprovalPolicy : IJsonModel<CustomMcpToolCallAppro
44254425
protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
44264426
}
44274427
public class FileCitationMessageAnnotation : ResponseMessageAnnotation, IJsonModel<FileCitationMessageAnnotation>, IPersistableModel<FileCitationMessageAnnotation> {
4428-
public FileCitationMessageAnnotation(string fileId, int index);
4428+
public FileCitationMessageAnnotation(string fileId, int index, string filename);
44294429
public string FileId { get; set; }
4430+
public string Filename { get; set; }
44304431
public int Index { get; set; }
44314432
protected override ResponseMessageAnnotation JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
44324433
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);

specification/base/typespec/responses/models.tsp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,9 @@ model AnnotationFileCitation extends Annotation {
10641064

10651065
/** The index of the file in the list of files. */
10661066
index: int32;
1067+
1068+
/** The filename of the file cited. */
1069+
filename: string;
10671070
}
10681071

10691072
// Tool customization (apply_discriminator): Apply discriminated base type, rename for consistency and clarity

src/Generated/Models/Responses/FileCitationMessageAnnotation.Serialization.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace OpenAI.Responses
1212
{
1313
public partial class FileCitationMessageAnnotation : ResponseMessageAnnotation, IJsonModel<FileCitationMessageAnnotation>
1414
{
15-
internal FileCitationMessageAnnotation() : this(ResponseMessageAnnotationKind.FileCitation, default, null, default)
15+
internal FileCitationMessageAnnotation() : this(ResponseMessageAnnotationKind.FileCitation, default, null, default, null)
1616
{
1717
}
1818

@@ -50,6 +50,11 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri
5050
writer.WritePropertyName("index"u8);
5151
writer.WriteNumberValue(Index);
5252
}
53+
if (!Patch.Contains("$.filename"u8))
54+
{
55+
writer.WritePropertyName("filename"u8);
56+
writer.WriteStringValue(Filename);
57+
}
5358

5459
Patch.WriteTo(writer);
5560
#pragma warning restore SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
@@ -80,6 +85,7 @@ internal static FileCitationMessageAnnotation DeserializeFileCitationMessageAnno
8085
#pragma warning restore SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
8186
string fileId = default;
8287
int index = default;
88+
string filename = default;
8389
foreach (var prop in element.EnumerateObject())
8490
{
8591
if (prop.NameEquals("type"u8))
@@ -97,9 +103,14 @@ internal static FileCitationMessageAnnotation DeserializeFileCitationMessageAnno
97103
index = prop.Value.GetInt32();
98104
continue;
99105
}
106+
if (prop.NameEquals("filename"u8))
107+
{
108+
filename = prop.Value.GetString();
109+
continue;
110+
}
100111
patch.Set([.. "$."u8, .. Encoding.UTF8.GetBytes(prop.Name)], prop.Value.GetUtf8Bytes());
101112
}
102-
return new FileCitationMessageAnnotation(kind, patch, fileId, index);
113+
return new FileCitationMessageAnnotation(kind, patch, fileId, index, filename);
103114
}
104115

105116
BinaryData IPersistableModel<FileCitationMessageAnnotation>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);

src/Generated/Models/Responses/FileCitationMessageAnnotation.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,29 @@ namespace OpenAI.Responses
1111
[Experimental("OPENAI001")]
1212
public partial class FileCitationMessageAnnotation : ResponseMessageAnnotation
1313
{
14-
public FileCitationMessageAnnotation(string fileId, int index) : base(ResponseMessageAnnotationKind.FileCitation)
14+
public FileCitationMessageAnnotation(string fileId, int index, string filename) : base(ResponseMessageAnnotationKind.FileCitation)
1515
{
1616
Argument.AssertNotNull(fileId, nameof(fileId));
17+
Argument.AssertNotNull(filename, nameof(filename));
1718

1819
FileId = fileId;
1920
Index = index;
21+
Filename = filename;
2022
}
2123

2224
#pragma warning disable SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
23-
internal FileCitationMessageAnnotation(ResponseMessageAnnotationKind kind, in JsonPatch patch, string fileId, int index) : base(kind, patch)
25+
internal FileCitationMessageAnnotation(ResponseMessageAnnotationKind kind, in JsonPatch patch, string fileId, int index, string filename) : base(kind, patch)
2426
{
2527
FileId = fileId;
2628
Index = index;
29+
Filename = filename;
2730
}
2831
#pragma warning restore SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
2932

3033
public string FileId { get; set; }
3134

3235
public int Index { get; set; }
36+
37+
public string Filename { get; set; }
3338
}
3439
}

src/Generated/OpenAIModelFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,9 +584,9 @@ public static ResponseMessageAnnotation ResponseMessageAnnotation(string kind =
584584
return new InternalUnknownAnnotation(kind.ToResponseMessageAnnotationKind(), default);
585585
}
586586

587-
public static FileCitationMessageAnnotation FileCitationMessageAnnotation(string fileId = default, int index = default)
587+
public static FileCitationMessageAnnotation FileCitationMessageAnnotation(string fileId = default, int index = default, string filename = default)
588588
{
589-
return new FileCitationMessageAnnotation(ResponseMessageAnnotationKind.FileCitation, default, fileId, index);
589+
return new FileCitationMessageAnnotation(ResponseMessageAnnotationKind.FileCitation, default, fileId, index, filename);
590590
}
591591

592592
public static UriCitationMessageAnnotation UriCitationMessageAnnotation(Uri uri = default, int startIndex = default, int endIndex = default, string title = default)

tests/Responses/ResponsesToolTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ public async Task FileSearch()
394394
Assert.That(messageContentPart.OutputTextAnnotations, Is.Not.Null.And.Not.Empty);
395395
FileCitationMessageAnnotation annotation = messageContentPart.OutputTextAnnotations[0] as FileCitationMessageAnnotation;
396396
Assert.That(annotation.FileId, Is.EqualTo(testFile.Id));
397+
Assert.That(annotation.Filename, Is.EqualTo(testFile.Filename));
397398
Assert.That(annotation.Index, Is.GreaterThan(0));
398399

399400
await foreach (ResponseItem inputItem in client.GetResponseInputItemsAsync(response.Id))

0 commit comments

Comments
 (0)