feat: 完成用量统计功能模块
This commit is contained in:
@@ -12,7 +12,8 @@ public class AzureChatService : IChatService
|
||||
{
|
||||
}
|
||||
|
||||
public async IAsyncEnumerable<string> CompleteChatAsync(AiModelDescribe aiModelDescribe, List<ChatMessage> messages,
|
||||
public async IAsyncEnumerable<CompleteChatResponse> CompleteChatAsync(AiModelDescribe aiModelDescribe,
|
||||
List<ChatMessage> messages,
|
||||
[EnumeratorCancellation] CancellationToken cancellationToken)
|
||||
{
|
||||
var endpoint = new Uri(aiModelDescribe.Endpoint);
|
||||
@@ -32,9 +33,28 @@ public class AzureChatService : IChatService
|
||||
|
||||
await foreach (StreamingChatCompletionUpdate update in response)
|
||||
{
|
||||
var result = new CompleteChatResponse();
|
||||
var isFinish = update.Usage?.OutputTokenCount is not null;
|
||||
if (isFinish)
|
||||
{
|
||||
result.IsFinish = true;
|
||||
result.TokenUsage = new TokenUsage
|
||||
{
|
||||
OutputTokenCount = update.Usage.OutputTokenCount,
|
||||
InputTokenCount = update.Usage.InputTokenCount,
|
||||
TotalTokenCount = update.Usage.TotalTokenCount
|
||||
};
|
||||
}
|
||||
|
||||
foreach (ChatMessageContentPart updatePart in update.ContentUpdate)
|
||||
{
|
||||
yield return updatePart.Text;
|
||||
result.Content = updatePart.Text;
|
||||
yield return result;
|
||||
}
|
||||
|
||||
if (isFinish)
|
||||
{
|
||||
yield return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user