openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.2.0-beta.2

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/Custom/Assistants/Streaming/RunStepDetailsUpdate.cs

121lines · modeblame

19fc7d54Jose Arriaga Maldonado2 years ago1using System;
9f9f2936Jose Arriaga Maldonado2 years ago2using System.ClientModel.Primitives;
3using System.Collections.Generic;
79014abcShivangiReja1 years ago4using System.Diagnostics.CodeAnalysis;
9f9f2936Jose Arriaga Maldonado2 years ago5using System.Text.Json;
6
7namespace OpenAI.Assistants;
8
9/// <summary>
10/// The update type presented when run step details, including tool call progress, have changed.
11/// </summary>
79014abcShivangiReja1 years ago12[Experimental("OPENAI001")]
9f9f2936Jose Arriaga Maldonado2 years ago13public class RunStepDetailsUpdate : StreamingUpdate
14{
19fc7d54Jose Arriaga Maldonado2 years ago15internal readonly InternalRunStepDelta _delta;
16internal readonly InternalRunStepDeltaStepDetailsToolCallsObjectToolCallsObject _toolCall;
9f9f2936Jose Arriaga Maldonado2 years ago17private readonly InternalRunStepDeltaStepDetailsMessageCreationObject _asMessageCreation;
bf3f0eddJose Arriaga Maldonado1 years ago18private readonly InternalRunStepDeltaStepDetailsToolCallsCodeObject _asCodeInterpreterCall;
9f9f2936Jose Arriaga Maldonado2 years ago19private readonly InternalRunStepDeltaStepDetailsToolCallsFileSearchObject _asFileSearchCall;
20private readonly InternalRunStepDeltaStepDetailsToolCallsFunctionObject _asFunctionCall;
21
bf3f0eddJose Arriaga Maldonado1 years ago22private IReadOnlyList<RunStepUpdateCodeInterpreterOutput> _codeInterpreterOutputs;
23private IReadOnlyList<RunStepFileSearchResult> _fileSearchResults;
24
25internal RunStepDetailsUpdate(InternalRunStepDelta stepDelta, InternalRunStepDeltaStepDetailsToolCallsObjectToolCallsObject toolCall = null)
26: base(StreamingUpdateReason.RunStepUpdated)
27{
28_delta = stepDelta;
29_toolCall = toolCall;
30
31_asMessageCreation = stepDelta?.Delta?.StepDetails as InternalRunStepDeltaStepDetailsMessageCreationObject;
32
33_asCodeInterpreterCall = toolCall as InternalRunStepDeltaStepDetailsToolCallsCodeObject;
34_asFileSearchCall = toolCall as InternalRunStepDeltaStepDetailsToolCallsFileSearchObject;
35_asFunctionCall = toolCall as InternalRunStepDeltaStepDetailsToolCallsFunctionObject;
36}
37
9f9f2936Jose Arriaga Maldonado2 years ago38/// <inheritdoc cref="InternalRunStepDelta.Id"/>
79014abcShivangiReja1 years ago39public string StepId => _delta?.Id;
9f9f2936Jose Arriaga Maldonado2 years ago40
41/// <inheritdoc cref="InternalRunStepDeltaStepDetailsMessageCreationObjectMessageCreation"/>
42public string CreatedMessageId => _asMessageCreation?.MessageCreation?.MessageId;
43
44/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsCodeObject.Id"/>
19fc7d54Jose Arriaga Maldonado2 years ago45public string ToolCallId
bf3f0eddJose Arriaga Maldonado1 years ago46=> _asCodeInterpreterCall?.Id
19fc7d54Jose Arriaga Maldonado2 years ago47?? _asFileSearchCall?.Id
48?? _asFunctionCall?.Id
49?? (_toolCall?.SerializedAdditionalRawData?.TryGetValue("id", out BinaryData idData) == true
50? idData.ToString()
51: null);
9f9f2936Jose Arriaga Maldonado2 years ago52
53/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsCodeObject.Index"/>
bf3f0eddJose Arriaga Maldonado1 years ago54public int? ToolCallIndex
55=> _asCodeInterpreterCall?.Index
56?? _asFileSearchCall?.Index
57?? _asFunctionCall?.Index;
58
59#region Code Interpreter
9f9f2936Jose Arriaga Maldonado2 years ago60
61/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsCodeObjectCodeInterpreter.Input"/>
bf3f0eddJose Arriaga Maldonado1 years ago62public string CodeInterpreterInput => _asCodeInterpreterCall?.CodeInterpreter?.Input;
9f9f2936Jose Arriaga Maldonado2 years ago63
64/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsCodeObjectCodeInterpreter.Outputs"/>
bf3f0eddJose Arriaga Maldonado1 years ago65public IReadOnlyList<RunStepUpdateCodeInterpreterOutput> CodeInterpreterOutputs =>
66_codeInterpreterOutputs
67??= _asCodeInterpreterCall?.CodeInterpreter?.Outputs
68?? new ChangeTrackingList<RunStepUpdateCodeInterpreterOutput>();
69
70#endregion
71
72#region File Search
73
74// CUSTOM: Spread.
75public FileSearchRankingOptions FileSearchRankingOptions => _asFileSearchCall?.FileSearch?.RankingOptions;
76
77// CUSTOM: Spread.
78/// <summary> The results of the file search. </summary>
79public IReadOnlyList<RunStepFileSearchResult> FileSearchResults =>
80_fileSearchResults
81??= _asFileSearchCall?.FileSearch?.Results
82?? new ChangeTrackingList<RunStepFileSearchResult>();
83
84#endregion
85
86#region Function
9f9f2936Jose Arriaga Maldonado2 years ago87
88/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsFunctionObjectFunction.Name"/>
448181b8Chris1 years ago89public string FunctionName => _asFunctionCall?.Function?.Name;
9f9f2936Jose Arriaga Maldonado2 years ago90
91/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsFunctionObjectFunction.Arguments"/>
92public string FunctionArguments => _asFunctionCall?.Function?.Arguments;
93
94/// <inheritdoc cref="InternalRunStepDeltaStepDetailsToolCallsFunctionObjectFunction.Output"/>
95public string FunctionOutput => _asFunctionCall?.Function?.Output;
96
bf3f0eddJose Arriaga Maldonado1 years ago97#endregion
9f9f2936Jose Arriaga Maldonado2 years ago98
99internal static IEnumerable<RunStepDetailsUpdate> DeserializeRunStepDetailsUpdates(
100JsonElement element,
101StreamingUpdateReason updateKind,
102ModelReaderWriterOptions options = null)
103{
104InternalRunStepDelta stepDelta = InternalRunStepDelta.DeserializeInternalRunStepDelta(element, options);
105List<RunStepDetailsUpdate> updates = [];
bf3f0eddJose Arriaga Maldonado1 years ago106
9f9f2936Jose Arriaga Maldonado2 years ago107if (stepDelta?.Delta?.StepDetails is InternalRunStepDeltaStepDetailsMessageCreationObject)
108{
109updates.Add(new RunStepDetailsUpdate(stepDelta));
110}
111else if (stepDelta?.Delta?.StepDetails is InternalRunStepDeltaStepDetailsToolCallsObject toolCalls)
112{
113foreach (InternalRunStepDeltaStepDetailsToolCallsObjectToolCallsObject toolCall in toolCalls.ToolCalls)
114{
115updates.Add(new RunStepDetailsUpdate(stepDelta, toolCall));
116}
117}
bf3f0eddJose Arriaga Maldonado1 years ago118
9f9f2936Jose Arriaga Maldonado2 years ago119return updates;
120}
121}