o
    i                     @  s  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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/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddgZ7G dd de"Z8G dd de#Z9G dd dZ:G dd dZ;G dd dZ<G dd dZ=dS )     )annotations)DictUnionIterableOptional)LiteralN   )_legacy_response)BodyOmitQueryHeadersNotGivenomit	not_given)path_template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dAddZedBddZedCd
dZeeeeeeeddde	ddDd(d)Z
ddde	d*dEd,d-Zeeeddde	d.dFd5d6Zddde	d*dEd7d8Zeeddde	d9dGd;d<Zddde	d*dEd=d>Zddde	d*dEd?d@ZdS )Hr*   IManage fine-tuning jobs to tailor a model to your specific training data.returnr   c                 C  
   t | jS r-   )r   _clientself r4   `/home/kim/smarthome/.venv/lib/python3.10/site-packages/openai/resources/fine_tuning/jobs/jobs.pycheckpoints(      
zJobs.checkpointsJobsWithRawResponsec                 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
        )r8   r2   r4   r4   r5   with_raw_response-      zJobs.with_raw_responseJobsWithStreamingResponsec                 C  r9   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
        )r=   r2   r4   r4   r5   with_streaming_response7      zJobs.with_streaming_responseNhyperparametersintegrationsmetadatamethodseedsuffixvalidation_fileextra_headersextra_query
extra_bodytimeoutmodelQUnion[str, Literal['babbage-002', 'davinci-002', 'gpt-3.5-turbo', 'gpt-4o-mini']]training_filestrrB   (job_create_params.Hyperparameters | OmitrC   8Optional[Iterable[job_create_params.Integration]] | OmitrD   Optional[Metadata] | OmitrE   job_create_params.Method | OmitrF   Optional[int] | OmitrG   Optional[str] | OmitrH   rI   Headers | NonerJ   Query | NonerK   Body | NonerL   'float | httpx.Timeout | None | NotGivenr(   c                C  s:   | j dt|||||||||	d	tjt|
|||dtd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	rM   rO   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   bodyoptionscast_to)_postr   r%   JobCreateParamsr#   r(   r3   rM   rO   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r4   r4   r5   create@   s(   azJobs.creater^   fine_tuning_job_idc                C  6   |s	t d|| jtd|dt||||dtd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/{fine_tuning_job_id}rg   r^   ra   rb   
ValueError_getr   r#   r(   r3   rg   rI   rJ   rK   rL   r4   r4   r5   retrieve   s   
zJobs.retrieveafterlimitrD   rI   rJ   rK   rL   rt   
str | Omitru   
int | OmitOptional[Dict[str, str]] | OmitSyncCursorPage[FineTuningJob]c                C  4   | j dtt t||||t|||dtjdtd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
        r\   )rt   ru   rD   rI   rJ   rK   rL   querypagera   rM   )_get_api_listr    r(   r#   r   r$   JobListParamsr3   rt   ru   rD   rI   rJ   rK   rL   r4   r4   r5   list   $    z	Jobs.listc                C  rh   )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
        rj   -/fine_tuning/jobs/{fine_tuning_job_id}/cancelrl   r^   rm   ro   rc   r   r#   r(   rq   r4   r4   r5   cancel     
zJobs.cancelrt   ru   rI   rJ   rK   rL   "SyncCursorPage[FineTuningJobEvent]c                C  L   |s	t d|| jtd|dtt t||||t||dtjdtd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
        rj   z-/fine_tuning/jobs/{fine_tuning_job_id}/eventsrl   )rt   ru   r|   r~   )	ro   r   r   r    r)   r#   r   r&   JobListEventsParamsr3   rg   rt   ru   rI   rJ   rK   rL   r4   r4   r5   list_events/  &   
zJobs.list_eventsc                C  rh   )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
        rj   ,/fine_tuning/jobs/{fine_tuning_job_id}/pauserl   r^   rm   r   rq   r4   r4   r5   pausea  r   z
Jobs.pausec                C  rh   )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
        rj   -/fine_tuning/jobs/{fine_tuning_job_id}/resumerl   r^   rm   r   rq   r4   r4   r5   resume  r   zJobs.resume)r.   r   )r.   r8   )r.   r=   rM   rN   rO   rP   rB   rQ   rC   rR   rD   rS   rE   rT   rF   rU   rG   rV   rH   rV   rI   rW   rJ   rX   rK   rY   rL   rZ   r.   r(   rg   rP   rI   rW   rJ   rX   rK   rY   rL   rZ   r.   r(   )rt   rv   ru   rw   rD   rx   rI   rW   rJ   rX   rK   rY   rL   rZ   r.   ry   )rg   rP   rt   rv   ru   rw   rI   rW   rJ   rX   rK   rY   rL   rZ   r.   r   __name__
__module____qualname____doc__r   r6   r;   r?   r   r   rf   rr   r   r   r   r   r   r4   r4   r4   r5   r*   %   n    	}&:%8'c                   @  r,   )Hr+   r-   r.   r   c                 C  r/   r0   )r   r1   r2   r4   r4   r5   r6     r7   zAsyncJobs.checkpointsAsyncJobsWithRawResponsec                 C  r9   r:   )r   r2   r4   r4   r5   r;     r<   zAsyncJobs.with_raw_responseAsyncJobsWithStreamingResponsec                 C  r9   r>   )r   r2   r4   r4   r5   r?     r@   z!AsyncJobs.with_streaming_responseNrA   rM   rN   rO   rP   rB   rQ   rC   rR   rD   rS   rE   rT   rF   rU   rG   rV   rH   rI   rW   rJ   rX   rK   rY   rL   rZ   r(   c                  sH   | j dt|||||||||	d	tjI dH t|
|||dtdI dH S )r[   r\   r]   Nr^   r_   )rc   r   r%   rd   r#   r(   re   r4   r4   r5   rf     s*   azAsyncJobs.creater^   rg   c                  >   |s
t d|| jtd|dt||||dtdI dH S )ri   rj   rk   rl   r^   rm   Nrn   rq   r4   r4   r5   rr   6  s   
zAsyncJobs.retrievers   rt   rv   ru   rw   rx   =AsyncPaginator[FineTuningJob, AsyncCursorPage[FineTuningJob]]c                C  rz   r{   )r   r!   r(   r#   r   r$   r   r   r4   r4   r5   r   Y  r   zAsyncJobs.listc                  r   )r   rj   r   rl   r^   rm   Nr   rq   r4   r4   r5   r        
zAsyncJobs.cancelr   GAsyncPaginator[FineTuningJobEvent, AsyncCursorPage[FineTuningJobEvent]]c                C  r   r   )	ro   r   r   r!   r)   r#   r   r&   r   r   r4   r4   r5   r     r   zAsyncJobs.list_eventsc                  r   )r   rj   r   rl   r^   rm   Nr   rq   r4   r4   r5   r     r   zAsyncJobs.pausec                  r   )r   rj   r   rl   r^   rm   Nr   rq   r4   r4   r5   r     r   zAsyncJobs.resume)r.   r   )r.   r   )r.   r   r   r   )rt   rv   ru   rw   rD   rx   rI   rW   rJ   rX   rK   rY   rL   rZ   r.   r   )rg   rP   rt   rv   ru   rw   rI   rW   rJ   rX   rK   rY   rL   rZ   r.   r   r   r4   r4   r4   r5   r+     r   c                   @  $   e Zd ZdddZeddd	Zd
S )r8   jobsr*   r.   Nonec                 C  l   || _ t|j| _t|j| _t|j| _t|j| _t|j| _t|j| _t|j	| _	d S N)
_jobsr	   Zto_raw_response_wrapperrf   rr   r   r   r   r   r   r3   r   r4   r4   r5   __init__$  ,   
zJobsWithRawResponse.__init__r   c                 C     t | jjS r0   )r   r   r6   r2   r4   r4   r5   r6   =     zJobsWithRawResponse.checkpointsNr   r*   r.   r   )r.   r   r   r   r   r   r   r6   r4   r4   r4   r5   r8   #      
r8   c                   @  r   )r   r   r+   r.   r   c                 C  r   r   )
r   r	   Zasync_to_raw_response_wrapperrf   rr   r   r   r   r   r   r   r4   r4   r5   r   D  r   z!AsyncJobsWithRawResponse.__init__r   c                 C  r   r0   )r   r   r6   r2   r4   r4   r5   r6   ]  r   z$AsyncJobsWithRawResponse.checkpointsNr   r+   r.   r   )r.   r   r   r4   r4   r4   r5   r   C  r   r   c                   @  r   )r=   r   r*   r.   r   c                 C  ^   || _ t|j| _t|j| _t|j| _t|j| _t|j| _t|j| _t|j| _d S r   )	r   r   rf   rr   r   r   r   r   r   r   r4   r4   r5   r   d  ,   
z"JobsWithStreamingResponse.__init__r   c                 C  r   r0   )r   r   r6   r2   r4   r4   r5   r6   }  r   z%JobsWithStreamingResponse.checkpointsNr   )r.   r   r   r4   r4   r4   r5   r=   c  r   r=   c                   @  r   )r   r   r+   r.   r   c                 C  r   r   )	r   r   rf   rr   r   r   r   r   r   r   r4   r4   r5   r     r   z'AsyncJobsWithStreamingResponse.__init__r   c                 C  r   r0   )r   r   r6   r2   r4   r4   r5   r6     r   z*AsyncJobsWithStreamingResponse.checkpointsNr   )r.   r   r   r4   r4   r4   r5   r     r   r   )>
__future__r   typingr   r   r   r   Ztyping_extensionsr   Zhttpx r	   _typesr
   r   r   r   r   r   r   Z_utilsr   r   r   Z_compatr   r6   r   r   r   r   r   r   Z	_resourcer   r   	_responser   r   Z
paginationr    r!   Z_base_clientr"   r#   Ztypes.fine_tuningr$   r%   r&   Ztypes.shared_params.metadatar'   Z!types.fine_tuning.fine_tuning_jobr(   Z'types.fine_tuning.fine_tuning_job_eventr)   __all__r*   r+   r8   r   r=   r   r4   r4   r4   r5   <module>   s<   $          