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
b3e67d5e
authored
Sep 08, 2025
by
Calcium-Ion
Committed by
GitHub
Sep 08, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1692 from yunayj/alpha
修改claude system参数为数组,增加通用性
parents
83191981
fe71af94
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
6 deletions
+21
-6
relay/channel/claude/relay-claude.go
+21
-6
No files found.
relay/channel/claude/relay-claude.go
View file @
b3e67d5e
...
...
@@ -274,19 +274,28 @@ func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRe
claudeMessages
:=
make
([]
dto
.
ClaudeMessage
,
0
)
isFirstMessage
:=
true
// 初始化system消息数组,用于累积多个system消息
var
systemMessages
[]
dto
.
ClaudeMediaMessage
for
_
,
message
:=
range
formatMessages
{
if
message
.
Role
==
"system"
{
// 根据Claude API规范,system字段使用数组格式更有通用性
if
message
.
IsStringContent
()
{
claudeRequest
.
System
=
message
.
StringContent
()
systemMessages
=
append
(
systemMessages
,
dto
.
ClaudeMediaMessage
{
Type
:
"text"
,
Text
:
common
.
GetPointer
[
string
](
message
.
StringContent
()),
})
}
else
{
contents
:=
message
.
ParseContent
()
content
:=
""
for
_
,
ctx
:=
range
contents
{
// 支持复合内容的system消息(虽然不常见,但需要考虑完整性)
for
_
,
ctx
:=
range
message
.
ParseContent
()
{
if
ctx
.
Type
==
"text"
{
content
+=
ctx
.
Text
systemMessages
=
append
(
systemMessages
,
dto
.
ClaudeMediaMessage
{
Type
:
"text"
,
Text
:
common
.
GetPointer
[
string
](
ctx
.
Text
),
})
}
// 未来可以在这里扩展对图片等其他类型的支持
}
claudeRequest
.
System
=
content
}
}
else
{
if
isFirstMessage
{
...
...
@@ -392,6 +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
...
...
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