freeplay 0.3.14__tar.gz → 0.3.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. {freeplay-0.3.14 → freeplay-0.3.15}/PKG-INFO +1 -1
  2. {freeplay-0.3.14 → freeplay-0.3.15}/pyproject.toml +1 -1
  3. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/__init__.py +2 -1
  4. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/recordings.py +20 -2
  5. {freeplay-0.3.14 → freeplay-0.3.15}/LICENSE +0 -0
  6. {freeplay-0.3.14 → freeplay-0.3.15}/README.md +0 -0
  7. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/api_support.py +0 -0
  8. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/errors.py +0 -0
  9. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/freeplay.py +0 -0
  10. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/freeplay_cli.py +0 -0
  11. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/llm_parameters.py +0 -0
  12. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/model.py +0 -0
  13. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/py.typed +0 -0
  14. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/__init__.py +0 -0
  15. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/customer_feedback.py +0 -0
  16. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/prompts.py +0 -0
  17. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/sessions.py +0 -0
  18. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/test_cases.py +0 -0
  19. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/resources/test_runs.py +0 -0
  20. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/support.py +0 -0
  21. {freeplay-0.3.14 → freeplay-0.3.15}/src/freeplay/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: freeplay
3
- Version: 0.3.14
3
+ Version: 0.3.15
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: FreePlay Engineering
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "freeplay"
3
- version = "0.3.14"
3
+ version = "0.3.15"
4
4
  description = ""
5
5
  authors = ["FreePlay Engineering <engineering@freeplay.ai>"]
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  from .freeplay import Freeplay
2
2
  from .resources.prompts import PromptInfo
3
- from .resources.recordings import CallInfo, ResponseInfo, RecordPayload, TestRunInfo
3
+ from .resources.recordings import CallInfo, ResponseInfo, RecordPayload, TestRunInfo, UsageTokens
4
4
  from .resources.sessions import SessionInfo, TraceInfo
5
5
 
6
6
  __all__ = [
@@ -12,4 +12,5 @@ __all__ = [
12
12
  'SessionInfo',
13
13
  'TestRunInfo',
14
14
  'TraceInfo',
15
+ 'UsageTokens',
15
16
  ]
@@ -17,6 +17,12 @@ from freeplay.support import CallSupport
17
17
  logger = logging.getLogger(__name__)
18
18
 
19
19
 
20
+ @dataclass
21
+ class UsageTokens:
22
+ prompt_tokens: int
23
+ completion_tokens: int
24
+
25
+
20
26
  @dataclass
21
27
  class CallInfo:
22
28
  provider: str
@@ -25,9 +31,15 @@ class CallInfo:
25
31
  end_time: float
26
32
  model_parameters: LLMParameters
27
33
  provider_info: Optional[Dict[str, Any]] = None
34
+ usage: Optional[UsageTokens] = None
28
35
 
29
36
  @staticmethod
30
- def from_prompt_info(prompt_info: PromptInfo, start_time: float, end_time: float) -> 'CallInfo':
37
+ def from_prompt_info(
38
+ prompt_info: PromptInfo,
39
+ start_time: float,
40
+ end_time: float,
41
+ usage: Optional[UsageTokens] = None
42
+ ) -> 'CallInfo':
31
43
  return CallInfo(
32
44
  provider=prompt_info.provider,
33
45
  model=prompt_info.model,
@@ -35,6 +47,7 @@ class CallInfo:
35
47
  end_time=end_time,
36
48
  model_parameters=prompt_info.model_parameters,
37
49
  provider_info=prompt_info.provider_info,
50
+ usage=usage
38
51
  )
39
52
 
40
53
 
@@ -138,6 +151,12 @@ class Recordings:
138
151
  "trace_id": record_payload.trace_info.trace_id
139
152
  }
140
153
 
154
+ if record_payload.call_info.usage is not None:
155
+ record_api_payload['call_info']['usage'] = {
156
+ "prompt_tokens": record_payload.call_info.usage.prompt_tokens,
157
+ "completion_tokens": record_payload.call_info.usage.completion_tokens,
158
+ }
159
+
141
160
  try:
142
161
  recorded_response = api_support.post_raw(
143
162
  api_key=self.call_support.freeplay_api_key,
@@ -163,7 +182,6 @@ class Recordings:
163
182
 
164
183
  raise FreeplayError(message) from e
165
184
 
166
-
167
185
  def update(self, record_update_payload: RecordUpdatePayload) -> RecordResponse: # type: ignore
168
186
  record_update_api_payload: Dict[str, Any] = {
169
187
  "new_messages": record_update_payload.new_messages,
File without changes
File without changes