Skip to content

Commit 13686e9

Browse files
authored
increment project query count for manager features POC (#78)
* increment project query count for manager features POC * bump version and add release notes * fix tests * more fixes * reformat * reformat again
1 parent 750fe30 commit 13686e9

File tree

6 files changed

+37
-7
lines changed

6 files changed

+37
-7
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.0.14] 2025-04-23
11+
- Update `codex-sdk` dependency to `0.1.0-alpha.17`.
12+
- Capture data for the number of times the validator API is called on a Codex project.
13+
1014
## [1.0.13] - 2025-04-22
1115

1216
- Update `cleanlab-tlm` dependancy to `~=1.1`.
@@ -67,7 +71,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6771

6872
- Initial release of the `cleanlab-codex` client library.
6973

70-
[Unreleased]: https://github.com/cleanlab/cleanlab-codex/compare/v1.0.13...HEAD
74+
[Unreleased]: https://github.com/cleanlab/cleanlab-codex/compare/v1.0.14...HEAD
75+
[1.0.14]: https://github.com/cleanlab/cleanlab-codex/compare/v1.0.13...v1.0.14
7176
[1.0.13]: https://github.com/cleanlab/cleanlab-codex/compare/v1.0.12...v1.0.13
7277
[1.0.12]: https://github.com/cleanlab/cleanlab-codex/compare/v1.0.11...v1.0.12
7378
[1.0.11]: https://github.com/cleanlab/cleanlab-codex/compare/v1.0.10...v1.0.11

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ classifiers = [
2626
]
2727
dependencies = [
2828
"cleanlab-tlm~=1.1",
29-
"codex-sdk==0.1.0-alpha.14",
29+
"codex-sdk==0.1.0-alpha.17",
3030
"pydantic>=2.0.0, <3",
3131
]
3232

src/cleanlab_codex/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# SPDX-License-Identifier: MIT
2-
__version__ = "1.0.13"
2+
__version__ = "1.0.14"

src/cleanlab_codex/project.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,3 +221,6 @@ def _query_project(
221221
return query_res.answer, entry
222222

223223
return fallback_answer, entry
224+
225+
def increment_queries(self) -> None:
226+
self._sdk_client.projects.increment_queries(self._id)

src/cleanlab_codex/validator.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ def validate(
140140
final_metadata.update(processed_metadata)
141141
expert_answer = self._remediate(query=query, metadata=final_metadata)
142142

143+
self._project.increment_queries()
144+
143145
return {
144146
"expert_answer": expert_answer,
145147
"is_bad_response": is_bad_response,
@@ -183,6 +185,8 @@ async def validate_async(
183185
if is_bad_response:
184186
expert_answer = self._remediate(query=query, metadata=final_metadata)
185187

188+
self._project.increment_queries()
189+
186190
return {
187191
"expert_answer": expert_answer,
188192
"is_bad_response": is_bad_response,

tests/test_project.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@
77
from codex.types.projects.access_key_retrieve_project_id_response import (
88
AccessKeyRetrieveProjectIDResponse,
99
)
10-
from codex.types.projects.entry_query_response import Entry as SDKEntry
11-
from codex.types.projects.entry_query_response import EntryQueryResponse
10+
from codex.types.projects.entry_query_response import (
11+
Entry as SDKEntry,
12+
)
13+
from codex.types.projects.entry_query_response import (
14+
EntryManagedMetadata,
15+
EntryManagedMetadataTrustworthiness,
16+
EntryQueryResponse,
17+
)
1218

1319
from cleanlab_codex.project import MissingProjectError, Project
1420
from cleanlab_codex.types.entry import EntryCreate
@@ -143,7 +149,12 @@ def test_init_nonexistent_project_id(mock_client_from_access_key: MagicMock) ->
143149
def test_query_question_found_fallback_answer(
144150
mock_client_from_access_key: MagicMock,
145151
) -> None:
146-
unanswered_entry = SDKEntry(id=str(uuid.uuid4()), question="What is the capital of France?", answer=None)
152+
unanswered_entry = SDKEntry(
153+
id=str(uuid.uuid4()),
154+
question="What is the capital of France?",
155+
answer=None,
156+
managed_metadata=EntryManagedMetadata(trustworthiness=EntryManagedMetadataTrustworthiness(scores=[0.95])),
157+
)
147158

148159
mock_client_from_access_key.projects.entries.query.return_value = EntryQueryResponse(
149160
entry=unanswered_entry, answer=None
@@ -158,7 +169,12 @@ def test_query_question_found_fallback_answer(
158169
def test_query_question_not_found_fallback_answer(
159170
mock_client_from_access_key: MagicMock,
160171
) -> None:
161-
mock_entry = SDKEntry(id="fake-id", question="What is the capital of France?", answer=None)
172+
mock_entry = SDKEntry(
173+
id="fake-id",
174+
question="What is the capital of France?",
175+
answer=None,
176+
managed_metadata=EntryManagedMetadata(trustworthiness=EntryManagedMetadataTrustworthiness(scores=[0.95])),
177+
)
162178
mock_client_from_access_key.projects.entries.query.return_value = EntryQueryResponse(entry=mock_entry, answer=None)
163179

164180
project = Project(mock_client_from_access_key, FAKE_PROJECT_ID)
@@ -173,6 +189,7 @@ def test_query_answer_found(mock_client_from_access_key: MagicMock) -> None:
173189
id=str(uuid.uuid4()),
174190
question="What is the capital of France?",
175191
answer="Paris",
192+
managed_metadata=EntryManagedMetadata(trustworthiness=EntryManagedMetadataTrustworthiness(scores=[0.95])),
176193
)
177194
mock_client_from_access_key.projects.entries.query.return_value = EntryQueryResponse(
178195
answer="Paris", entry=answered_entry
@@ -190,6 +207,7 @@ def test_query_answer_found_with_metadata(mock_client_from_access_key: MagicMock
190207
question="What is the capital of France?",
191208
answer="Paris",
192209
client_query_metadata=[{"trustworthiness_score": 0.95}],
210+
managed_metadata=EntryManagedMetadata(trustworthiness=EntryManagedMetadataTrustworthiness(scores=[0.95])),
193211
)
194212
mock_client_from_access_key.projects.entries.query.return_value = EntryQueryResponse(
195213
answer="Paris", entry=answered_entry

0 commit comments

Comments
 (0)