Skip to content

Commit 6f26e8c

Browse files
authored
HOTFIX | Supprot new messages format in evaluate.invoke() (#378)
* Supprot new messages format in evaluate.invoke() * use asdict * Use types for invoke request * Patch version
1 parent f413b2b commit 6f26e8c

4 files changed

Lines changed: 35 additions & 10 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
55

66
[tool.poetry]
77
name = "qualifire"
8-
version = "0.9.0"
8+
version = "0.10.0"
99
description = "Qualifire Python SDK"
1010
readme = "README.md"
1111
authors = ["qualifire-dev <dror@qualifire.ai>"]

qualifire/client.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import requests
88

99
from .types import (
10+
EvaluationInvokeRequest,
1011
EvaluationRequest,
1112
EvaluationResponse,
1213
LLMMessage,
@@ -204,23 +205,29 @@ def evaluate(
204205

205206
def invoke_evaluation(
206207
self,
207-
input: str,
208-
output: str,
209208
evaluation_id: str,
209+
input: Optional[str] = None,
210+
output: Optional[str] = None,
211+
messages: Optional[List[LLMMessage]] = None,
212+
available_tools: Optional[List[LLMToolDefinition]] = None,
210213
) -> EvaluationResponse:
211214
url = f"{self._base_url}/api/evaluation/invoke/"
212215

213-
payload = {
214-
"evaluation_id": evaluation_id,
215-
"input": input,
216-
"output": output,
217-
}
216+
request = EvaluationInvokeRequest(
217+
evaluation_id=evaluation_id,
218+
input=input,
219+
output=output,
220+
messages=messages,
221+
available_tools=available_tools,
222+
)
223+
224+
body = json.dumps(asdict(request))
218225
headers = {
219226
"X-Qualifire-API-Key": self._api_key,
220227
"Content-Type": "application/json",
221228
}
222229

223-
response = requests.request("POST", url, json=payload, headers=headers)
230+
response = requests.request("POST", url, data=body, headers=headers)
224231
if response.status_code != 200:
225232
if self._debug:
226233
response.raise_for_status()

qualifire/types.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,24 @@ def _validate_tsq_requirements(self):
7171
)
7272

7373

74+
@dataclass
75+
class EvaluationInvokeRequest:
76+
evaluation_id: str
77+
input: Optional[str] = None
78+
output: Optional[str] = None
79+
messages: Optional[List[LLMMessage]] = None
80+
available_tools: Optional[List[LLMToolDefinition]] = None
81+
82+
def __post_init__(self):
83+
self._validate_messages_input_output()
84+
85+
def _validate_messages_input_output(self):
86+
if not self.messages and not self.input and not self.output:
87+
raise ValueError(
88+
"At least one of messages, input, or output must be set",
89+
)
90+
91+
7492
@dataclass
7593
class EvaluationResult:
7694
claim: str

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
if __name__ == "__main__":
55
setup(
66
name="qualifire",
7-
version="0.9.0",
7+
version="0.10.0",
88
description="Qualifire Python SDK",
99
author="qualifire-dev",
1010
author_email="dror@qualifire.ai",

0 commit comments

Comments
 (0)