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
65b12d77
authored
Aug 07, 2025
by
Calcium-Ion
Committed by
GitHub
Aug 07, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1521 from QuantumNous/support-qwen-claude
feat: support qwen claude format
parents
76753cea
d37af13b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
27 deletions
+44
-27
relay/channel/ali/adaptor.go
+38
-24
relay/channel/claude/adaptor.go
+1
-1
relay/channel/claude/relay-claude.go
+1
-1
relay/channel/vertex/adaptor.go
+1
-1
service/error.go
+3
-0
No files found.
relay/channel/ali/adaptor.go
View file @
65b12d77
...
...
@@ -8,6 +8,7 @@ import (
"net/http"
"one-api/dto"
"one-api/relay/channel"
"one-api/relay/channel/claude"
"one-api/relay/channel/openai"
relaycommon
"one-api/relay/common"
"one-api/relay/constant"
...
...
@@ -23,10 +24,8 @@ func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.RelayInfo, *dt
return
nil
,
errors
.
New
(
"not implemented"
)
}
func
(
a
*
Adaptor
)
ConvertClaudeRequest
(
*
gin
.
Context
,
*
relaycommon
.
RelayInfo
,
*
dto
.
ClaudeRequest
)
(
any
,
error
)
{
//TODO implement me
panic
(
"implement me"
)
return
nil
,
nil
func
(
a
*
Adaptor
)
ConvertClaudeRequest
(
c
*
gin
.
Context
,
info
*
relaycommon
.
RelayInfo
,
req
*
dto
.
ClaudeRequest
)
(
any
,
error
)
{
return
req
,
nil
}
func
(
a
*
Adaptor
)
Init
(
info
*
relaycommon
.
RelayInfo
)
{
...
...
@@ -34,18 +33,24 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo) {
func
(
a
*
Adaptor
)
GetRequestURL
(
info
*
relaycommon
.
RelayInfo
)
(
string
,
error
)
{
var
fullRequestURL
string
switch
info
.
RelayMode
{
case
constant
.
RelayModeEmbeddings
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/compatible-mode/v1/embeddings"
,
info
.
BaseUrl
)
case
constant
.
RelayModeRerank
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/api/v1/services/rerank/text-rerank/text-rerank"
,
info
.
BaseUrl
)
case
constant
.
RelayModeImagesGenerations
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/api/v1/services/aigc/text2image/image-synthesis"
,
info
.
BaseUrl
)
case
constant
.
RelayModeCompletions
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/compatible-mode/v1/completions"
,
info
.
BaseUrl
)
switch
info
.
RelayFormat
{
case
relaycommon
.
RelayFormatClaude
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/api/v2/apps/claude-code-proxy/v1/messages"
,
info
.
BaseUrl
)
default
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/compatible-mode/v1/chat/completions"
,
info
.
BaseUrl
)
switch
info
.
RelayMode
{
case
constant
.
RelayModeEmbeddings
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/compatible-mode/v1/embeddings"
,
info
.
BaseUrl
)
case
constant
.
RelayModeRerank
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/api/v1/services/rerank/text-rerank/text-rerank"
,
info
.
BaseUrl
)
case
constant
.
RelayModeImagesGenerations
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/api/v1/services/aigc/text2image/image-synthesis"
,
info
.
BaseUrl
)
case
constant
.
RelayModeCompletions
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/compatible-mode/v1/completions"
,
info
.
BaseUrl
)
default
:
fullRequestURL
=
fmt
.
Sprintf
(
"%s/compatible-mode/v1/chat/completions"
,
info
.
BaseUrl
)
}
}
return
fullRequestURL
,
nil
}
...
...
@@ -112,18 +117,27 @@ func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInfo, request
}
func
(
a
*
Adaptor
)
DoResponse
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
info
*
relaycommon
.
RelayInfo
)
(
usage
any
,
err
*
types
.
NewAPIError
)
{
switch
info
.
RelayMode
{
case
constant
.
RelayModeImagesGenerations
:
err
,
usage
=
aliImageHandler
(
c
,
resp
,
info
)
case
constant
.
RelayModeEmbeddings
:
err
,
usage
=
aliEmbeddingHandler
(
c
,
resp
)
case
constant
.
RelayModeRerank
:
err
,
usage
=
RerankHandler
(
c
,
resp
,
info
)
default
:
switch
info
.
RelayFormat
{
case
relaycommon
.
RelayFormatClaude
:
if
info
.
IsStream
{
usage
,
err
=
openai
.
OaiStreamHandler
(
c
,
info
,
resp
)
err
,
usage
=
claude
.
ClaudeStreamHandler
(
c
,
resp
,
info
,
claude
.
RequestModeMessage
)
}
else
{
usage
,
err
=
openai
.
OpenaiHandler
(
c
,
info
,
resp
)
err
,
usage
=
claude
.
ClaudeHandler
(
c
,
resp
,
info
,
claude
.
RequestModeMessage
)
}
default
:
switch
info
.
RelayMode
{
case
constant
.
RelayModeImagesGenerations
:
err
,
usage
=
aliImageHandler
(
c
,
resp
,
info
)
case
constant
.
RelayModeEmbeddings
:
err
,
usage
=
aliEmbeddingHandler
(
c
,
resp
)
case
constant
.
RelayModeRerank
:
err
,
usage
=
RerankHandler
(
c
,
resp
,
info
)
default
:
if
info
.
IsStream
{
usage
,
err
=
openai
.
OaiStreamHandler
(
c
,
info
,
resp
)
}
else
{
usage
,
err
=
openai
.
OpenaiHandler
(
c
,
info
,
resp
)
}
}
}
return
...
...
relay/channel/claude/adaptor.go
View file @
65b12d77
...
...
@@ -104,7 +104,7 @@ func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycom
if
info
.
IsStream
{
err
,
usage
=
ClaudeStreamHandler
(
c
,
resp
,
info
,
a
.
RequestMode
)
}
else
{
err
,
usage
=
ClaudeHandler
(
c
,
resp
,
a
.
RequestMode
,
info
)
err
,
usage
=
ClaudeHandler
(
c
,
resp
,
info
,
a
.
RequestMode
)
}
return
}
...
...
relay/channel/claude/relay-claude.go
View file @
65b12d77
...
...
@@ -740,7 +740,7 @@ func HandleClaudeResponseData(c *gin.Context, info *relaycommon.RelayInfo, claud
return
nil
}
func
ClaudeHandler
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
requestMode
int
,
info
*
relaycommon
.
RelayInfo
)
(
*
types
.
NewAPIError
,
*
dto
.
Usage
)
{
func
ClaudeHandler
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
info
*
relaycommon
.
RelayInfo
,
requestMode
int
)
(
*
types
.
NewAPIError
,
*
dto
.
Usage
)
{
defer
common
.
CloseResponseBodyGracefully
(
resp
)
claudeInfo
:=
&
ClaudeResponseInfo
{
...
...
relay/channel/vertex/adaptor.go
View file @
65b12d77
...
...
@@ -238,7 +238,7 @@ func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycom
}
else
{
switch
a
.
RequestMode
{
case
RequestModeClaude
:
err
,
usage
=
claude
.
ClaudeHandler
(
c
,
resp
,
claude
.
RequestModeMessage
,
info
)
err
,
usage
=
claude
.
ClaudeHandler
(
c
,
resp
,
info
,
claude
.
RequestModeMessage
)
case
RequestModeGemini
:
if
info
.
RelayMode
==
constant
.
RelayModeGemini
{
usage
,
err
=
gemini
.
GeminiTextGenerationHandler
(
c
,
info
,
resp
)
...
...
service/error.go
View file @
65b12d77
...
...
@@ -93,6 +93,9 @@ func RelayErrorHandler(resp *http.Response, showBodyWhenFail bool) (newApiErr *t
if
showBodyWhenFail
{
newApiErr
.
Err
=
fmt
.
Errorf
(
"bad response status code %d, body: %s"
,
resp
.
StatusCode
,
string
(
responseBody
))
}
else
{
if
common
.
DebugEnabled
{
println
(
fmt
.
Sprintf
(
"bad response status code %d, body: %s"
,
resp
.
StatusCode
,
string
(
responseBody
)))
}
newApiErr
.
Err
=
fmt
.
Errorf
(
"bad response status code %d"
,
resp
.
StatusCode
)
}
return
...
...
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