openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.0.0

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/Custom/FineTuning/Internal/Pagination/FineTuningJobCheckpointCollectionResult.cs

81lines · modeblame

2ab1a942Jose Arriaga Maldonado1 years ago1using System.ClientModel;
2using System.ClientModel.Primitives;
3using System.Collections.Generic;
4using System.Linq;
5using System.Text.Json;
6
7#nullable enable
8
9namespace OpenAI.FineTuning;
10
11internal class FineTuningJobCheckpointCollectionResult : CollectionResult
12{
a330c2e7Jose Arriaga Maldonado1 years ago13private readonly FineTuningJobOperation _operation;
2ab1a942Jose Arriaga Maldonado1 years ago14private readonly RequestOptions? _options;
15
16// Initial values
17private readonly int? _limit;
a330c2e7Jose Arriaga Maldonado1 years ago18private readonly string? _after;
2ab1a942Jose Arriaga Maldonado1 years ago19
a330c2e7Jose Arriaga Maldonado1 years ago20public FineTuningJobCheckpointCollectionResult(
21FineTuningJobOperation fineTuningJobOperation,
22RequestOptions? options,
23int? limit, string? after)
2ab1a942Jose Arriaga Maldonado1 years ago24{
a330c2e7Jose Arriaga Maldonado1 years ago25_operation = fineTuningJobOperation;
2ab1a942Jose Arriaga Maldonado1 years ago26_options = options;
27
28_limit = limit;
29_after = after;
30}
31
32public override IEnumerable<ClientResult> GetRawPages()
33{
34ClientResult page = GetFirstPage();
35yield return page;
36
37while (HasNextPage(page))
38{
39page = GetNextPage(page);
40yield return page;
41}
42}
43
44public override ContinuationToken? GetContinuationToken(ClientResult page)
45{
46Argument.AssertNotNull(page, nameof(page));
47
a330c2e7Jose Arriaga Maldonado1 years ago48return FineTuningJobCheckpointCollectionPageToken.FromResponse(page, _operation.JobId, _limit);
2ab1a942Jose Arriaga Maldonado1 years ago49}
50
51public ClientResult GetFirstPage()
a330c2e7Jose Arriaga Maldonado1 years ago52=> _operation.GetJobCheckpointsPage(_after, _limit, _options);
2ab1a942Jose Arriaga Maldonado1 years ago53
54public ClientResult GetNextPage(ClientResult result)
55{
56Argument.AssertNotNull(result, nameof(result));
57
58PipelineResponse response = result.GetRawResponse();
59
60using JsonDocument doc = JsonDocument.Parse(response?.Content);
61
62JsonElement data = doc.RootElement.GetProperty("data");
63JsonElement lastItem = data.EnumerateArray().LastOrDefault();
64string? lastId = lastItem.TryGetProperty("id", out JsonElement idElement) ?
65idElement.GetString() : null;
66
a330c2e7Jose Arriaga Maldonado1 years ago67return _operation.GetJobCheckpointsPage(lastId, _limit, _options);
2ab1a942Jose Arriaga Maldonado1 years ago68}
69
70public static bool HasNextPage(ClientResult result)
71{
72Argument.AssertNotNull(result, nameof(result));
73
74PipelineResponse response = result.GetRawResponse();
75
76using JsonDocument doc = JsonDocument.Parse(response.Content);
77bool hasMore = doc.RootElement.GetProperty("has_more"u8).GetBoolean();
78
79return hasMore;
80}
81}