@@ -117,13 +117,13 @@ protected internal OpenAIResponseClient(ClientPipeline pipeline, string model, O
117117 /// Gets the endpoint URI for the service.
118118 /// </summary>
119119 [ Experimental ( "OPENAI001" ) ]
120- public Uri Endpoint => _endpoint ;
120+ public virtual Uri Endpoint => _endpoint ;
121121
122122 /// <summary>
123123 /// Gets the name of the model used in requests sent to the service.
124124 /// </summary>
125125 [ Experimental ( "OPENAI001" ) ]
126- public string Model => _model ;
126+ public virtual string Model => _model ;
127127
128128 internal virtual Task < ClientResult < OpenAIResponse > > CreateResponseAsync ( IEnumerable < ResponseItem > inputItems , ResponseCreationOptions options = null , CancellationToken cancellationToken = default )
129129 {
@@ -180,15 +180,15 @@ public virtual ClientResult<ResponseResult> CreateResponse(CreateResponseOptions
180180 {
181181 Argument . AssertNotNull ( options , nameof ( options ) ) ;
182182
183- ClientResult result = this . CreateResponse ( options , cancellationToken . CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null ) ;
183+ ClientResult result = this . CreateResponse ( CreatePerCallOptions ( options ) , cancellationToken . CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null ) ;
184184 return ClientResult . FromValue ( ( ResponseResult ) result . GetRawResponse ( ) . Content , result . GetRawResponse ( ) ) ;
185185 }
186186
187187 public virtual async Task < ClientResult < ResponseResult > > CreateResponseAsync ( CreateResponseOptions options , CancellationToken cancellationToken = default )
188188 {
189189 Argument . AssertNotNull ( options , nameof ( options ) ) ;
190190
191- ClientResult result = await this . CreateResponseAsync ( options , cancellationToken . CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null ) . ConfigureAwait ( false ) ;
191+ ClientResult result = await this . CreateResponseAsync ( CreatePerCallOptions ( options ) , cancellationToken . CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null ) . ConfigureAwait ( false ) ;
192192 return ClientResult . FromValue ( ( ResponseResult ) result . GetRawResponse ( ) . Content , result . GetRawResponse ( ) ) ;
193193 }
194194
@@ -215,7 +215,7 @@ internal AsyncCollectionResult<StreamingResponseUpdate> CreateResponseStreamingA
215215
216216 public virtual AsyncCollectionResult < StreamingResponseUpdate > CreateResponseStreamingAsync ( CreateResponseOptions options , CancellationToken cancellationToken = default )
217217 {
218- return CreateResponseStreamingAsync ( options , cancellationToken . ToRequestOptions ( streaming : true ) ) ;
218+ return CreateResponseStreamingAsync ( CreatePerCallOptions ( options , true ) , cancellationToken . ToRequestOptions ( streaming : true ) ) ;
219219 }
220220
221221 internal AsyncCollectionResult < StreamingResponseUpdate > CreateResponseStreamingAsync ( CreateResponseOptions options , RequestOptions requestOptions )
@@ -249,7 +249,7 @@ public virtual CollectionResult<StreamingResponseUpdate> CreateResponseStreaming
249249 Argument . AssertNotNull ( options , nameof ( options ) ) ;
250250
251251 return new SseUpdateCollection < StreamingResponseUpdate > (
252- ( ) => CreateResponse ( options , cancellationToken . ToRequestOptions ( streaming : true ) ) ,
252+ ( ) => CreateResponse ( CreatePerCallOptions ( options , true ) , cancellationToken . ToRequestOptions ( streaming : true ) ) ,
253253 StreamingResponseUpdate . DeserializeStreamingResponseUpdate ,
254254 cancellationToken ) ;
255255 }
@@ -438,7 +438,26 @@ internal virtual ResponseCreationOptions CreatePerCallOptions(ResponseCreationOp
438438 : userOptions . GetClone ( ) ;
439439
440440 copiedOptions . Input = inputItems . ToList ( ) ;
441- copiedOptions . Model = _model ;
441+ copiedOptions . Model = Model ;
442+
443+ if ( stream )
444+ {
445+ copiedOptions . Stream = true ;
446+ }
447+
448+ return copiedOptions ;
449+ }
450+
451+ internal virtual CreateResponseOptions CreatePerCallOptions ( CreateResponseOptions userOptions , bool stream = false )
452+ {
453+ CreateResponseOptions copiedOptions = userOptions is null
454+ ? new ( )
455+ : userOptions . GetClone ( ) ;
456+
457+ if ( copiedOptions . Model is null )
458+ {
459+ copiedOptions . Model = Model ;
460+ }
442461
443462 if ( stream )
444463 {
0 commit comments