|
12 | 12 | from ..types import ( |
13 | 13 | fine_tuning_delete_params, |
14 | 14 | fine_tuning_content_params, |
| 15 | + fine_tuning_preview_params, |
15 | 16 | fine_tuning_list_metrics_params, |
16 | 17 | fine_tuning_model_limits_params, |
17 | 18 | fine_tuning_estimate_price_params, |
|
40 | 41 | from ..lib.resources.fine_tuning import create_finetune_request |
41 | 42 | from ..types.finetune_model_limits import FinetuneModelLimits |
42 | 43 | from ..types.fine_tuning_list_response import FineTuningListResponse |
| 44 | +from ..types.fine_tune_preview_response import FineTunePreviewResponse |
43 | 45 | from ..types.fine_tuning_cancel_response import FineTuningCancelResponse |
44 | 46 | from ..types.fine_tuning_delete_response import FineTuningDeleteResponse |
45 | 47 | from ..types.fine_tuning_list_events_response import FineTuningListEventsResponse |
@@ -748,6 +750,64 @@ def model_limits( |
748 | 750 | cast_to=FinetuneModelLimits, |
749 | 751 | ) |
750 | 752 |
|
| 753 | + def preview( |
| 754 | + self, |
| 755 | + *, |
| 756 | + model: str, |
| 757 | + training_file: str, |
| 758 | + top_k: int | Omit = omit, |
| 759 | + train_on_inputs: bool | Omit = omit, |
| 760 | + training_method: Literal["sft"] | Omit = omit, |
| 761 | + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. |
| 762 | + # The extra values given here take precedence over values defined on the client or passed to this method. |
| 763 | + extra_headers: Headers | None = None, |
| 764 | + extra_query: Query | None = None, |
| 765 | + extra_body: Body | None = None, |
| 766 | + timeout: float | httpx.Timeout | None | NotGiven = not_given, |
| 767 | + ) -> FineTunePreviewResponse: |
| 768 | + """ |
| 769 | + Preview how sampled rows from a fine-tuning training file will be tokenized |
| 770 | + before packing. |
| 771 | +
|
| 772 | + Args: |
| 773 | + model: Name of the base model whose tokenizer and chat template will be used. |
| 774 | +
|
| 775 | + training_file: File-ID of the uploaded JSONL training file to sample for preview. |
| 776 | +
|
| 777 | + top_k: Maximum number of rows from the start of the training file to tokenize. |
| 778 | +
|
| 779 | + train_on_inputs: Whether prompt or user-message tokens should contribute to training loss in the |
| 780 | + preview. |
| 781 | +
|
| 782 | + training_method: Fine-tuning method to preview. Only supervised fine-tuning is currently |
| 783 | + supported. |
| 784 | +
|
| 785 | + extra_headers: Send extra headers |
| 786 | +
|
| 787 | + extra_query: Add additional query parameters to the request |
| 788 | +
|
| 789 | + extra_body: Add additional JSON properties to the request |
| 790 | +
|
| 791 | + timeout: Override the client-level default timeout for this request, in seconds |
| 792 | + """ |
| 793 | + return self._post( |
| 794 | + "/fine-tunes/preview", |
| 795 | + body=maybe_transform( |
| 796 | + { |
| 797 | + "model": model, |
| 798 | + "training_file": training_file, |
| 799 | + "top_k": top_k, |
| 800 | + "train_on_inputs": train_on_inputs, |
| 801 | + "training_method": training_method, |
| 802 | + }, |
| 803 | + fine_tuning_preview_params.FineTuningPreviewParams, |
| 804 | + ), |
| 805 | + options=make_request_options( |
| 806 | + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout |
| 807 | + ), |
| 808 | + cast_to=FineTunePreviewResponse, |
| 809 | + ) |
| 810 | + |
751 | 811 |
|
752 | 812 | class AsyncFineTuningResource(AsyncAPIResource): |
753 | 813 | @cached_property |
@@ -1439,6 +1499,64 @@ async def model_limits( |
1439 | 1499 | cast_to=FinetuneModelLimits, |
1440 | 1500 | ) |
1441 | 1501 |
|
| 1502 | + async def preview( |
| 1503 | + self, |
| 1504 | + *, |
| 1505 | + model: str, |
| 1506 | + training_file: str, |
| 1507 | + top_k: int | Omit = omit, |
| 1508 | + train_on_inputs: bool | Omit = omit, |
| 1509 | + training_method: Literal["sft"] | Omit = omit, |
| 1510 | + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. |
| 1511 | + # The extra values given here take precedence over values defined on the client or passed to this method. |
| 1512 | + extra_headers: Headers | None = None, |
| 1513 | + extra_query: Query | None = None, |
| 1514 | + extra_body: Body | None = None, |
| 1515 | + timeout: float | httpx.Timeout | None | NotGiven = not_given, |
| 1516 | + ) -> FineTunePreviewResponse: |
| 1517 | + """ |
| 1518 | + Preview how sampled rows from a fine-tuning training file will be tokenized |
| 1519 | + before packing. |
| 1520 | +
|
| 1521 | + Args: |
| 1522 | + model: Name of the base model whose tokenizer and chat template will be used. |
| 1523 | +
|
| 1524 | + training_file: File-ID of the uploaded JSONL training file to sample for preview. |
| 1525 | +
|
| 1526 | + top_k: Maximum number of rows from the start of the training file to tokenize. |
| 1527 | +
|
| 1528 | + train_on_inputs: Whether prompt or user-message tokens should contribute to training loss in the |
| 1529 | + preview. |
| 1530 | +
|
| 1531 | + training_method: Fine-tuning method to preview. Only supervised fine-tuning is currently |
| 1532 | + supported. |
| 1533 | +
|
| 1534 | + extra_headers: Send extra headers |
| 1535 | +
|
| 1536 | + extra_query: Add additional query parameters to the request |
| 1537 | +
|
| 1538 | + extra_body: Add additional JSON properties to the request |
| 1539 | +
|
| 1540 | + timeout: Override the client-level default timeout for this request, in seconds |
| 1541 | + """ |
| 1542 | + return await self._post( |
| 1543 | + "/fine-tunes/preview", |
| 1544 | + body=await async_maybe_transform( |
| 1545 | + { |
| 1546 | + "model": model, |
| 1547 | + "training_file": training_file, |
| 1548 | + "top_k": top_k, |
| 1549 | + "train_on_inputs": train_on_inputs, |
| 1550 | + "training_method": training_method, |
| 1551 | + }, |
| 1552 | + fine_tuning_preview_params.FineTuningPreviewParams, |
| 1553 | + ), |
| 1554 | + options=make_request_options( |
| 1555 | + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout |
| 1556 | + ), |
| 1557 | + cast_to=FineTunePreviewResponse, |
| 1558 | + ) |
| 1559 | + |
1442 | 1560 |
|
1443 | 1561 | class FineTuningResourceWithRawResponse: |
1444 | 1562 | def __init__(self, fine_tuning: FineTuningResource) -> None: |
@@ -1475,6 +1593,9 @@ def __init__(self, fine_tuning: FineTuningResource) -> None: |
1475 | 1593 | self.model_limits = to_raw_response_wrapper( |
1476 | 1594 | fine_tuning.model_limits, |
1477 | 1595 | ) |
| 1596 | + self.preview = to_raw_response_wrapper( |
| 1597 | + fine_tuning.preview, |
| 1598 | + ) |
1478 | 1599 |
|
1479 | 1600 |
|
1480 | 1601 | class AsyncFineTuningResourceWithRawResponse: |
@@ -1512,6 +1633,9 @@ def __init__(self, fine_tuning: AsyncFineTuningResource) -> None: |
1512 | 1633 | self.model_limits = async_to_raw_response_wrapper( |
1513 | 1634 | fine_tuning.model_limits, |
1514 | 1635 | ) |
| 1636 | + self.preview = async_to_raw_response_wrapper( |
| 1637 | + fine_tuning.preview, |
| 1638 | + ) |
1515 | 1639 |
|
1516 | 1640 |
|
1517 | 1641 | class FineTuningResourceWithStreamingResponse: |
@@ -1549,6 +1673,9 @@ def __init__(self, fine_tuning: FineTuningResource) -> None: |
1549 | 1673 | self.model_limits = to_streamed_response_wrapper( |
1550 | 1674 | fine_tuning.model_limits, |
1551 | 1675 | ) |
| 1676 | + self.preview = to_streamed_response_wrapper( |
| 1677 | + fine_tuning.preview, |
| 1678 | + ) |
1552 | 1679 |
|
1553 | 1680 |
|
1554 | 1681 | class AsyncFineTuningResourceWithStreamingResponse: |
@@ -1586,3 +1713,6 @@ def __init__(self, fine_tuning: AsyncFineTuningResource) -> None: |
1586 | 1713 | self.model_limits = async_to_streamed_response_wrapper( |
1587 | 1714 | fine_tuning.model_limits, |
1588 | 1715 | ) |
| 1716 | + self.preview = async_to_streamed_response_wrapper( |
| 1717 | + fine_tuning.preview, |
| 1718 | + ) |
0 commit comments