|
@@ -674,7 +674,7 @@ func HandleStreamFinalResponse(c *gin.Context, info *relaycommon.RelayInfo, clau
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func ClaudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, requestMode int) (*types.NewAPIError, *dto.Usage) {
|
|
|
|
|
|
|
+func ClaudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, requestMode int) (*dto.Usage, *types.NewAPIError) {
|
|
|
claudeInfo := &ClaudeResponseInfo{
|
|
claudeInfo := &ClaudeResponseInfo{
|
|
|
ResponseId: helper.GetResponseID(c),
|
|
ResponseId: helper.GetResponseID(c),
|
|
|
Created: common.GetTimestamp(),
|
|
Created: common.GetTimestamp(),
|
|
@@ -691,11 +691,11 @@ func ClaudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.
|
|
|
return true
|
|
return true
|
|
|
})
|
|
})
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return err, nil
|
|
|
|
|
|
|
+ return nil, err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
HandleStreamFinalResponse(c, info, claudeInfo, requestMode)
|
|
HandleStreamFinalResponse(c, info, claudeInfo, requestMode)
|
|
|
- return nil, claudeInfo.Usage
|
|
|
|
|
|
|
+ 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, data []byte, requestMode int) *types.NewAPIError {
|
|
@@ -740,7 +740,7 @@ func HandleClaudeResponseData(c *gin.Context, info *relaycommon.RelayInfo, claud
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func ClaudeHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, requestMode int) (*types.NewAPIError, *dto.Usage) {
|
|
|
|
|
|
|
+func ClaudeHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, requestMode int) (*dto.Usage, *types.NewAPIError) {
|
|
|
defer service.CloseResponseBodyGracefully(resp)
|
|
defer service.CloseResponseBodyGracefully(resp)
|
|
|
|
|
|
|
|
claudeInfo := &ClaudeResponseInfo{
|
|
claudeInfo := &ClaudeResponseInfo{
|
|
@@ -752,16 +752,16 @@ func ClaudeHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayI
|
|
|
}
|
|
}
|
|
|
responseBody, err := io.ReadAll(resp.Body)
|
|
responseBody, err := io.ReadAll(resp.Body)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return types.NewError(err, types.ErrorCodeBadResponseBody), nil
|
|
|
|
|
|
|
+ return nil, types.NewError(err, types.ErrorCodeBadResponseBody)
|
|
|
}
|
|
}
|
|
|
if common.DebugEnabled {
|
|
if common.DebugEnabled {
|
|
|
println("responseBody: ", string(responseBody))
|
|
println("responseBody: ", string(responseBody))
|
|
|
}
|
|
}
|
|
|
handleErr := HandleClaudeResponseData(c, info, claudeInfo, responseBody, requestMode)
|
|
handleErr := HandleClaudeResponseData(c, info, claudeInfo, responseBody, requestMode)
|
|
|
if handleErr != nil {
|
|
if handleErr != nil {
|
|
|
- return handleErr, nil
|
|
|
|
|
|
|
+ return nil, handleErr
|
|
|
}
|
|
}
|
|
|
- return nil, claudeInfo.Usage
|
|
|
|
|
|
|
+ return claudeInfo.Usage, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func mapToolChoice(toolChoice any, parallelToolCalls *bool) *dto.ClaudeToolChoice {
|
|
func mapToolChoice(toolChoice any, parallelToolCalls *bool) *dto.ClaudeToolChoice {
|