|
|
@@ -34,22 +34,34 @@ func ClaudeToOpenAIRequest(claudeRequest dto.ClaudeRequest, info *relaycommon.Re
|
|
|
|
|
|
isOpenRouter := info.ChannelType == constant.ChannelTypeOpenRouter
|
|
|
|
|
|
- if claudeRequest.Thinking != nil && claudeRequest.Thinking.Type == "enabled" {
|
|
|
- if isOpenRouter {
|
|
|
- reasoning := openrouter.RequestReasoning{
|
|
|
- MaxTokens: claudeRequest.Thinking.GetBudgetTokens(),
|
|
|
+ if isOpenRouter {
|
|
|
+ if effort := claudeRequest.GetEfforts(); effort != "" {
|
|
|
+ effortBytes, _ := json.Marshal(effort)
|
|
|
+ openAIRequest.Verbosity = effortBytes
|
|
|
+ }
|
|
|
+ if claudeRequest.Thinking != nil {
|
|
|
+ var reasoning openrouter.RequestReasoning
|
|
|
+ if claudeRequest.Thinking.Type == "enabled" {
|
|
|
+ reasoning = openrouter.RequestReasoning{
|
|
|
+ Enabled: true,
|
|
|
+ MaxTokens: claudeRequest.Thinking.GetBudgetTokens(),
|
|
|
+ }
|
|
|
+ } else if claudeRequest.Thinking.Type == "adaptive" {
|
|
|
+ reasoning = openrouter.RequestReasoning{
|
|
|
+ Enabled: true,
|
|
|
+ }
|
|
|
}
|
|
|
reasoningJSON, err := json.Marshal(reasoning)
|
|
|
if err != nil {
|
|
|
return nil, fmt.Errorf("failed to marshal reasoning: %w", err)
|
|
|
}
|
|
|
openAIRequest.Reasoning = reasoningJSON
|
|
|
- } else {
|
|
|
- thinkingSuffix := "-thinking"
|
|
|
- if strings.HasSuffix(info.OriginModelName, thinkingSuffix) &&
|
|
|
- !strings.HasSuffix(openAIRequest.Model, thinkingSuffix) {
|
|
|
- openAIRequest.Model = openAIRequest.Model + thinkingSuffix
|
|
|
- }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ thinkingSuffix := "-thinking"
|
|
|
+ if strings.HasSuffix(info.OriginModelName, thinkingSuffix) &&
|
|
|
+ !strings.HasSuffix(openAIRequest.Model, thinkingSuffix) {
|
|
|
+ openAIRequest.Model = openAIRequest.Model + thinkingSuffix
|
|
|
}
|
|
|
}
|
|
|
|