freeplay 0.4.1__tar.gz → 0.5.0a1__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 (22) hide show
  1. {freeplay-0.4.1 → freeplay-0.5.0a1}/PKG-INFO +1 -1
  2. {freeplay-0.4.1 → freeplay-0.5.0a1}/pyproject.toml +1 -1
  3. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/prompts.py +0 -4
  4. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/recordings.py +26 -20
  5. {freeplay-0.4.1 → freeplay-0.5.0a1}/LICENSE +0 -0
  6. {freeplay-0.4.1 → freeplay-0.5.0a1}/README.md +0 -0
  7. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/__init__.py +0 -0
  8. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/api_support.py +0 -0
  9. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/errors.py +0 -0
  10. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/freeplay.py +0 -0
  11. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/freeplay_cli.py +0 -0
  12. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/llm_parameters.py +0 -0
  13. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/model.py +0 -0
  14. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/py.typed +0 -0
  15. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/__init__.py +0 -0
  16. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/adapters.py +0 -0
  17. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/customer_feedback.py +0 -0
  18. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/sessions.py +0 -0
  19. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/test_cases.py +0 -0
  20. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/resources/test_runs.py +0 -0
  21. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/support.py +0 -0
  22. {freeplay-0.4.1 → freeplay-0.5.0a1}/src/freeplay/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: freeplay
3
- Version: 0.4.1
3
+ Version: 0.5.0a1
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.4.1"
3
+ version = "0.5.0a1"
4
4
  description = ""
5
5
  authors = ["FreePlay Engineering <engineering@freeplay.ai>"]
6
6
  license = "MIT"
@@ -100,8 +100,6 @@ class PromptInfo:
100
100
  provider: str
101
101
  model: str
102
102
  flavor_name: str
103
- project_id: str
104
-
105
103
 
106
104
  class FormattedPrompt:
107
105
  def __init__(
@@ -540,7 +538,6 @@ class Prompts:
540
538
  model=model,
541
539
  flavor_name=prompt.metadata.flavor,
542
540
  provider_info=prompt.metadata.provider_info,
543
- project_id=prompt.project_id
544
541
  )
545
542
 
546
543
  return TemplatePrompt(prompt_info, prompt.content, prompt.tool_schema)
@@ -576,7 +573,6 @@ class Prompts:
576
573
  model=model,
577
574
  flavor_name=prompt.metadata.flavor,
578
575
  provider_info=prompt.metadata.provider_info,
579
- project_id=prompt.project_id
580
576
  )
581
577
 
582
578
  return TemplatePrompt(prompt_info, prompt.content, prompt.tool_schema)
@@ -1,8 +1,8 @@
1
1
  import json
2
2
  import logging
3
- from dataclasses import dataclass
3
+ from dataclasses import dataclass, field
4
4
  from typing import Any, Dict, List, Literal, Optional, Union
5
- from uuid import UUID
5
+ from uuid import UUID, uuid4
6
6
 
7
7
  from requests import HTTPError
8
8
 
@@ -37,11 +37,11 @@ ApiStyle = Union[Literal['batch'], Literal['default']]
37
37
 
38
38
  @dataclass
39
39
  class CallInfo:
40
- provider: str
41
- model: str
42
- start_time: float
43
- end_time: float
44
- model_parameters: LLMParameters
40
+ provider: Optional[str] = None
41
+ model: Optional[str] = None
42
+ start_time: Optional[float] = None
43
+ end_time: Optional[float] = None
44
+ model_parameters: Optional[LLMParameters] = None
45
45
  provider_info: Optional[Dict[str, Any]] = None
46
46
  usage: Optional[UsageTokens] = None
47
47
  api_style: Optional[ApiStyle] = None
@@ -77,12 +77,15 @@ class ResponseInfo:
77
77
 
78
78
  @dataclass
79
79
  class RecordPayload:
80
+ project_id: str
80
81
  all_messages: List[Dict[str, Any]]
81
- inputs: InputVariables
82
82
 
83
- session_info: SessionInfo
84
- prompt_info: PromptInfo
85
- call_info: CallInfo
83
+ session_info: SessionInfo = field(
84
+ default_factory=lambda: SessionInfo(session_id=str(uuid4()), custom_metadata=None)
85
+ )
86
+ inputs: Optional[InputVariables] = None
87
+ prompt_info: Optional[PromptInfo] = None
88
+ call_info: Optional[CallInfo] = None
86
89
  media_inputs: Optional[MediaInputMap] = None
87
90
  tool_schema: Optional[List[Dict[str, Any]]] = None
88
91
  response_info: Optional[ResponseInfo] = None
@@ -132,19 +135,25 @@ class Recordings:
132
135
  "inputs": record_payload.inputs,
133
136
  "tool_schema": record_payload.tool_schema,
134
137
  "session_info": {"custom_metadata": record_payload.session_info.custom_metadata},
135
- "prompt_info": {
138
+
139
+ }
140
+
141
+ if record_payload.prompt_info is not None:
142
+ record_api_payload["prompt_info"] = {
136
143
  "environment": record_payload.prompt_info.environment,
137
144
  "prompt_template_version_id": record_payload.prompt_info.prompt_template_version_id,
138
- },
139
- "call_info": {
145
+ }
146
+
147
+ if record_payload.call_info is not None:
148
+ record_api_payload["call_info"] = {
140
149
  "start_time": record_payload.call_info.start_time,
141
150
  "end_time": record_payload.call_info.end_time,
142
151
  "model": record_payload.call_info.model,
143
152
  "provider": record_payload.call_info.provider,
144
153
  "provider_info": record_payload.call_info.provider_info,
145
154
  "llm_parameters": record_payload.call_info.model_parameters,
155
+ "api_style": record_payload.call_info.api_style,
146
156
  }
147
- }
148
157
 
149
158
  if record_payload.completion_id is not None:
150
159
  record_api_payload['completion_id'] = str(record_payload.completion_id)
@@ -175,15 +184,12 @@ class Recordings:
175
184
  "trace_id": record_payload.trace_info.trace_id
176
185
  }
177
186
 
178
- if record_payload.call_info.usage is not None:
187
+ if record_payload.call_info is not None and record_payload.call_info.usage is not None:
179
188
  record_api_payload['call_info']['usage'] = {
180
189
  "prompt_tokens": record_payload.call_info.usage.prompt_tokens,
181
190
  "completion_tokens": record_payload.call_info.usage.completion_tokens,
182
191
  }
183
192
 
184
- if record_payload.call_info.api_style is not None:
185
- record_api_payload['call_info']['api_style'] = record_payload.call_info.api_style
186
-
187
193
  if record_payload.media_inputs is not None:
188
194
  record_api_payload['media_inputs'] = {
189
195
  name: media_inputs_to_json(media_input)
@@ -193,7 +199,7 @@ class Recordings:
193
199
  try:
194
200
  recorded_response = api_support.post_raw(
195
201
  api_key=self.call_support.freeplay_api_key,
196
- url=f'{self.call_support.api_base}/v2/projects/{record_payload.prompt_info.project_id}/sessions/{record_payload.session_info.session_id}/completions',
202
+ url=f'{self.call_support.api_base}/v2/projects/{record_payload.project_id}/sessions/{record_payload.session_info.session_id}/completions',
197
203
  payload=record_api_payload
198
204
  )
199
205
  recorded_response.raise_for_status()
File without changes
File without changes