diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/OpenApiService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/OpenApiService.cs index f701bc26..23cf473c 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/OpenApiService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/OpenApiService.cs @@ -193,11 +193,16 @@ public class OpenApiService : ApplicationService private string? GetTokenByHttpContext(HttpContext httpContext) { - // 获取Authorization头 - string authHeader = httpContext.Request.Headers["Authorization"]; + // 优先从 x-api-key 获取 + string apiKeyHeader = httpContext.Request.Headers["x-api-key"]; + if (!string.IsNullOrWhiteSpace(apiKeyHeader)) + { + return apiKeyHeader.Trim(); + } - // 检查是否有Bearer token - if (authHeader != null && authHeader.StartsWith("Bearer ")) + // 再检查 Authorization 头 + string authHeader = httpContext.Request.Headers["Authorization"]; + if (!string.IsNullOrWhiteSpace(authHeader) && authHeader.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase)) { return authHeader.Substring("Bearer ".Length).Trim(); } diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain.Shared/Dtos/Anthropic/AnthropicChatCompletionDto.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain.Shared/Dtos/Anthropic/AnthropicChatCompletionDto.cs index 65c82081..7f25afc3 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain.Shared/Dtos/Anthropic/AnthropicChatCompletionDto.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain.Shared/Dtos/Anthropic/AnthropicChatCompletionDto.cs @@ -94,6 +94,8 @@ public class AnthropicChatCompletionDtoContentBlock [JsonPropertyName("tool_use_id")] public string? ToolUseId { get; set; } [JsonPropertyName("content")] public object? Content { get; set; } + + [JsonPropertyName("text")] public string? Text { get; set; } } public class AnthropicChatCompletionDto diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/AnthropicChatCompletionsService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/AnthropicChatCompletionsService.cs index bba2f091..1552af59 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/AnthropicChatCompletionsService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/AnthropicChatCompletionsService.cs @@ -169,7 +169,7 @@ public class AnthropicChatCompletionsService( var result = JsonSerializer.Deserialize(data, ThorJsonSerializer.DefaultOptions); - + result.SupplementalMultiplier(AnthropicChatCompletionsService.ClaudeMultiplier); yield return (eventType, result); } diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs index 18fb1a46..6a24dcdf 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/AiGateWay/Impl/ThorClaude/Chats/ClaudiaChatCompletionsService.cs @@ -536,6 +536,11 @@ public sealed class ClaudiaChatCompletionsService( toolName = result.ContentBlock.Name; } + if (toolId is null) + { + continue; + } + yield return new ThorChatCompletionsResponse() { Choices =