claude.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package model_setting
  2. import (
  3. "net/http"
  4. "one-api/setting/config"
  5. )
  6. //var claudeHeadersSettings = map[string][]string{}
  7. //
  8. //var ClaudeThinkingAdapterEnabled = true
  9. //var ClaudeThinkingAdapterMaxTokens = 8192
  10. //var ClaudeThinkingAdapterBudgetTokensPercentage = 0.8
  11. // ClaudeSettings 定义Claude模型的配置
  12. type ClaudeSettings struct {
  13. HeadersSettings map[string]map[string][]string `json:"model_headers_settings"`
  14. ThinkingAdapterEnabled bool `json:"thinking_adapter_enabled"`
  15. ThinkingAdapterMaxTokens int `json:"thinking_adapter_max_tokens"`
  16. ThinkingAdapterBudgetTokensPercentage float64 `json:"thinking_adapter_budget_tokens_percentage"`
  17. }
  18. // 默认配置
  19. var defaultClaudeSettings = ClaudeSettings{
  20. HeadersSettings: map[string]map[string][]string{},
  21. ThinkingAdapterEnabled: true,
  22. ThinkingAdapterMaxTokens: 8192,
  23. ThinkingAdapterBudgetTokensPercentage: 0.8,
  24. }
  25. // 全局实例
  26. var claudeSettings = defaultClaudeSettings
  27. func init() {
  28. // 注册到全局配置管理器
  29. config.GlobalConfig.Register("claude", &claudeSettings)
  30. }
  31. // GetClaudeSettings 获取Claude配置
  32. func GetClaudeSettings() *ClaudeSettings {
  33. return &claudeSettings
  34. }
  35. func (c *ClaudeSettings) WriteHeaders(originModel string, httpHeader *http.Header) {
  36. if headers, ok := c.HeadersSettings[originModel]; ok {
  37. for headerKey, headerValues := range headers {
  38. httpHeader.Del(headerKey)
  39. for _, headerValue := range headerValues {
  40. httpHeader.Add(headerKey, headerValue)
  41. }
  42. }
  43. }
  44. }