Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e2c2d182
authored
Sep 09, 2025
by
Calcium-Ion
Committed by
GitHub
Sep 09, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1767 from QuantumNous/copy-claude-header-from-upstream
fix: claude header was not set correctly
parents
1b1953e2
bbfbce9c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
7 deletions
+12
-7
relay/channel/aws/relay-aws.go
+6
-1
relay/channel/claude/relay-claude.go
+6
-6
No files found.
relay/channel/aws/relay-aws.go
View file @
e2c2d182
...
...
@@ -130,7 +130,12 @@ func awsHandler(c *gin.Context, info *relaycommon.RelayInfo, requestMode int) (*
Usage
:
&
dto
.
Usage
{},
}
handlerErr
:=
claude
.
HandleClaudeResponseData
(
c
,
info
,
claudeInfo
,
awsResp
.
Body
,
RequestModeMessage
)
// 复制上游 Content-Type 到客户端响应头
if
awsResp
.
ContentType
!=
nil
&&
*
awsResp
.
ContentType
!=
""
{
c
.
Writer
.
Header
()
.
Set
(
"Content-Type"
,
*
awsResp
.
ContentType
)
}
handlerErr
:=
claude
.
HandleClaudeResponseData
(
c
,
info
,
claudeInfo
,
nil
,
awsResp
.
Body
,
RequestModeMessage
)
if
handlerErr
!=
nil
{
return
handlerErr
,
nil
}
...
...
relay/channel/claude/relay-claude.go
View file @
e2c2d182
...
...
@@ -276,7 +276,7 @@ func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRe
isFirstMessage
:=
true
// 初始化system消息数组,用于累积多个system消息
var
systemMessages
[]
dto
.
ClaudeMediaMessage
for
_
,
message
:=
range
formatMessages
{
if
message
.
Role
==
"system"
{
// 根据Claude API规范,system字段使用数组格式更有通用性
...
...
@@ -401,12 +401,12 @@ func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRe
claudeMessages
=
append
(
claudeMessages
,
claudeMessage
)
}
}
// 设置累积的system消息
if
len
(
systemMessages
)
>
0
{
claudeRequest
.
System
=
systemMessages
}
claudeRequest
.
Prompt
=
""
claudeRequest
.
Messages
=
claudeMessages
return
&
claudeRequest
,
nil
...
...
@@ -716,7 +716,7 @@ func ClaudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.
return
claudeInfo
.
Usage
,
nil
}
func
HandleClaudeResponseData
(
c
*
gin
.
Context
,
info
*
relaycommon
.
RelayInfo
,
claudeInfo
*
ClaudeResponseInfo
,
data
[]
byte
,
requestMode
int
)
*
types
.
NewAPIError
{
func
HandleClaudeResponseData
(
c
*
gin
.
Context
,
info
*
relaycommon
.
RelayInfo
,
claudeInfo
*
ClaudeResponseInfo
,
httpResp
*
http
.
Response
,
data
[]
byte
,
requestMode
int
)
*
types
.
NewAPIError
{
var
claudeResponse
dto
.
ClaudeResponse
err
:=
common
.
Unmarshal
(
data
,
&
claudeResponse
)
if
err
!=
nil
{
...
...
@@ -754,7 +754,7 @@ func HandleClaudeResponseData(c *gin.Context, info *relaycommon.RelayInfo, claud
c
.
Set
(
"claude_web_search_requests"
,
claudeResponse
.
Usage
.
ServerToolUse
.
WebSearchRequests
)
}
service
.
IOCopyBytesGracefully
(
c
,
nil
,
responseData
)
service
.
IOCopyBytesGracefully
(
c
,
httpResp
,
responseData
)
return
nil
}
...
...
@@ -775,7 +775,7 @@ func ClaudeHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayI
if
common
.
DebugEnabled
{
println
(
"responseBody: "
,
string
(
responseBody
))
}
handleErr
:=
HandleClaudeResponseData
(
c
,
info
,
claudeInfo
,
responseBody
,
requestMode
)
handleErr
:=
HandleClaudeResponseData
(
c
,
info
,
claudeInfo
,
resp
,
resp
onseBody
,
requestMode
)
if
handleErr
!=
nil
{
return
nil
,
handleErr
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment