mirror of
https://github.com/alibaba/higress.git
synced 2026-05-28 06:37:26 +08:00
fix(ai-proxy): preserve Bedrock Claude reasoning blocks (#3788)
Signed-off-by: Betula-L <6059935+Betula-L@users.noreply.github.com> Co-authored-by: Betula-L <6059935+Betula-L@users.noreply.github.com>
This commit is contained in:
@@ -46,6 +46,9 @@ type chatCompletionRequest struct {
|
||||
Model string `json:"model"`
|
||||
Store bool `json:"store,omitempty"`
|
||||
ReasoningEffort string `json:"reasoning_effort,omitempty"`
|
||||
ClaudeThinking *claudeThinkingConfig `json:"claude_thinking,omitempty"`
|
||||
ClaudeOutputConfig *claudeOutputConfig `json:"claude_output_config,omitempty"`
|
||||
ClaudeAnthropicBeta []string `json:"claude_anthropic_beta,omitempty"`
|
||||
Metadata map[string]string `json:"metadata,omitempty"`
|
||||
FrequencyPenalty float64 `json:"frequency_penalty,omitempty"`
|
||||
LogitBias map[string]int `json:"logit_bias,omitempty"`
|
||||
@@ -202,17 +205,22 @@ type completionTokensDetails struct {
|
||||
}
|
||||
|
||||
type chatMessage struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Audio map[string]interface{} `json:"audio,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Role string `json:"role,omitempty"`
|
||||
Content any `json:"content,omitempty"`
|
||||
ReasoningContent string `json:"reasoning_content,omitempty"`
|
||||
Reasoning string `json:"reasoning,omitempty"` // For streaming responses
|
||||
ToolCalls []toolCall `json:"tool_calls,omitempty"`
|
||||
FunctionCall *functionCall `json:"function_call,omitempty"` // For legacy OpenAI format
|
||||
Refusal string `json:"refusal,omitempty"`
|
||||
ToolCallId string `json:"tool_call_id,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Audio map[string]interface{} `json:"audio,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Role string `json:"role,omitempty"`
|
||||
Content any `json:"content,omitempty"`
|
||||
ReasoningContent string `json:"reasoning_content,omitempty"`
|
||||
Reasoning string `json:"reasoning,omitempty"` // For streaming responses
|
||||
ReasoningSignature string `json:"reasoning_signature,omitempty"`
|
||||
ReasoningRedactedContent string `json:"reasoning_redacted_content,omitempty"`
|
||||
ClaudeContentBlocks []claudeChatMessageContent `json:"claude_content_blocks,omitempty"`
|
||||
ClaudeContentBlockIndex *int `json:"claude_content_block_index,omitempty"`
|
||||
ClaudeContentBlockStop *int `json:"claude_content_block_stop,omitempty"`
|
||||
ToolCalls []toolCall `json:"tool_calls,omitempty"`
|
||||
FunctionCall *functionCall `json:"function_call,omitempty"` // For legacy OpenAI format
|
||||
Refusal string `json:"refusal,omitempty"`
|
||||
ToolCallId string `json:"tool_call_id,omitempty"`
|
||||
}
|
||||
|
||||
func (m *chatMessage) handleNonStreamingReasoningContent(reasoningContentMode string) {
|
||||
|
||||
Reference in New Issue
Block a user