Skip to content

Commit 936618c

Browse files
committed
Update query endpoint to use version instead of version number. This enables aliasing for version name.
1 parent 044a036 commit 936618c

6 files changed

Lines changed: 39 additions & 10 deletions

File tree

tests/test_asynchronous.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ async def text_evaluator():
3535
@pytest.mark.asyncio
3636
async def test_text_aquery(text_evaluator):
3737
fn_name, version_number, _ = await text_evaluator
38-
query_response = await aquery(fn_name=fn_name, version_number=version_number, text_input="I love this product!")
38+
query_response = await aquery(fn_name=fn_name, version=-1, version_number=version_number, text_input="I love this product!")
3939

4040
await assert_query_response(query_response)
4141
assert set(query_response["output"].keys()) == {"sentiment", "explanation"}
@@ -55,6 +55,7 @@ async def test_image_aquery(image_evaluator):
5555
fn_name, version_number, _ = await image_evaluator
5656
query_response = await aquery(
5757
fn_name=fn_name,
58+
version=-1,
5859
version_number=version_number,
5960
images_input=[
6061
"https://www.integratedtreatmentservices.co.uk/wp-content/uploads/2013/12/Objects-of-Reference.jpg",
@@ -80,6 +81,7 @@ async def test_text_and_image_aquery(text_and_image_evaluator):
8081
fn_name, version_number, _ = await text_and_image_evaluator
8182
query_response = await aquery(
8283
fn_name=fn_name,
84+
version=-1,
8385
version_number=version_number,
8486
text_input="Find x and y.",
8587
images_input=[

tests/test_batching.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def test_batch_query_text(ml_task_evaluator, ml_task_inputs):
4949
fn_name, version_number = ml_task_evaluator
5050
batch_inputs = ml_task_inputs
5151

52-
query_responses = batch_query(fn_name=fn_name, version_number=version_number, batch_inputs=batch_inputs)
52+
query_responses = batch_query(fn_name=fn_name, version=-1, version_number=version_number, batch_inputs=batch_inputs)
5353

5454
assert len(query_responses) == len(batch_inputs)
5555

@@ -67,7 +67,7 @@ def test_batch_query_image(image_evaluator, image_inputs):
6767
fn_name, version_number = image_evaluator
6868
batch_inputs = image_inputs
6969

70-
query_responses = batch_query(fn_name=fn_name, version_number=version_number, batch_inputs=batch_inputs)
70+
query_responses = batch_query(fn_name=fn_name, version=-1, version_number=version_number, batch_inputs=batch_inputs)
7171

7272
assert len(query_responses) == len(batch_inputs)
7373

tests/test_reasoning.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def text_reasoning_evaluator():
2626
def test_text_reasoning_query(text_reasoning_evaluator):
2727
fn_name, version_number, _ = text_reasoning_evaluator
2828
query_response = query(
29-
fn_name=fn_name, version_number=version_number, text_input="I love this product!", return_reasoning=True
29+
fn_name=fn_name, version=-1, version_number=version_number, text_input="I love this product!", return_reasoning=True
3030
)
3131

3232
assert_query_response(query_response)
@@ -46,6 +46,7 @@ def test_vision_reasoning_query(vision_reasoning_evaluator):
4646
fn_name, version_number, _ = vision_reasoning_evaluator
4747
query_response = query(
4848
fn_name=fn_name,
49+
version=-1,
4950
version_number=version_number,
5051
text_input="Find x and y.",
5152
images_input=[

tests/test_synchronous.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def text_evaluator():
3333

3434
def test_text_query(text_evaluator):
3535
fn_name, version_number, _ = text_evaluator
36-
query_response = query(fn_name=fn_name, version_number=version_number, text_input="I love this product!")
36+
query_response = query(fn_name=fn_name, version=-1, version_number=version_number, text_input="I love this product!")
3737

3838
assert_query_response(query_response)
3939
assert set(query_response["output"].keys()) == {"sentiment", "explanation"}
@@ -52,6 +52,7 @@ def test_image_query(image_evaluator):
5252
fn_name, version_number, _ = image_evaluator
5353
query_response = query(
5454
fn_name=fn_name,
55+
version=-1,
5556
version_number=version_number,
5657
images_input=[
5758
"https://www.integratedtreatmentservices.co.uk/wp-content/uploads/2013/12/Objects-of-Reference.jpg",
@@ -76,6 +77,7 @@ def test_text_and_image_query(text_and_image_evaluator):
7677
fn_name, version_number, _ = text_and_image_evaluator
7778
query_response = query(
7879
fn_name=fn_name,
80+
version=-1,
7981
version_number=version_number,
8082
text_input="Find x and y.",
8183
images_input=[

weco/client.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,8 @@ def _query(
388388
self,
389389
is_async: bool,
390390
fn_name: str,
391-
version_number: Optional[int],
391+
version: Union[str, int],
392+
version_number: int,
392393
text_input: Optional[str],
393394
images_input: Optional[List[str]],
394395
return_reasoning: Optional[bool],
@@ -401,6 +402,8 @@ def _query(
401402
Whether to perform an asynchronous request.
402403
fn_name : str
403404
The name of the function to query.
405+
version : Union[str, int]
406+
The version alias or number of the function to query.
404407
version_number : int, optional
405408
The version number of the function to query.
406409
text_input : str, optional
@@ -436,9 +439,10 @@ def _query(
436439
endpoint = "query"
437440
data = {
438441
"name": fn_name,
442+
"version": version,
443+
"version_number": version_number,
439444
"text": text_input,
440445
"images": image_urls,
441-
"version_number": version_number,
442446
"return_reasoning": return_reasoning,
443447
}
444448
request = self._make_request(endpoint=endpoint, data=data, is_async=is_async)
@@ -457,6 +461,7 @@ async def _async_query():
457461
async def aquery(
458462
self,
459463
fn_name: str,
464+
version: Optional[Union[str, int]] = -1,
460465
version_number: Optional[int] = -1,
461466
text_input: Optional[str] = "",
462467
images_input: Optional[List[str]] = [],
@@ -468,6 +473,8 @@ async def aquery(
468473
----------
469474
fn_name : str
470475
The name of the function to query.
476+
version : Union[str, int], optional
477+
The version alias or number of the function to query. If not provided, the latest version will be used. Pass -1 to use the latest version.
471478
version_number : int, optional
472479
The version number of the function to query. If not provided, the latest version will be used. Pass -1 to use the latest version.
473480
text_input : str, optional
@@ -485,6 +492,7 @@ async def aquery(
485492
"""
486493
return await self._query(
487494
fn_name=fn_name,
495+
version=version,
488496
version_number=version_number,
489497
text_input=text_input,
490498
images_input=images_input,
@@ -495,6 +503,7 @@ async def aquery(
495503
def query(
496504
self,
497505
fn_name: str,
506+
version: Optional[Union[str, int]] = -1,
498507
version_number: Optional[int] = -1,
499508
text_input: Optional[str] = "",
500509
images_input: Optional[List[str]] = [],
@@ -523,6 +532,7 @@ def query(
523532
"""
524533
return self._query(
525534
fn_name=fn_name,
535+
version=version,
526536
version_number=version_number,
527537
text_input=text_input,
528538
images_input=images_input,
@@ -534,6 +544,7 @@ def batch_query(
534544
self,
535545
fn_name: str,
536546
batch_inputs: List[Dict[str, Any]],
547+
version: Optional[Union[str, int]] = -1,
537548
version_number: Optional[int] = -1,
538549
return_reasoning: Optional[bool] = False,
539550
) -> List[Dict[str, Any]]:
@@ -547,6 +558,8 @@ def batch_query(
547558
A list of inputs for the functions to query. The input must be a dictionary containing the data to be processed. e.g.,
548559
when providing for a text input, the dictionary should be {"text_input": "input text"}, for an image input, the dictionary should be {"images_input": ["url1", "url2", ...]}
549560
and for a combination of text and image inputs, the dictionary should be {"text_input": "input text", "images_input": ["url1", "url2", ...]}.
561+
version : Union[str, int], optional
562+
The version alias or number of the function to query. If not provided, the latest version will be used. Pass -1 to use the latest version.
550563
version_number : int, optional
551564
The version number of the function to query. If not provided, the latest version will be used. Pass -1 to use the latest version.
552565
return_reasoning : bool, optional
@@ -563,7 +576,7 @@ async def run_queries():
563576
tasks = list(
564577
map(
565578
lambda fn_input: self.aquery(
566-
fn_name=fn_name, version_number=version_number, return_reasoning=return_reasoning, **fn_input
579+
fn_name=fn_name, version=version, version_number=version_number, return_reasoning=return_reasoning, **fn_input
567580
),
568581
batch_inputs,
569582
)

weco/functional.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Dict, List, Optional
1+
from typing import Any, Dict, List, Optional, Union
22

33
from .client import WecoAI
44

@@ -49,6 +49,7 @@ async def abuild(task_description: str, multimodal: bool = False, api_key: str =
4949

5050
def query(
5151
fn_name: str,
52+
version: Optional[Union[str, int]] = -1,
5253
version_number: Optional[int] = -1,
5354
text_input: Optional[str] = "",
5455
images_input: Optional[List[str]] = [],
@@ -61,6 +62,8 @@ def query(
6162
----------
6263
fn_name : str
6364
The name of the function to query.
65+
version : str | int, optional
66+
The version alias or number of the function to query. If not provided, the latest version is used. Default is -1 for the same behavior.
6467
version_number : int, optional
6568
The version number of the function to query. If not provided, the latest version is used. Default is -1 for the same behavior.
6669
text_input : str, optional
@@ -81,6 +84,7 @@ def query(
8184
client = WecoAI(api_key=api_key)
8285
response = client.query(
8386
fn_name=fn_name,
87+
version=version,
8488
version_number=version_number,
8589
text_input=text_input,
8690
images_input=images_input,
@@ -91,6 +95,7 @@ def query(
9195

9296
async def aquery(
9397
fn_name: str,
98+
version: Optional[Union[str, int]] = -1,
9499
version_number: Optional[int] = -1,
95100
text_input: Optional[str] = "",
96101
images_input: Optional[List[str]] = [],
@@ -103,6 +108,8 @@ async def aquery(
103108
----------
104109
fn_name : str
105110
The name of the function to query.
111+
version: str | int, optional
112+
The version number or alias of the function to query. If not provided, the latest version is used. Default is -1 for the same behavior.
106113
version_number : int, optional
107114
The version number of the function to query. If not provided, the latest version is used. Default is -1 for the same behavior.
108115
text_input : str, optional
@@ -123,6 +130,7 @@ async def aquery(
123130
client = WecoAI(api_key=api_key)
124131
response = await client.aquery(
125132
fn_name=fn_name,
133+
version=version,
126134
version_number=version_number,
127135
text_input=text_input,
128136
images_input=images_input,
@@ -134,6 +142,7 @@ async def aquery(
134142
def batch_query(
135143
fn_name: str,
136144
batch_inputs: List[Dict[str, Any]],
145+
version: Optional[Union[str, int]] = -1,
137146
version_number: Optional[int] = -1,
138147
return_reasoning: Optional[bool] = False,
139148
api_key: Optional[str] = None,
@@ -153,6 +162,8 @@ def batch_query(
153162
A list of inputs for the functions to query. The input must be a dictionary containing the data to be processed. e.g.,
154163
when providing for a text input, the dictionary should be {"text_input": "input text"}, for an image input, the dictionary should be {"images_input": ["url1", "url2", ...]}
155164
and for a combination of text and image inputs, the dictionary should be {"text_input": "input text", "images_input": ["url1", "url2", ...]}.
165+
version : str | int, optional
166+
The version number or alias of the function to query. If not provided, the latest version is used. Default is -1 for the same behavior.
156167
version_number : int, optional
157168
The version number of the function to query. If not provided, the latest version is used. Default is -1 for the same behavior.
158169
return_reasoning : bool, optional
@@ -168,6 +179,6 @@ def batch_query(
168179
"""
169180
client = WecoAI(api_key=api_key)
170181
responses = client.batch_query(
171-
fn_name=fn_name, version_number=version_number, batch_inputs=batch_inputs, return_reasoning=return_reasoning
182+
fn_name=fn_name, version=version, version_number=version_number, batch_inputs=batch_inputs, return_reasoning=return_reasoning
172183
)
173184
return responses

0 commit comments

Comments
 (0)