malt666 commited on
Commit
2033651
·
verified ·
1 Parent(s): 89561dd

Upload main.go

Browse files
Files changed (1) hide show
  1. main.go +30 -3
main.go CHANGED
@@ -226,23 +226,50 @@ func countTokensWithClaude(req TokenCountRequest) (TokenCountResponse, error) {
226
  // 准备请求Anthropic API
227
  log.Printf("开始Claude API请求: 模型=%s, 消息数量=%d", req.Model, len(req.Messages))
228
 
229
- // 验证消息格式
 
230
  for i, msg := range req.Messages {
231
  if msg.Content == "" {
232
- log.Printf("警告: 消息 #%d 内容为空,可能导致请求失败", i)
 
233
  }
234
  if msg.Role != "user" && msg.Role != "assistant" {
235
  log.Printf("警告: 消息 #%d 角色'%s'不是标准角色(user/assistant),可能导致请求失败", i, msg.Role)
236
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  }
238
 
239
  client := &http.Client{}
240
- data, err := json.Marshal(req)
241
  if err != nil {
242
  log.Printf("错误: 序列化Claude请求失败: %v", err)
243
  return TokenCountResponse{}, fmt.Errorf("序列化请求失败: %v", err)
244
  }
245
 
 
 
 
 
 
 
 
246
  // 创建请求
247
  request, err := http.NewRequest("POST", "https://api.anthropic.com/v1/messages/count_tokens", bytes.NewBuffer(data))
248
  if err != nil {
 
226
  // 准备请求Anthropic API
227
  log.Printf("开始Claude API请求: 模型=%s, 消息数量=%d", req.Model, len(req.Messages))
228
 
229
+ // 验证并过滤空内容的消息
230
+ var filteredMessages []Message
231
  for i, msg := range req.Messages {
232
  if msg.Content == "" {
233
+ log.Printf("警告: 消息 #%d 内容为空,将被过滤掉", i)
234
+ continue // 跳过空内容消息
235
  }
236
  if msg.Role != "user" && msg.Role != "assistant" {
237
  log.Printf("警告: 消息 #%d 角色'%s'不是标准角色(user/assistant),可能导致请求失败", i, msg.Role)
238
  }
239
+ filteredMessages = append(filteredMessages, msg)
240
+ }
241
+
242
+ if len(filteredMessages) == 0 {
243
+ log.Printf("错误: 过滤后没有有效消息")
244
+ return TokenCountResponse{}, fmt.Errorf("没有有效消息:所有消息内容都为空")
245
+ }
246
+
247
+ // 创建新请求,使用过滤后的消息
248
+ filteredReq := TokenCountRequest{
249
+ Model: req.Model,
250
+ Messages: filteredMessages,
251
+ System: req.System,
252
+ }
253
+
254
+ // 记录过滤后的消息数量
255
+ if len(filteredMessages) != len(req.Messages) {
256
+ log.Printf("消息过滤: 原始消息数=%d, 过滤后消息数=%d", len(req.Messages), len(filteredMessages))
257
  }
258
 
259
  client := &http.Client{}
260
+ data, err := json.Marshal(filteredReq)
261
  if err != nil {
262
  log.Printf("错误: 序列化Claude请求失败: %v", err)
263
  return TokenCountResponse{}, fmt.Errorf("序列化请求失败: %v", err)
264
  }
265
 
266
+ // 记录请求内容用于调试
267
+ if len(data) < 1000 {
268
+ log.Printf("Claude请求内容: %s", string(data))
269
+ } else {
270
+ log.Printf("Claude请求内容较大,长度=%d字节", len(data))
271
+ }
272
+
273
  // 创建请求
274
  request, err := http.NewRequest("POST", "https://api.anthropic.com/v1/messages/count_tokens", bytes.NewBuffer(data))
275
  if err != nil {