feat: 支持非流式传输功能

This commit is contained in:
chenchun
2025-07-09 19:12:53 +08:00
parent 9af8c4897b
commit 716c344780
9 changed files with 140 additions and 17 deletions

View File

@@ -12,7 +12,7 @@ public class AzureChatService : IChatService
{
}
public async IAsyncEnumerable<CompleteChatResponse> CompleteChatAsync(AiModelDescribe aiModelDescribe,
public async IAsyncEnumerable<CompleteChatResponse> CompleteChatStreamAsync(AiModelDescribe aiModelDescribe,
List<ChatMessage> messages,
[EnumeratorCancellation] CancellationToken cancellationToken)
{
@@ -62,4 +62,41 @@ public class AzureChatService : IChatService
}
}
}
public async Task<CompleteChatResponse> CompleteChatAsync(AiModelDescribe aiModelDescribe,
List<ChatMessage> messages, CancellationToken cancellationToken)
{
var endpoint = new Uri(aiModelDescribe.Endpoint);
var deploymentName = aiModelDescribe.ModelId;
var apiKey = aiModelDescribe.ApiKey;
AzureOpenAIClient azureClient = new(
endpoint,
new AzureKeyCredential(apiKey), new AzureOpenAIClientOptions()
{
NetworkTimeout = TimeSpan.FromSeconds(600),
});
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
var response = await chatClient.CompleteChatAsync(messages, new ChatCompletionOptions()
{
// MaxOutputTokenCount = 2048
}, cancellationToken: cancellationToken);
var output = new CompleteChatResponse
{
TokenUsage = new TokenUsage()
{
OutputTokenCount = response?.Value.Usage?.OutputTokenCount ?? 0,
InputTokenCount = response?.Value.Usage?.InputTokenCount ?? 0,
TotalTokenCount = response?.Value.Usage?.TotalTokenCount ?? 0
},
IsFinish = true,
Content = response?.Value.Content.FirstOrDefault()?.Text
};
return output;
}
}

View File

@@ -14,7 +14,7 @@ public class AzureRestChatService : IChatService
{
}
public async IAsyncEnumerable<CompleteChatResponse> CompleteChatAsync(AiModelDescribe aiModelDescribe,
public async IAsyncEnumerable<CompleteChatResponse> CompleteChatStreamAsync(AiModelDescribe aiModelDescribe,
List<ChatMessage> messages,
[EnumeratorCancellation] CancellationToken cancellationToken)
{
@@ -98,6 +98,11 @@ public class AzureRestChatService : IChatService
}
}
public Task<CompleteChatResponse> CompleteChatAsync(AiModelDescribe aiModelDescribe, List<ChatMessage> messages, CancellationToken cancellationToken)
{
throw new NotImplementedException("暂未实现");
}
private JObject? MapToJObject(string line)
{
if (line == "data: [DONE]"||string.IsNullOrWhiteSpace(line) )