<?php declare(strict_types=1); namespace OpenAI; use OpenAI\Contracts\ClientContract; use OpenAI\Contracts\Resources\ThreadsContract; use OpenAI\Contracts\Resources\VectorStoresContract; use OpenAI\Contracts\TransporterContract; use OpenAI\Resources\Assistants; use OpenAI\Resources\Audio; use OpenAI\Resources\Batches; use OpenAI\Resources\Chat; use OpenAI\Resources\Completions; use OpenAI\Resources\Edits; use OpenAI\Resources\Embeddings; use OpenAI\Resources\Files; use OpenAI\Resources\FineTunes; use OpenAI\Resources\FineTuning; use OpenAI\Resources\Images; use OpenAI\Resources\Models; use OpenAI\Resources\Moderations; use OpenAI\Resources\Threads; use OpenAI\Resources\VectorStores; final class Client implements ClientContract { /** * Creates a Client instance with the given API token. */ public function __construct(private readonly TransporterContract $transporter) { // .. } /** * Given a prompt, the model will return one or more predicted completions, and can also return the probabilities * of alternative tokens at each position. * * @see https://platform.openai.com/docs/api-reference/completions */ public function completions(): Completions { return new Completions($this->transporter); } /** * Given a chat conversation, the model will return a chat completion response. * * @see https://platform.openai.com/docs/api-reference/chat */ public function chat(): Chat { return new Chat($this->transporter); } /** * Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms. * * @see https://platform.openai.com/docs/api-reference/embeddings */ public function embeddings(): Embeddings { return new Embeddings($this->transporter); } /** * Learn how to turn audio into text. * * @see https://platform.openai.com/docs/api-reference/audio */ public function audio(): Audio { return new Audio($this->transporter); } /** * Given a prompt and an instruction, the model will return an edited version of the prompt. * * @see https://platform.openai.com/docs/api-reference/edits */ public function edits(): Edits { return new Edits($this->transporter); } /** * Files are used to upload documents that can be used with features like Fine-tuning. * * @see https://platform.openai.com/docs/api-reference/files */ public function files(): Files { return new Files($this->transporter); } /** * List and describe the various models available in the API. * * @see https://platform.openai.com/docs/api-reference/models */ public function models(): Models { return new Models($this->transporter); } /** * Manage fine-tuning jobs to tailor a model to your specific training data. * * @see https://platform.openai.com/docs/api-reference/fine-tuning */ public function fineTuning(): FineTuning { return new FineTuning($this->transporter); } /** * Manage fine-tuning jobs to tailor a model to your specific training data. * * @see https://platform.openai.com/docs/api-reference/fine-tunes * @deprecated OpenAI has deprecated this endpoint and will stop working by January 4, 2024. * https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates#updated-gpt-3-models */ public function fineTunes(): FineTunes { return new FineTunes($this->transporter); } /** * Given an input text, outputs if the model classifies it as violating OpenAI's content policy. * * @see https://platform.openai.com/docs/api-reference/moderations */ public function moderations(): Moderations { return new Moderations($this->transporter); } /** * Given a prompt and/or an input image, the model will generate a new image. * * @see https://platform.openai.com/docs/api-reference/images */ public function images(): Images { return new Images($this->transporter); } /** * Build assistants that can call models and use tools to perform tasks. * * @see https://platform.openai.com/docs/api-reference/assistants */ public function assistants(): Assistants { return new Assistants($this->transporter); } /** * Create threads that assistants can interact with. * * @see https://platform.openai.com/docs/api-reference/threads */ public function threads(): ThreadsContract { return new Threads($this->transporter); } /** * Create large batches of API requests for asynchronous processing. The Batch API returns completions within 24 hours. * * @see https://platform.openai.com/docs/api-reference/batch */ public function batches(): Batches { return new Batches($this->transporter); } /** * Create and update vector stores that assistants can interact with * * @see https://platform.openai.com/docs/api-reference/vector-stores */ public function vectorStores(): VectorStoresContract { return new VectorStores($this->transporter); } }