@@ -71,7 +71,12 @@ public async Task<ChatResponse> GetResponseAsync(
71
71
text . Append ( token ) ;
72
72
}
73
73
74
- return new ( new ChatMessage ( ChatRole . Assistant , text . ToString ( ) ) )
74
+ var message = new ChatMessage ( ChatRole . Assistant , text . ToString ( ) )
75
+ {
76
+ MessageId = Guid . NewGuid ( ) . ToString ( "N" ) ,
77
+ } ;
78
+
79
+ return new ( message )
75
80
{
76
81
CreatedAt = DateTime . UtcNow ,
77
82
} ;
@@ -83,11 +88,13 @@ public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
83
88
{
84
89
var result = _executor . InferAsync ( CreatePrompt ( messages ) , CreateInferenceParams ( options ) , cancellationToken ) ;
85
90
91
+ string messageId = Guid . NewGuid ( ) . ToString ( "N" ) ;
86
92
await foreach ( var token in _outputTransform . TransformAsync ( result ) )
87
93
{
88
94
yield return new ( ChatRole . Assistant , token )
89
95
{
90
96
CreatedAt = DateTime . UtcNow ,
97
+ MessageId = messageId ,
91
98
} ;
92
99
}
93
100
}
@@ -124,37 +131,33 @@ private string CreatePrompt(IEnumerable<ChatMessage> messages)
124
131
}
125
132
126
133
/// <summary>Convert the chat options to inference parameters.</summary>
127
- private static InferenceParams ? CreateInferenceParams ( ChatOptions ? options )
134
+ private InferenceParams CreateInferenceParams ( ChatOptions ? options )
128
135
{
129
- List < string > antiPrompts = new ( s_antiPrompts ) ;
130
- if ( options ? . AdditionalProperties ? . TryGetValue ( nameof ( InferenceParams . AntiPrompts ) , out IReadOnlyList < string > ? anti ) is true )
131
- {
132
- antiPrompts . AddRange ( anti ) ;
133
- }
136
+ InferenceParams ip = options ? . RawRepresentationFactory ? . Invoke ( this ) as InferenceParams ?? new ( ) ;
134
137
135
- return new ( )
138
+ ip . AntiPrompts = [ .. s_antiPrompts , .. ip . AntiPrompts ] ;
139
+ ip . MaxTokens = options ? . MaxOutputTokens ?? 256 ; // arbitrary upper limit
140
+ ip . SamplingPipeline = new DefaultSamplingPipeline ( )
136
141
{
137
- AntiPrompts = antiPrompts ,
138
- TokensKeep = options ? . AdditionalProperties ? . TryGetValue ( nameof ( InferenceParams . TokensKeep ) , out int tk ) is true ? tk : s_defaultParams . TokensKeep ,
139
- MaxTokens = options ? . MaxOutputTokens ?? 256 , // arbitrary upper limit
140
- SamplingPipeline = new DefaultSamplingPipeline ( )
141
- {
142
- FrequencyPenalty = options ? . FrequencyPenalty ?? s_defaultPipeline . FrequencyPenalty ,
143
- PresencePenalty = options ? . PresencePenalty ?? s_defaultPipeline . PresencePenalty ,
144
- PreventEOS = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . PreventEOS ) , out bool eos ) is true ? eos : s_defaultPipeline . PreventEOS ,
145
- PenalizeNewline = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . PenalizeNewline ) , out bool pnl ) is true ? pnl : s_defaultPipeline . PenalizeNewline ,
146
- RepeatPenalty = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . RepeatPenalty ) , out float rp ) is true ? rp : s_defaultPipeline . RepeatPenalty ,
147
- PenaltyCount = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . PenaltyCount ) , out int rpc ) is true ? rpc : s_defaultPipeline . PenaltyCount ,
148
- Grammar = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . Grammar ) , out Grammar ? g ) is true ? g : s_defaultPipeline . Grammar ,
149
- MinKeep = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . MinKeep ) , out int mk ) is true ? mk : s_defaultPipeline . MinKeep ,
150
- MinP = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . MinP ) , out float mp ) is true ? mp : s_defaultPipeline . MinP ,
151
- Seed = options ? . Seed is long seed ? ( uint ) seed : ( uint ) ( t_random ??= new ( ) ) . Next ( ) ,
152
- Temperature = options ? . Temperature ?? s_defaultPipeline . Temperature ,
153
- TopP = options ? . TopP ?? s_defaultPipeline . TopP ,
154
- TopK = options ? . TopK ?? s_defaultPipeline . TopK ,
155
- TypicalP = options ? . AdditionalProperties ? . TryGetValue ( nameof ( DefaultSamplingPipeline . TypicalP ) , out float tp ) is true ? tp : s_defaultPipeline . TypicalP ,
156
- } ,
142
+ FrequencyPenalty = options ? . FrequencyPenalty ?? ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . FrequencyPenalty ?? s_defaultPipeline . FrequencyPenalty ,
143
+ PresencePenalty = options ? . PresencePenalty ?? ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . PresencePenalty ?? s_defaultPipeline . PresencePenalty ,
144
+ PreventEOS = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . PreventEOS ?? s_defaultPipeline . PreventEOS ,
145
+ PenalizeNewline = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . PenalizeNewline ?? s_defaultPipeline . PenalizeNewline ,
146
+ RepeatPenalty = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . RepeatPenalty ?? s_defaultPipeline . RepeatPenalty ,
147
+ PenaltyCount = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . PenaltyCount ?? s_defaultPipeline . PenaltyCount ,
148
+ Grammar = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . Grammar ?? s_defaultPipeline . Grammar ,
149
+ GrammarOptimization = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . GrammarOptimization ?? s_defaultPipeline . GrammarOptimization ,
150
+ LogitBias = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . LogitBias ?? s_defaultPipeline . LogitBias ,
151
+ MinKeep = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . MinKeep ?? s_defaultPipeline . MinKeep ,
152
+ MinP = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . MinP ?? s_defaultPipeline . MinP ,
153
+ Seed = options ? . Seed is long seed ? ( uint ) seed : ( uint ) ( t_random ??= new ( ) ) . Next ( ) ,
154
+ Temperature = options ? . Temperature ?? s_defaultPipeline . Temperature ,
155
+ TopP = options ? . TopP ?? s_defaultPipeline . TopP ,
156
+ TopK = options ? . TopK ?? s_defaultPipeline . TopK ,
157
+ TypicalP = ( ip . SamplingPipeline as DefaultSamplingPipeline ) ? . TypicalP ?? s_defaultPipeline . TypicalP ,
157
158
} ;
159
+
160
+ return ip ;
158
161
}
159
162
160
163
/// <summary>A default transform that appends "Assistant: " to the end.</summary>
0 commit comments