test_memory.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import pytest
  2. from app.core.runner.memory import find_memory
  3. @pytest.mark.parametrize(
  4. "data",
  5. [
  6. [{"type": "naive"}, [], []],
  7. [
  8. {"type": "naive"},
  9. [{"role": "user", "content": "text1"}],
  10. [{"role": "user", "content": "text1"}],
  11. ],
  12. [
  13. {"type": "naive"},
  14. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  15. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  16. ],
  17. [{"type": "zero"}, [], []],
  18. [
  19. {"type": "zero"},
  20. [{"role": "user", "content": "text1"}],
  21. [{"role": "user", "content": "text1"}],
  22. ],
  23. [
  24. {"type": "zero"},
  25. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  26. [{"role": "user", "content": "text2"}],
  27. ],
  28. [
  29. {"type": "zero"},
  30. [{"role": "user", "content": "text1"}, {"role": "assistant", "content": "text2"}],
  31. [{"role": "user", "content": "text1"}, {"role": "assistant", "content": "text2"}],
  32. ],
  33. [{"type": "window"}, [], []],
  34. [
  35. {"type": "window", "window_size": 1, "max_token_size": 100},
  36. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  37. [{"role": "user", "content": "text2"}],
  38. ],
  39. [
  40. {"type": "window", "window_size": 1, "max_token_size": 100},
  41. [{"role": "user", "content": "text1"}],
  42. [{"role": "user", "content": "text1"}],
  43. ],
  44. [
  45. {"type": "window", "window_size": 2, "max_token_size": 6},
  46. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  47. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  48. ],
  49. [
  50. {"type": "window", "window_size": 2, "max_token_size": 5},
  51. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  52. [{"role": "user", "content": "text2"}],
  53. ],
  54. [
  55. {"type": "window", "window_size": 2, "max_token_size": 1},
  56. [{"role": "user", "content": "text1"}, {"role": "user", "content": "text2"}],
  57. [{"role": "user", "content": "text2"}],
  58. ],
  59. ],
  60. )
  61. def test_memory(data):
  62. (memory, messages, expect_result) = data
  63. memory = find_memory(assistants_metadata=memory)
  64. result = memory.integrate_context(messages=messages)
  65. assert result == expect_result
  66. @pytest.mark.parametrize(
  67. "kwargs",
  68. [
  69. {"window_size": 0, "max_token_size": 2000},
  70. {"window_size": -1, "max_token_size": 2000},
  71. {"window_size": 20, "max_token_size": 0},
  72. {"window_size": 20, "max_token_size": -1},
  73. {"window_size": 0, "max_token_size": 0},
  74. ],
  75. )
  76. def test_window_memory_initial_exception(kwargs):
  77. with pytest.raises(ValueError):
  78. kwargs["type"] = "window"
  79. memory = find_memory(assistants_metadata=kwargs)