claude_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package model_test
  2. import (
  3. "testing"
  4. "github.com/labring/aiproxy/core/relay/model"
  5. "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestClaudeUsage(t *testing.T) {
  8. convey.Convey("ClaudeUsage", t, func() {
  9. convey.Convey("ToOpenAIUsage", func() {
  10. u := model.ClaudeUsage{
  11. InputTokens: 10,
  12. OutputTokens: 20,
  13. CacheCreationInputTokens: 5,
  14. CacheReadInputTokens: 3,
  15. ServerToolUse: &model.ClaudeServerToolUse{
  16. WebSearchRequests: 2,
  17. },
  18. }
  19. usage := u.ToOpenAIUsage()
  20. // PromptTokens = Input + Read + Creation = 10 + 3 + 5 = 18
  21. convey.So(usage.PromptTokens, convey.ShouldEqual, 18)
  22. convey.So(usage.CompletionTokens, convey.ShouldEqual, 20)
  23. convey.So(usage.TotalTokens, convey.ShouldEqual, 38)
  24. convey.So(usage.WebSearchCount, convey.ShouldEqual, 2)
  25. convey.So(usage.PromptTokensDetails.CachedTokens, convey.ShouldEqual, 3)
  26. convey.So(usage.PromptTokensDetails.CacheCreationTokens, convey.ShouldEqual, 5)
  27. })
  28. convey.Convey("ToOpenAIUsage without details", func() {
  29. u := model.ClaudeUsage{
  30. InputTokens: 10,
  31. OutputTokens: 20,
  32. }
  33. usage := u.ToOpenAIUsage()
  34. convey.So(usage.PromptTokens, convey.ShouldEqual, 10)
  35. convey.So(usage.CompletionTokens, convey.ShouldEqual, 20)
  36. convey.So(usage.TotalTokens, convey.ShouldEqual, 30)
  37. convey.So(usage.PromptTokensDetails.CachedTokens, convey.ShouldEqual, 0)
  38. })
  39. })
  40. }
  41. func TestClaudeCacheControl(t *testing.T) {
  42. convey.Convey("ClaudeCacheControl", t, func() {
  43. convey.Convey("ResetTTL", func() {
  44. cc := &model.ClaudeCacheControl{
  45. Type: "ephemeral",
  46. TTL: "5m",
  47. }
  48. cc.ResetTTL()
  49. convey.So(cc.TTL, convey.ShouldEqual, "")
  50. convey.So(cc.Type, convey.ShouldEqual, "ephemeral")
  51. })
  52. convey.Convey("ResetTTL nil", func() {
  53. var cc *model.ClaudeCacheControl
  54. res := cc.ResetTTL()
  55. convey.So(res, convey.ShouldBeNil)
  56. })
  57. })
  58. }