
    qic                       d dl mZ d dlmZmZmZmZ d dlmZ d dl	Z	ddl
mZ ddlmZmZmZmZmZmZmZ ddlmZmZ dd	lmZ d
dlmZmZmZmZmZmZ ddl m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddgZ6 G d de!      Z7 G d de"      Z8 G d d      Z9 G d d      Z: G d d      Z; G d d      Z<y)     )annotations)DictUnionIterableOptional)LiteralN   )_legacy_response)BodyOmitQueryHeadersNotGivenomit	not_given)maybe_transformasync_maybe_transform)cached_property   )CheckpointsAsyncCheckpointsCheckpointsWithRawResponseAsyncCheckpointsWithRawResponse CheckpointsWithStreamingResponse%AsyncCheckpointsWithStreamingResponse)SyncAPIResourceAsyncAPIResource)to_streamed_response_wrapper"async_to_streamed_response_wrapper)SyncCursorPageAsyncCursorPage)AsyncPaginatormake_request_options)job_list_paramsjob_create_paramsjob_list_events_params)Metadata)FineTuningJob)FineTuningJobEventJobs	AsyncJobsc                     e Zd ZdZedd       Zedd       Zedd       Zeeeeeeeddde	d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ
ddde	d	 	 	 	 	 	 	 	 	 	 	 dd	Zeeeddde	d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddde	d	 	 	 	 	 	 	 	 	 	 	 ddZeeddde	d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddde	d	 	 	 	 	 	 	 	 	 	 	 ddZddde	d	 	 	 	 	 	 	 	 	 	 	 ddZy)r*   IManage fine-tuning jobs to tailor a model to your specific training data.c                ,    t        | j                        S r-   )r   _clientselfs    X/opt/pipecat/venv/lib/python3.12/site-packages/openai/resources/fine_tuning/jobs/jobs.pycheckpointszJobs.checkpoints(   s     4<<((    c                    t        |       S a  
        This property can be used as a prefix for any HTTP method call to return
        the raw response object instead of the parsed content.

        For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
        )JobsWithRawResponser1   s    r3   with_raw_responsezJobs.with_raw_response-   s     #4((r5   c                    t        |       S z
        An alternative to `.with_raw_response` that doesn't eagerly read the response body.

        For more information, see https://www.github.com/openai/openai-python#with_streaming_response
        )JobsWithStreamingResponser1   s    r3   with_streaming_responsezJobs.with_streaming_response7   s     )..r5   Nhyperparametersintegrationsmetadatamethodseedsuffixvalidation_fileextra_headersextra_query
extra_bodytimeoutc                   | j                  dt        |||||||||	d	t        j                        t	        |
|||      t
              S )  
        Creates a fine-tuning job which begins the process of creating a new model from
        a given dataset.

        Response includes details of the enqueued job including job status and the name
        of the fine-tuned models once complete.

        [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)

        Args:
          model: The name of the model to fine-tune. You can select one of the
              [supported models](https://platform.openai.com/docs/guides/fine-tuning#which-models-can-be-fine-tuned).

          training_file: The ID of an uploaded file that contains training data.

              See [upload file](https://platform.openai.com/docs/api-reference/files/create)
              for how to upload a file.

              Your dataset must be formatted as a JSONL file. Additionally, you must upload
              your file with the purpose `fine-tune`.

              The contents of the file should differ depending on if the model uses the
              [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input),
              [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)
              format, or if the fine-tuning method uses the
              [preference](https://platform.openai.com/docs/api-reference/fine-tuning/preference-input)
              format.

              See the
              [fine-tuning guide](https://platform.openai.com/docs/guides/model-optimization)
              for more details.

          hyperparameters: The hyperparameters used for the fine-tuning job. This value is now deprecated
              in favor of `method`, and should be passed in under the `method` parameter.

          integrations: A list of integrations to enable for your fine-tuning job.

          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format, and
              querying for objects via API or the dashboard.

              Keys are strings with a maximum length of 64 characters. Values are strings with
              a maximum length of 512 characters.

          method: The method used for fine-tuning.

          seed: The seed controls the reproducibility of the job. Passing in the same seed and
              job parameters should produce the same results, but may differ in rare cases. If
              a seed is not specified, one will be generated for you.

          suffix: A string of up to 64 characters that will be added to your fine-tuned model
              name.

              For example, a `suffix` of "custom-model-name" would produce a model name like
              `ft:gpt-4o-mini:openai:custom-model-name:7p4lURel`.

          validation_file: The ID of an uploaded file that contains validation data.

              If you provide this file, the data is used to generate validation metrics
              periodically during fine-tuning. These metrics can be viewed in the fine-tuning
              results file. The same data should not be present in both train and validation
              files.

              Your dataset must be formatted as a JSONL file. You must upload your file with
              the purpose `fine-tune`.

              See the
              [fine-tuning guide](https://platform.openai.com/docs/guides/model-optimization)
              for more details.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        /fine_tuning/jobs	modeltraining_filer?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   bodyoptionscast_to)_postr   r%   JobCreateParamsr#   r(   r2   rN   rO   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   s                 r3   createzJobs.create@   sk    B zz "%2'6$0 ($ $'6
 "11 )+Q[el "'  
 	
r5   rP   c          	     r    |st        d|      | j                  d| t        ||||      t              S )  
        Get info about a fine-tuning job.

        [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        AExpected a non-empty value for `fine_tuning_job_id` but received /fine_tuning/jobs/rP   rS   rT   
ValueError_getr#   r(   r2   fine_tuning_job_idrF   rG   rH   rI   s         r3   retrievezJobs.retrieve   sV    2 "`as`vwxxyy !3 45(+Q[el "  
 	
r5   afterlimitrA   rF   rG   rH   rI   c                   | j                  dt        t           t        ||||t	        |||dt
        j                              t              S a  
        List your organization's fine-tuning jobs

        Args:
          after: Identifier for the last job from the previous pagination request.

          limit: Number of fine-tuning jobs to retrieve.

          metadata: Optional metadata filter. To filter, use the syntax `metadata[k]=v`.
              Alternatively, set `metadata=null` to indicate no metadata.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rL   )re   rf   rA   rF   rG   rH   rI   querypagerS   rN   )_get_api_listr    r(   r#   r   r$   JobListParamsr2   re   rf   rA   rF   rG   rH   rI   s           r3   listz	Jobs.list   sb    @ !!.(+'%%!&!&$,
 $11  # " 
 	
r5   c          	     t    |st        d|      | j                  d| dt        ||||      t              S )W  
        Immediately cancel a fine-tune job.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r[   r\   /cancelrP   r]   r_   rU   r#   r(   ra   s         r3   cancelzJobs.cancel  X    . "`as`vwxxzz !3 4G<(+Q[el "  
 	
r5   re   rf   rF   rG   rH   rI   c                   |st        d|      | j                  d| dt        t           t	        ||||t        ||dt        j                              t              S a  
        Get status updates for a fine-tuning job.

        Args:
          after: Identifier for the last event from the previous pagination request.

          limit: Number of events to retrieve.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r[   r\   z/events)re   rf   ri   rk   )r_   rm   r    r)   r#   r   r&   JobListEventsParamsr2   rb   re   rf   rF   rG   rH   rI   s           r3   list_eventszJobs.list_events/  s    : "`as`vwxx!! !3 4G< 23(+'%%!&!& +>> %! " 
 	
r5   c          	     t    |st        d|      | j                  d| dt        ||||      t              S )J  
        Pause a fine-tune job.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r[   r\   /pauserP   r]   rt   ra   s         r3   pausez
Jobs.pausea  sX    . "`as`vwxxzz !3 4F;(+Q[el "  
 	
r5   c          	     t    |st        d|      | j                  d| dt        ||||      t              S )K  
        Resume a fine-tune job.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r[   r\   /resumerP   r]   rt   ra   s         r3   resumezJobs.resume  rv   r5   )returnr   )r   r8   )r   r<   rN   zQUnion[str, Literal['babbage-002', 'davinci-002', 'gpt-3.5-turbo', 'gpt-4o-mini']]rO   strr?   z(job_create_params.Hyperparameters | Omitr@   z8Optional[Iterable[job_create_params.Integration]] | OmitrA   zOptional[Metadata] | OmitrB   zjob_create_params.Method | OmitrC   zOptional[int] | OmitrD   Optional[str] | OmitrE   r   rF   Headers | NonerG   Query | NonerH   Body | NonerI   'float | httpx.Timeout | None | NotGivenr   r(   rb   r   rF   r   rG   r   rH   r   rI   r   r   r(   )re   
str | Omitrf   
int | OmitrA   Optional[Dict[str, str]] | OmitrF   r   rG   r   rH   r   rI   r   r   zSyncCursorPage[FineTuningJob])rb   r   re   r   rf   r   rF   r   rG   r   rH   r   rI   r   r   z"SyncCursorPage[FineTuningJobEvent]__name__
__module____qualname____doc__r   r4   r9   r=   r   r   rX   rc   rp   ru   r|   r   r    r5   r3   r*   r*   %   s   S) ) ) ) / / EIQU.226%)'+04 )-$("&;D#u
 au
 	u

 Bu
 Ou
 ,u
 0u
 #u
 %u
 .u
 &u
 "u
   !u
" 9#u
$ 
%u
z )-$("&;D!
!
 &!
 "!
  !
 9!
 
!
L ! 48 )-$("&;D2
 2
 	2

 22
 &2
 "2
  2
 92
 
'2
t )-$("&;D

 &
 "
  
 9
 

J !  )-$("&;D0
0
 	0

 0
 &0
 "0
  0
 90
 
,0
p )-$("&;D

 &
 "
  
 9
 

N )-$("&;D

 &
 "
  
 9
 

r5   c                     e Zd ZdZedd       Zedd       Zedd       Zeeeeeeeddde	d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ
ddde	d	 	 	 	 	 	 	 	 	 	 	 dd	Zeeeddde	d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddde	d	 	 	 	 	 	 	 	 	 	 	 ddZeeddde	d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddde	d	 	 	 	 	 	 	 	 	 	 	 ddZddde	d	 	 	 	 	 	 	 	 	 	 	 ddZy)r+   r-   c                ,    t        | j                        S r/   )r   r0   r1   s    r3   r4   zAsyncJobs.checkpoints  s      --r5   c                    t        |       S r7   )AsyncJobsWithRawResponser1   s    r3   r9   zAsyncJobs.with_raw_response  s     (--r5   c                    t        |       S r;   )AsyncJobsWithStreamingResponser1   s    r3   r=   z!AsyncJobs.with_streaming_response  s     .d33r5   Nr>   c                  K   | j                  dt        |||||||||	d	t        j                         d{   t	        |
|||      t
               d{   S 7 $7 w)rK   rL   rM   NrP   rQ   )rU   r   r%   rV   r#   r(   rW   s                 r3   rX   zAsyncJobs.create  s     B ZZ,"%2'6$0 ($ $'6
 "11  )+Q[el "'   
 
 	

s!   4AA
AAAArP   c          	        K   |st        d|      | j                  d| t        ||||      t               d{   S 7 w)rZ   r[   r\   rP   r]   Nr^   ra   s         r3   rc   zAsyncJobs.retrieve6  sd     2 "`as`vwxxYY !3 45(+Q[el "  
 
 	
 
s   <AAArd   c                   | j                  dt        t           t        ||||t	        |||dt
        j                              t              S rh   )rm   r!   r(   r#   r   r$   rn   ro   s           r3   rp   zAsyncJobs.listY  sb    @ !! /(+'%%!&!&$,
 $11  # " 
 	
r5   c          	        K   |st        d|      | j                  d| dt        ||||      t               d{   S 7 w)rr   r[   r\   rs   rP   r]   Nrt   ra   s         r3   ru   zAsyncJobs.cancel  f     . "`as`vwxxZZ !3 4G<(+Q[el "   
 
 	
 
   =AA Arw   c                   |st        d|      | j                  d| dt        t           t	        ||||t        ||dt        j                              t              S ry   )r_   rm   r!   r)   r#   r   r&   rz   r{   s           r3   r|   zAsyncJobs.list_events  s    : "`as`vwxx!! !3 4G< !34(+'%%!&!& +>> %! " 
 	
r5   c          	        K   |st        d|      | j                  d| dt        ||||      t               d{   S 7 w)r~   r[   r\   r   rP   r]   Nrt   ra   s         r3   r   zAsyncJobs.pause  sf     . "`as`vwxxZZ !3 4F;(+Q[el "   
 
 	
 
r   c          	        K   |st        d|      | j                  d| dt        ||||      t               d{   S 7 w)r   r[   r\   r   rP   r]   Nrt   ra   s         r3   r   zAsyncJobs.resume  r   r   )r   r   )r   r   )r   r   r   r   )re   r   rf   r   rA   r   rF   r   rG   r   rH   r   rI   r   r   z=AsyncPaginator[FineTuningJob, AsyncCursorPage[FineTuningJob]])rb   r   re   r   rf   r   rF   r   rG   r   rH   r   rI   r   r   zGAsyncPaginator[FineTuningJobEvent, AsyncCursorPage[FineTuningJobEvent]]r   r   r5   r3   r+   r+     s   S. . . . 4 4 EIQU.226%)'+04 )-$("&;D#u
 au
 	u

 Bu
 Ou
 ,u
 0u
 #u
 %u
 .u
 &u
 "u
   !u
" 9#u
$ 
%u
z )-$("&;D!
!
 &!
 "!
  !
 9!
 
!
L ! 48 )-$("&;D2
 2
 	2

 22
 &2
 "2
  2
 92
 
G2
t )-$("&;D

 &
 "
  
 9
 

J !  )-$("&;D0
0
 	0

 0
 &0
 "0
  0
 90
 
Q0
p )-$("&;D

 &
 "
  
 9
 

N )-$("&;D

 &
 "
  
 9
 

r5   c                  &    e Zd ZddZedd       Zy)r8   c                
   || _         t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j
                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _	        y N)
_jobsr
   to_raw_response_wrapperrX   rc   rp   ru   r|   r   r   r2   jobss     r3   __init__zJobsWithRawResponse.__init__$  s    
&>>KK
 )@@MM
 %<<II
	 '>>KK
 ,CC
 &==JJ

 '>>KK
r5   c                @    t        | j                  j                        S r/   )r   r   r4   r1   s    r3   r4   zJobsWithRawResponse.checkpoints=  s     *$***@*@AAr5   Nr   r*   r   None)r   r   r   r   r   r   r   r4   r   r5   r3   r8   r8   #  s    
2 B Br5   r8   c                  &    e Zd ZddZedd       Zy)r   c                
   || _         t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j
                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _	        y r   )
r   r
   async_to_raw_response_wrapperrX   rc   rp   ru   r|   r   r   r   s     r3   r   z!AsyncJobsWithRawResponse.__init__D  s    
&DDKK
 )FFMM
 %BBII
	 'DDKK
 ,II
 &CCJJ

 'DDKK
r5   c                @    t        | j                  j                        S r/   )r   r   r4   r1   s    r3   r4   z$AsyncJobsWithRawResponse.checkpoints]  s     /tzz/E/EFFr5   Nr   r+   r   r   )r   r   r   r   r5   r3   r   r   C  s    
2 G Gr5   r   c                  &    e Zd ZddZedd       Zy)r<   c                ~   || _         t        |j                        | _        t        |j                        | _        t        |j                        | _        t        |j
                        | _        t        |j                        | _        t        |j                        | _        t        |j                        | _        y r   )	r   r   rX   rc   rp   ru   r|   r   r   r   s     r3   r   z"JobsWithStreamingResponse.__init__d  s    
2KK
 5MM
 1II
	 3KK
 8
 2JJ

 3KK
r5   c                @    t        | j                  j                        S r/   )r   r   r4   r1   s    r3   r4   z%JobsWithStreamingResponse.checkpoints}  s     0

0F0FGGr5   Nr   )r   r   r   r   r5   r3   r<   r<   c  s    
2 H Hr5   r<   c                  &    e Zd ZddZedd       Zy)r   c                ~   || _         t        |j                        | _        t        |j                        | _        t        |j                        | _        t        |j
                        | _        t        |j                        | _        t        |j                        | _        t        |j                        | _        y r   )	r   r   rX   rc   rp   ru   r|   r   r   r   s     r3   r   z'AsyncJobsWithStreamingResponse.__init__  s    
8KK
 ;MM
 7II
	 9KK
 >
 8JJ

 9KK
r5   c                @    t        | j                  j                        S r/   )r   r   r4   r1   s    r3   r4   z*AsyncJobsWithStreamingResponse.checkpoints  s     5TZZ5K5KLLr5   Nr   )r   r   r   r   r5   r3   r   r     s    
2 M Mr5   r   )=
__future__r   typingr   r   r   r   typing_extensionsr   httpx r
   _typesr   r   r   r   r   r   r   _utilsr   r   _compatr   r4   r   r   r   r   r   r   	_resourcer   r   	_responser   r   
paginationr    r!   _base_clientr"   r#   types.fine_tuningr$   r%   r&   types.shared_params.metadatar'   !types.fine_tuning.fine_tuning_jobr(   'types.fine_tuning.fine_tuning_job_eventr)   __all__r*   r+   r8   r   r<   r   r   r5   r3   <module>r      s    # 2 2 %  ! L L L = '  < Z : ] \ 5 ? J;
|
? |
~|
  |
~B B@G G@H H@M Mr5   