Skip to content

Commit b244997

Browse files
Add additional factory methods for ChatMessageAnnotation and token usage details
Co-authored-by: KrzysztofCwalina <[email protected]>
1 parent 7cd5342 commit b244997

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed

src/Custom/ChatModelFactory.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,45 @@ public static StreamingChatToolCallUpdate StreamingChatToolCallUpdate(
209209
functionName: functionName,
210210
functionArgumentsUpdate: functionArgumentsUpdate);
211211
}
212+
213+
/// <summary> Initializes a new instance of <see cref="OpenAI.Chat.ChatMessageAnnotation"/>. </summary>
214+
/// <returns> A new <see cref="OpenAI.Chat.ChatMessageAnnotation"/> instance for mocking. </returns>
215+
public static ChatMessageAnnotation ChatMessageAnnotation(
216+
int startIndex = default,
217+
int endIndex = default,
218+
Uri webResourceUri = default,
219+
string webResourceTitle = default)
220+
{
221+
return OpenAI.Chat.OpenAIChatModelFactory.ChatMessageAnnotation(
222+
startIndex: startIndex,
223+
endIndex: endIndex,
224+
webResourceUri: webResourceUri,
225+
webResourceTitle: webResourceTitle);
226+
}
227+
228+
/// <summary> Initializes a new instance of <see cref="OpenAI.Chat.ChatInputTokenUsageDetails"/>. </summary>
229+
/// <returns> A new <see cref="OpenAI.Chat.ChatInputTokenUsageDetails"/> instance for mocking. </returns>
230+
public static ChatInputTokenUsageDetails ChatInputTokenUsageDetails(
231+
int audioTokenCount = default,
232+
int cachedTokenCount = default)
233+
{
234+
return OpenAI.Chat.OpenAIChatModelFactory.ChatInputTokenUsageDetails(
235+
audioTokenCount: audioTokenCount,
236+
cachedTokenCount: cachedTokenCount);
237+
}
238+
239+
/// <summary> Initializes a new instance of <see cref="OpenAI.Chat.ChatOutputTokenUsageDetails"/>. </summary>
240+
/// <returns> A new <see cref="OpenAI.Chat.ChatOutputTokenUsageDetails"/> instance for mocking. </returns>
241+
public static ChatOutputTokenUsageDetails ChatOutputTokenUsageDetails(
242+
int reasoningTokenCount = default,
243+
int audioTokenCount = default,
244+
int acceptedPredictionTokenCount = default,
245+
int rejectedPredictionTokenCount = default)
246+
{
247+
return OpenAI.Chat.OpenAIChatModelFactory.ChatOutputTokenUsageDetails(
248+
reasoningTokenCount: reasoningTokenCount,
249+
audioTokenCount: audioTokenCount,
250+
acceptedPredictionTokenCount: acceptedPredictionTokenCount,
251+
rejectedPredictionTokenCount: rejectedPredictionTokenCount);
252+
}
212253
}

tests/Chat/ChatModelFactoryTests.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,4 +292,58 @@ public void StreamingChatToolCallUpdateWorks()
292292
Assert.That(update.FunctionName, Is.EqualTo(functionName));
293293
Assert.That(update.FunctionArgumentsUpdate, Is.EqualTo(functionArgumentsUpdate));
294294
}
295+
296+
[Test]
297+
public void ChatMessageAnnotationWorks()
298+
{
299+
int startIndex = 5;
300+
int endIndex = 10;
301+
Uri webResourceUri = new Uri("https://example.com");
302+
string webResourceTitle = "Example Resource";
303+
304+
ChatMessageAnnotation annotation = ChatModelFactory.ChatMessageAnnotation(
305+
startIndex: startIndex,
306+
endIndex: endIndex,
307+
webResourceUri: webResourceUri,
308+
webResourceTitle: webResourceTitle);
309+
310+
Assert.That(annotation.StartIndex, Is.EqualTo(startIndex));
311+
Assert.That(annotation.EndIndex, Is.EqualTo(endIndex));
312+
Assert.That(annotation.WebResourceUri, Is.EqualTo(webResourceUri));
313+
Assert.That(annotation.WebResourceTitle, Is.EqualTo(webResourceTitle));
314+
}
315+
316+
[Test]
317+
public void ChatInputTokenUsageDetailsWorks()
318+
{
319+
int audioTokenCount = 25;
320+
int cachedTokenCount = 75;
321+
322+
ChatInputTokenUsageDetails details = ChatModelFactory.ChatInputTokenUsageDetails(
323+
audioTokenCount: audioTokenCount,
324+
cachedTokenCount: cachedTokenCount);
325+
326+
Assert.That(details.AudioTokenCount, Is.EqualTo(audioTokenCount));
327+
Assert.That(details.CachedTokenCount, Is.EqualTo(cachedTokenCount));
328+
}
329+
330+
[Test]
331+
public void ChatOutputTokenUsageDetailsWorks()
332+
{
333+
int reasoningTokenCount = 30;
334+
int audioTokenCount = 15;
335+
int acceptedPredictionTokenCount = 5;
336+
int rejectedPredictionTokenCount = 2;
337+
338+
ChatOutputTokenUsageDetails details = ChatModelFactory.ChatOutputTokenUsageDetails(
339+
reasoningTokenCount: reasoningTokenCount,
340+
audioTokenCount: audioTokenCount,
341+
acceptedPredictionTokenCount: acceptedPredictionTokenCount,
342+
rejectedPredictionTokenCount: rejectedPredictionTokenCount);
343+
344+
Assert.That(details.ReasoningTokenCount, Is.EqualTo(reasoningTokenCount));
345+
Assert.That(details.AudioTokenCount, Is.EqualTo(audioTokenCount));
346+
Assert.That(details.AcceptedPredictionTokenCount, Is.EqualTo(acceptedPredictionTokenCount));
347+
Assert.That(details.RejectedPredictionTokenCount, Is.EqualTo(rejectedPredictionTokenCount));
348+
}
295349
}

0 commit comments

Comments
 (0)