Skip to content

Commit 5b93703

Browse files
add external model support (#368)
1 parent 4384c74 commit 5b93703

File tree

5 files changed

+64
-2
lines changed

5 files changed

+64
-2
lines changed

poetry.lock

Lines changed: 21 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ optional = true
6767
pytest = ">=7.4.2,<9.0.0"
6868
pytest-watch = "^4.2.0"
6969
pytest-mock = "^3.14.0"
70+
pytest-asyncio = "^0.24.0"
7071
tox = "^4.14.1"
7172

7273
[tool.poetry.group.examples]

src/together/cli/api/evaluation.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ def evaluation(ctx: click.Context) -> None:
4141
required=False,
4242
help="Optional external API token for the judge model.",
4343
)
44+
@click.option(
45+
"--judge-external-base-url",
46+
type=str,
47+
required=False,
48+
help="Optional external base URLs for the judge model.",
49+
)
4450
@click.option(
4551
"--judge-system-template",
4652
type=str,
@@ -74,6 +80,11 @@ def evaluation(ctx: click.Context) -> None:
7480
type=str,
7581
help="Optional external API token for the model to evaluate.",
7682
)
83+
@click.option(
84+
"--model-to-evaluate-external-base-url",
85+
type=str,
86+
help="Optional external base URL for the model to evaluate.",
87+
)
7788
@click.option(
7889
"--model-to-evaluate-max-tokens",
7990
type=int,
@@ -140,6 +151,11 @@ def evaluation(ctx: click.Context) -> None:
140151
type=str,
141152
help="Optional external API token for model A.",
142153
)
154+
@click.option(
155+
"--model-a-external-base-url",
156+
type=str,
157+
help="Optional external base URL for model A.",
158+
)
143159
@click.option(
144160
"--model-a-max-tokens",
145161
type=int,
@@ -181,6 +197,11 @@ def evaluation(ctx: click.Context) -> None:
181197
type=str,
182198
help="Optional external API token for model B.",
183199
)
200+
@click.option(
201+
"--model-b-external-base-url",
202+
type=str,
203+
help="Optional external base URL for model B.",
204+
)
184205
@click.option(
185206
"--model-b-max-tokens",
186207
type=int,
@@ -208,11 +229,13 @@ def create(
208229
judge_model_source: str,
209230
judge_system_template: str,
210231
judge_external_api_token: Optional[str],
232+
judge_external_base_url: Optional[str],
211233
input_data_file_path: str,
212234
model_field: Optional[str],
213235
model_to_evaluate: Optional[str],
214236
model_to_evaluate_source: Optional[str],
215237
model_to_evaluate_external_api_token: Optional[str],
238+
model_to_evaluate_external_base_url: Optional[str],
216239
model_to_evaluate_max_tokens: Optional[int],
217240
model_to_evaluate_temperature: Optional[float],
218241
model_to_evaluate_system_template: Optional[str],
@@ -226,6 +249,7 @@ def create(
226249
model_a: Optional[str],
227250
model_a_source: Optional[str],
228251
model_a_external_api_token: Optional[str],
252+
model_a_external_base_url: Optional[str],
229253
model_a_max_tokens: Optional[int],
230254
model_a_temperature: Optional[float],
231255
model_a_system_template: Optional[str],
@@ -234,6 +258,7 @@ def create(
234258
model_b: Optional[str],
235259
model_b_source: Optional[str],
236260
model_b_external_api_token: Optional[str],
261+
model_b_external_base_url: Optional[str],
237262
model_b_max_tokens: Optional[int],
238263
model_b_temperature: Optional[float],
239264
model_b_system_template: Optional[str],
@@ -285,6 +310,10 @@ def create(
285310
model_to_evaluate_final["external_api_token"] = (
286311
model_to_evaluate_external_api_token
287312
)
313+
if model_to_evaluate_external_base_url:
314+
model_to_evaluate_final["external_base_url"] = (
315+
model_to_evaluate_external_base_url
316+
)
288317

289318
# Build model-a configuration
290319
model_a_final: Union[Dict[str, Any], None, str] = None
@@ -318,6 +347,8 @@ def create(
318347
}
319348
if model_a_external_api_token:
320349
model_a_final["external_api_token"] = model_a_external_api_token
350+
if model_a_external_base_url:
351+
model_a_final["external_base_url"] = model_a_external_base_url
321352

322353
# Build model-b configuration
323354
model_b_final: Union[Dict[str, Any], None, str] = None
@@ -351,6 +382,8 @@ def create(
351382
}
352383
if model_b_external_api_token:
353384
model_b_final["external_api_token"] = model_b_external_api_token
385+
if model_b_external_base_url:
386+
model_b_final["external_base_url"] = model_b_external_base_url
354387

355388
try:
356389
response = client.evaluation.create(
@@ -359,6 +392,7 @@ def create(
359392
judge_model_source=judge_model_source,
360393
judge_system_template=judge_system_template,
361394
judge_external_api_token=judge_external_api_token,
395+
judge_external_base_url=judge_external_base_url,
362396
input_data_file_path=input_data_file_path,
363397
model_to_evaluate=model_to_evaluate_final,
364398
labels=labels_list,

src/together/resources/evaluation.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def create(
3232
judge_system_template: str,
3333
input_data_file_path: str,
3434
judge_external_api_token: Optional[str] = None,
35+
judge_external_base_url: Optional[str] = None,
3536
# Classify-specific parameters
3637
labels: Optional[List[str]] = None,
3738
pass_labels: Optional[List[str]] = None,
@@ -55,6 +56,7 @@ def create(
5556
judge_system_template: System template for the judge
5657
input_data_file_path: Path to input data file
5758
judge_external_api_token: Optional external API token for the judge model
59+
judge_external_base_url: Optional external base URLs for the judge model
5860
labels: List of classification labels (required for classify)
5961
pass_labels: List of labels considered as passing (required for classify)
6062
min_score: Minimum score value (required for score)
@@ -82,6 +84,7 @@ def create(
8284
model_source=judge_model_source,
8385
system_template=judge_system_template,
8486
external_api_token=judge_external_api_token,
87+
external_base_url=judge_external_base_url,
8588
)
8689
parameters: Union[ClassifyParameters, ScoreParameters, CompareParameters]
8790
# Build parameters based on type
@@ -423,6 +426,7 @@ async def create(
423426
judge_system_template: str,
424427
input_data_file_path: str,
425428
judge_external_api_token: Optional[str] = None,
429+
judge_external_base_url: Optional[str] = None,
426430
# Classify-specific parameters
427431
labels: Optional[List[str]] = None,
428432
pass_labels: Optional[List[str]] = None,
@@ -446,6 +450,7 @@ async def create(
446450
judge_system_template: System template for the judge
447451
input_data_file_path: Path to input data file
448452
judge_external_api_token: Optional external API token for the judge model
453+
judge_external_base_url: Optional external base URLs for the judge model
449454
labels: List of classification labels (required for classify)
450455
pass_labels: List of labels considered as passing (required for classify)
451456
min_score: Minimum score value (required for score)
@@ -473,6 +478,7 @@ async def create(
473478
model_source=judge_model_source,
474479
system_template=judge_system_template,
475480
external_api_token=judge_external_api_token,
481+
external_base_url=judge_external_base_url,
476482
)
477483
parameters: Union[ClassifyParameters, ScoreParameters, CompareParameters]
478484
# Build parameters based on type

src/together/types/evaluation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class JudgeModelConfig(BaseModel):
2727
model_source: Literal["serverless", "dedicated", "external"]
2828
system_template: str
2929
external_api_token: Optional[str] = None
30+
external_base_url: Optional[str] = None
3031

3132

3233
class ModelRequest(BaseModel):
@@ -37,6 +38,7 @@ class ModelRequest(BaseModel):
3738
system_template: str
3839
input_template: str
3940
external_api_token: Optional[str] = None
41+
external_base_url: Optional[str] = None
4042

4143

4244
class ClassifyParameters(BaseModel):

0 commit comments

Comments
 (0)