Просмотр исходного кода

feat: first response time support aws

CalciumIon 1 год назад
Родитель
Сommit
1117112225
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      relay/channel/aws/relay-aws.go

+ 6 - 0
relay/channel/aws/relay-aws.go

@@ -14,6 +14,7 @@ import (
 	"one-api/relay/channel/claude"
 	"one-api/relay/channel/claude"
 	relaycommon "one-api/relay/common"
 	relaycommon "one-api/relay/common"
 	"strings"
 	"strings"
+	"time"
 
 
 	"github.com/aws/aws-sdk-go-v2/aws"
 	"github.com/aws/aws-sdk-go-v2/aws"
 	"github.com/aws/aws-sdk-go-v2/credentials"
 	"github.com/aws/aws-sdk-go-v2/credentials"
@@ -156,6 +157,7 @@ func awsStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, requestMode i
 	var usage relaymodel.Usage
 	var usage relaymodel.Usage
 	var id string
 	var id string
 	var model string
 	var model string
+	isFirst := true
 	createdTime := common.GetTimestamp()
 	createdTime := common.GetTimestamp()
 	c.Stream(func(w io.Writer) bool {
 	c.Stream(func(w io.Writer) bool {
 		event, ok := <-stream.Events()
 		event, ok := <-stream.Events()
@@ -166,6 +168,10 @@ func awsStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, requestMode i
 
 
 		switch v := event.(type) {
 		switch v := event.(type) {
 		case *types.ResponseStreamMemberChunk:
 		case *types.ResponseStreamMemberChunk:
+			if isFirst {
+				isFirst = false
+				info.FirstResponseTime = time.Now()
+			}
 			claudeResp := new(claude.ClaudeResponse)
 			claudeResp := new(claude.ClaudeResponse)
 			err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(claudeResp)
 			err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(claudeResp)
 			if err != nil {
 			if err != nil {