@@ -45,11 +45,11 @@ public async Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> messag
4545 ResponseId = response . Id ,
4646 ModelId = response . Model ,
4747 CreatedAt = response . Created ? . ToDateTimeOffset ( ) ,
48- FinishReason = lastOutput != null ? MapFinishReason ( lastOutput . FinishReason ) : null ,
49- Usage = MapToUsage ( response . Usage ) ,
48+ FinishReason = lastOutput != null ? lastOutput . FinishReason . Convert ( ) : null ,
49+ Usage = response . Usage . Convert ( ) ,
5050 } ;
5151
52- var citations = response . Citations ? . Distinct ( ) . Select ( MapCitation ) . ToList < AIAnnotation > ( ) ;
52+ var citations = response . Citations ? . Distinct ( ) . Select ( x => x . FromCitationUrl ( ) ) . ToList < AIAnnotation > ( ) ;
5353
5454 ( ( List < ChatMessage > ) result . Messages ) . AddRange ( response . Outputs . AsChatMessages ( citations ) ) ;
5555
@@ -73,12 +73,12 @@ async IAsyncEnumerable<ChatResponseUpdate> CompleteChatStreamingCore(IEnumerable
7373 // Use positional arguments for ChatResponseUpdate
7474 var update = new ChatResponseUpdate
7575 {
76- Role = MapRole ( output . Delta . Role ) ,
76+ Role = output . Delta . Role . Convert ( ) ,
7777 ResponseId = chunk . Id ,
7878 ModelId = chunk . Model ,
7979 CreatedAt = chunk . Created ? . ToDateTimeOffset ( ) ,
8080 RawRepresentation = chunk ,
81- FinishReason = output . FinishReason != FinishReason . ReasonInvalid ? MapFinishReason ( output . FinishReason ) : null ,
81+ FinishReason = output . FinishReason != FinishReason . ReasonInvalid ? output . FinishReason . Convert ( ) : null ,
8282 } ;
8383
8484 var citations = chunk . Citations ? . Distinct ( ) . Select ( MapCitation ) . ToList < AIAnnotation > ( ) ;
@@ -101,7 +101,7 @@ async IAsyncEnumerable<ChatResponseUpdate> CompleteChatStreamingCore(IEnumerable
101101 text is not null )
102102 update . Contents . Add ( new TextContent ( text ) ) ;
103103
104- if ( MapToUsage ( chunk . Usage ) is { } usage )
104+ if ( chunk . Usage . Convert ( ) is { } usage )
105105 update . Contents . Add ( new UsageContent ( usage ) { RawRepresentation = chunk . Usage } ) ;
106106
107107 yield return update ;
@@ -149,10 +149,27 @@ GetCompletionsRequest MapToRequest(IEnumerable<ChatMessage> messages, ChatOption
149149
150150 foreach ( var message in messages )
151151 {
152- var gmsg = new Message { Role = MapRole ( message . Role ) } ;
152+ if ( message . RawRepresentation is Message input )
153+ {
154+ request . Messages . Add ( input ) ;
155+ continue ;
156+ }
157+ else if ( message . RawRepresentation is CompletionMessage completion )
158+ {
159+ request . Messages . Add ( completion . AsMessage ( ) ) ;
160+ continue ;
161+ }
162+
163+ var gmsg = new Message { Role = message . Role . Convert ( ) } ;
153164
154165 foreach ( var content in message . Contents )
155166 {
167+ if ( content . RawRepresentation is CompletionMessage completion )
168+ {
169+ request . Messages . Add ( completion . AsMessage ( ) ) ;
170+ continue ;
171+ }
172+
156173 if ( content is TextContent textContent && ! string . IsNullOrEmpty ( textContent . Text ) )
157174 {
158175 gmsg . Content . Add ( new Content { Text = textContent . Text } ) ;
@@ -271,41 +288,6 @@ codeResult.RawRepresentation is ToolCall codeToolCall &&
271288 return request ;
272289 }
273290
274- static MessageRole MapRole ( ChatRole role ) => role switch
275- {
276- _ when role == ChatRole . System => MessageRole . RoleSystem ,
277- _ when role == ChatRole . User => MessageRole . RoleUser ,
278- _ when role == ChatRole . Assistant => MessageRole . RoleAssistant ,
279- _ when role == ChatRole . Tool => MessageRole . RoleTool ,
280- _ => MessageRole . RoleUser
281- } ;
282-
283- static ChatRole MapRole ( MessageRole role ) => role switch
284- {
285- MessageRole . RoleSystem => ChatRole . System ,
286- MessageRole . RoleUser => ChatRole . User ,
287- MessageRole . RoleAssistant => ChatRole . Assistant ,
288- MessageRole . RoleTool => ChatRole . Tool ,
289- _ => ChatRole . Assistant
290- } ;
291-
292- static ChatFinishReason ? MapFinishReason ( FinishReason finishReason ) => finishReason switch
293- {
294- FinishReason . ReasonStop => ChatFinishReason . Stop ,
295- FinishReason . ReasonMaxLen => ChatFinishReason . Length ,
296- FinishReason . ReasonToolCalls => ChatFinishReason . ToolCalls ,
297- FinishReason . ReasonMaxContext => ChatFinishReason . Length ,
298- FinishReason . ReasonTimeLimit => ChatFinishReason . Length ,
299- _ => null
300- } ;
301-
302- static UsageDetails ? MapToUsage ( SamplingUsage usage ) => usage == null ? null : new ( )
303- {
304- InputTokenCount = usage . PromptTokens ,
305- OutputTokenCount = usage . CompletionTokens ,
306- TotalTokenCount = usage . TotalTokens
307- } ;
308-
309291 /// <inheritdoc />
310292 public object ? GetService ( Type serviceType , object ? serviceKey = null ) => serviceType switch
311293 {
0 commit comments