feat: 完成错误信息展示

This commit is contained in:
ccnetcore
2025-07-18 00:14:19 +08:00
parent 30678dbbb4
commit 2bc07cb3df
2 changed files with 14 additions and 12 deletions

View File

@@ -1,6 +1,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Net; using System.Net;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Runtime.CompilerServices;
using System.Text.Json; using System.Text.Json;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Yi.Framework.AiHub.Application.Contracts.Dtos.OpenAi; using Yi.Framework.AiHub.Application.Contracts.Dtos.OpenAi;
@@ -12,19 +13,19 @@ namespace Yi.Framework.AiHub.Domain.AiGateWay.Impl.ThorAzureDatabricks.Chats;
public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCompletionsService> logger) public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCompletionsService> logger)
: IChatCompletionService : IChatCompletionService
{ {
private string GetAddress(AiModelDescribe? options) private string GetAddress(AiModelDescribe? options, string model)
{ {
// This method should return the appropriate URL for the Azure Databricks API // This method should return the appropriate URL for the Azure Databricks API
// based on the provided options and model. // based on the provided options and model.
// For now, we will return a placeholder URL. // For now, we will return a placeholder URL.
return $"{options?.Endpoint.TrimEnd('/')}/serving-endpoints/{options.ModelExtraInfo}/invocations"; return $"{options?.Endpoint.TrimEnd('/')}/serving-endpoints/{model}/invocations";
} }
public async IAsyncEnumerable<ThorChatCompletionsResponse> CompleteChatStreamAsync(AiModelDescribe options, public async IAsyncEnumerable<ThorChatCompletionsResponse> CompleteChatStreamAsync(AiModelDescribe options,
ThorChatCompletionsRequest chatCompletionCreate, ThorChatCompletionsRequest chatCompletionCreate,
CancellationToken cancellationToken) [EnumeratorCancellation] CancellationToken cancellationToken)
{ {
var address = GetAddress(options); var address = GetAddress(options, chatCompletionCreate.Model);
using var openai = using var openai =
Activity.Current?.Source.StartActivity("OpenAI 对话流式补全"); Activity.Current?.Source.StartActivity("OpenAI 对话流式补全");
@@ -60,7 +61,7 @@ public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCo
logger.LogError("OpenAI对话异常 , StatusCode: {StatusCode} 错误响应内容:{Content}", response.StatusCode, logger.LogError("OpenAI对话异常 , StatusCode: {StatusCode} 错误响应内容:{Content}", response.StatusCode,
error); error);
throw new BusinessException("OpenAI对话异常" + error, response.StatusCode.ToString()); throw new BusinessException(response.StatusCode.ToString(), "OpenAI对话异常" + error);
} }
using var stream = new StreamReader(await response.Content.ReadAsStreamAsync(cancellationToken)); using var stream = new StreamReader(await response.Content.ReadAsStreamAsync(cancellationToken));
@@ -78,7 +79,7 @@ public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCo
logger.LogInformation("OpenAI对话异常 , StatusCode: {StatusCode} Response: {Response}", response.StatusCode, logger.LogInformation("OpenAI对话异常 , StatusCode: {StatusCode} Response: {Response}", response.StatusCode,
line); line);
throw new BusinessException("OpenAI对话异常", line); throw new BusinessException("500", "OpenAI对话异常", line);
} }
if (line.StartsWith(OpenAIConstant.Data)) if (line.StartsWith(OpenAIConstant.Data))
@@ -143,7 +144,7 @@ public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCo
ThorChatCompletionsRequest chatCompletionCreate, ThorChatCompletionsRequest chatCompletionCreate,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
var address = GetAddress(options); var address = GetAddress(options, chatCompletionCreate.Model);
using var openai = using var openai =
Activity.Current?.Source.StartActivity("OpenAI 对话补全"); Activity.Current?.Source.StartActivity("OpenAI 对话补全");
@@ -157,7 +158,7 @@ public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCo
if (response.StatusCode == HttpStatusCode.Unauthorized) if (response.StatusCode == HttpStatusCode.Unauthorized)
{ {
throw new BusinessException("渠道未登录,请联系管理人员", "401"); throw new BusinessException("401", "渠道未登录,请联系管理人员");
} }
// 如果限流则抛出限流异常 // 如果限流则抛出限流异常
@@ -174,7 +175,7 @@ public class AzureDatabricksChatCompletionsService(ILogger<AzureDatabricksChatCo
options.Endpoint, options.Endpoint,
response.StatusCode, error); response.StatusCode, error);
throw new BusinessException("OpenAI对话异常", response.StatusCode.ToString()); throw new BusinessException(response.StatusCode.ToString(), "OpenAI对话异常");
} }
var result = var result =

View File

@@ -1,6 +1,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Net; using System.Net;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Runtime.CompilerServices;
using System.Text.Json; using System.Text.Json;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Yi.Framework.AiHub.Application.Contracts.Dtos.OpenAi; using Yi.Framework.AiHub.Application.Contracts.Dtos.OpenAi;
@@ -14,7 +15,7 @@ public class AzureOpenAiChatCompletionCompletionsService(ILogger<AzureOpenAiChat
{ {
public async IAsyncEnumerable<ThorChatCompletionsResponse> CompleteChatStreamAsync(AiModelDescribe options, public async IAsyncEnumerable<ThorChatCompletionsResponse> CompleteChatStreamAsync(AiModelDescribe options,
ThorChatCompletionsRequest chatCompletionCreate, ThorChatCompletionsRequest chatCompletionCreate,
CancellationToken cancellationToken) [EnumeratorCancellation] CancellationToken cancellationToken)
{ {
using var openai = using var openai =
Activity.Current?.Source.StartActivity("Azure OpenAI 对话流式补全"); Activity.Current?.Source.StartActivity("Azure OpenAI 对话流式补全");
@@ -32,7 +33,7 @@ public class AzureOpenAiChatCompletionCompletionsService(ILogger<AzureOpenAiChat
logger.LogError("Azure对话异常 , StatusCode: {StatusCode} 错误响应内容:{Content}", response.StatusCode, logger.LogError("Azure对话异常 , StatusCode: {StatusCode} 错误响应内容:{Content}", response.StatusCode,
error); error);
throw new BusinessException("AzureOpenAI对话异常" + error, response.StatusCode.ToString()); throw new BusinessException(response.StatusCode.ToString(), "AzureOpenAI对话异常" + error);
} }
using StreamReader reader = new(await response.Content.ReadAsStreamAsync(cancellationToken)); using StreamReader reader = new(await response.Content.ReadAsStreamAsync(cancellationToken));
@@ -48,7 +49,7 @@ public class AzureOpenAiChatCompletionCompletionsService(ILogger<AzureOpenAiChat
response.StatusCode, response.StatusCode,
line); line);
throw new BusinessException("AzureOpenAI对话异常", line); throw new BusinessException("500", "AzureOpenAI对话异常", line);
} }
if (line.StartsWith(OpenAIConstant.Data)) if (line.StartsWith(OpenAIConstant.Data))