Skip to content

Commit 427692e

Browse files
committed
add testing ability
1 parent 0bb01e9 commit 427692e

File tree

109 files changed

+2513
-14
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+2513
-14
lines changed

phpstan.neon.dist

+3
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@ parameters:
22
level: max
33
paths:
44
- src
5+
excludePaths:
6+
analyse:
7+
- src/Testing
58

69
reportUnmatchedIgnoredErrors: true

src/Client.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use OpenAI\Resources\Audio;
99
use OpenAI\Resources\Chat;
1010
use OpenAI\Resources\Completions;
11+
use OpenAI\Resources\Contracts\AudioContract;
1112
use OpenAI\Resources\Edits;
1213
use OpenAI\Resources\Embeddings;
1314
use OpenAI\Resources\Files;
@@ -16,7 +17,7 @@
1617
use OpenAI\Resources\Models;
1718
use OpenAI\Resources\Moderations;
1819

19-
final class Client
20+
final class Client implements \OpenAI\Contracts\Client
2021
{
2122
/**
2223
* Creates a Client instance with the given API token.
@@ -32,7 +33,7 @@ public function __construct(private readonly Transporter $transporter)
3233
*
3334
* @see https://beta.openai.com/docs/api-reference/completions
3435
*/
35-
public function completions(): Completions
36+
public function completions(): Resources\Contracts\CompletionsContract
3637
{
3738
return new Completions($this->transporter);
3839
}
@@ -62,7 +63,7 @@ public function embeddings(): Embeddings
6263
*
6364
* @see https://platform.openai.com/docs/api-reference/audio
6465
*/
65-
public function audio(): Audio
66+
public function audio(): AudioContract
6667
{
6768
return new Audio($this->transporter);
6869
}

src/Contracts/Client.php

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
3+
namespace OpenAI\Contracts;
4+
5+
use OpenAI\Resources\Contracts\AudioContract;
6+
use OpenAI\Resources\Contracts\ChatContract;
7+
use OpenAI\Resources\Contracts\CompletionsContract;
8+
use OpenAI\Resources\Contracts\EditsContract;
9+
use OpenAI\Resources\Contracts\EmbeddingsContract;
10+
use OpenAI\Resources\Contracts\FilesContract;
11+
use OpenAI\Resources\Contracts\FineTunesContract;
12+
use OpenAI\Resources\Contracts\ImagesContract;
13+
use OpenAI\Resources\Contracts\ModelsContract;
14+
use OpenAI\Resources\Contracts\ModerationsContract;
15+
16+
interface Client
17+
{
18+
/**
19+
* Given a prompt, the model will return one or more predicted completions, and can also return the probabilities
20+
* of alternative tokens at each position.
21+
*
22+
* @see https://beta.openai.com/docs/api-reference/completions
23+
*/
24+
public function completions(): CompletionsContract;
25+
26+
/**
27+
* Given a chat conversation, the model will return a chat completion response.
28+
*
29+
* @see https://platform.openai.com/docs/api-reference/chat
30+
*/
31+
public function chat(): ChatContract;
32+
33+
/**
34+
* Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.
35+
*
36+
* @see https://beta.openai.com/docs/api-reference/embeddings
37+
*/
38+
public function embeddings(): EmbeddingsContract;
39+
40+
/**
41+
* Learn how to turn audio into text.
42+
*
43+
* @see https://platform.openai.com/docs/api-reference/audio
44+
*/
45+
public function audio(): AudioContract;
46+
47+
/**
48+
* Given a prompt and an instruction, the model will return an edited version of the prompt.
49+
*
50+
* @see https://beta.openai.com/docs/api-reference/edits
51+
*/
52+
public function edits(): EditsContract;
53+
54+
/**
55+
* Files are used to upload documents that can be used with features like Fine-tuning.
56+
*
57+
* @see https://beta.openai.com/docs/api-reference/files
58+
*/
59+
public function files(): FilesContract;
60+
61+
/**
62+
* List and describe the various models available in the API.
63+
*
64+
* @see https://beta.openai.com/docs/api-reference/models
65+
*/
66+
public function models(): ModelsContract;
67+
68+
/**
69+
* Manage fine-tuning jobs to tailor a model to your specific training data.
70+
*
71+
* @see https://beta.openai.com/docs/api-reference/fine-tunes
72+
*/
73+
public function fineTunes(): FineTunesContract;
74+
75+
/**
76+
* Given a input text, outputs if the model classifies it as violating OpenAI's content policy.
77+
*
78+
* @see https://beta.openai.com/docs/api-reference/moderations
79+
*/
80+
public function moderations(): ModerationsContract;
81+
82+
/**
83+
* Given a prompt and/or an input image, the model will generate a new image.
84+
*
85+
* @see https://beta.openai.com/docs/api-reference/images
86+
*/
87+
public function images(): ImagesContract;
88+
}

src/Resources/Audio.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
namespace OpenAI\Resources;
66

7+
use OpenAI\Resources\Contracts\AudioContract;
78
use OpenAI\Responses\Audio\TranscriptionResponse;
89
use OpenAI\Responses\Audio\TranslationResponse;
910
use OpenAI\ValueObjects\Transporter\Payload;
1011

11-
final class Audio
12+
final class Audio implements AudioContract
1213
{
1314
use Concerns\Transportable;
1415

src/Resources/Chat.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
namespace OpenAI\Resources;
66

7+
use OpenAI\Resources\Contracts\ChatContract;
78
use OpenAI\Responses\Chat\CreateResponse;
89
use OpenAI\ValueObjects\Transporter\Payload;
910

10-
final class Chat
11+
final class Chat implements ChatContract
1112
{
1213
use Concerns\Transportable;
1314

src/Resources/Completions.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use OpenAI\Responses\Completions\CreateResponse;
88
use OpenAI\ValueObjects\Transporter\Payload;
99

10-
final class Completions
10+
final class Completions implements \OpenAI\Resources\Contracts\CompletionsContract
1111
{
1212
use Concerns\Transportable;
1313

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\Audio\TranscriptionResponse;
6+
use OpenAI\Responses\Audio\TranslationResponse;
7+
8+
interface AudioContract
9+
{
10+
/**
11+
* Transcribes audio into the input language.
12+
*
13+
* @see https://platform.openai.com/docs/api-reference/audio/create
14+
*
15+
* @param array<string, mixed> $parameters
16+
*/
17+
public function transcribe(array $parameters): TranscriptionResponse;
18+
19+
/**
20+
* Translates audio into English.
21+
*
22+
* @see https://platform.openai.com/docs/api-reference/audio/create
23+
*
24+
* @param array<string, mixed> $parameters
25+
*/
26+
public function translate(array $parameters): TranslationResponse;
27+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\Chat\CreateResponse;
6+
7+
interface ChatContract
8+
{
9+
/**
10+
* Creates a completion for the chat message
11+
*
12+
* @see https://platform.openai.com/docs/api-reference/chat/create
13+
*
14+
* @param array<string, mixed> $parameters
15+
*/
16+
public function create(array $parameters): CreateResponse;
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\Completions\CreateResponse;
6+
7+
interface CompletionsContract
8+
{
9+
/**
10+
* Creates a completion for the provided prompt and parameters
11+
*
12+
* @see https://beta.openai.com/docs/api-reference/completions/create-completion
13+
*
14+
* @param array<string, mixed> $parameters
15+
*/
16+
public function create(array $parameters): CreateResponse;
17+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\Edits\CreateResponse;
6+
7+
interface EditsContract
8+
{
9+
/**
10+
* Creates a new edit for the provided input, instruction, and parameters.
11+
*
12+
* @see https://beta.openai.com/docs/api-reference/edits/create
13+
*
14+
* @param array<string, mixed> $parameters
15+
*/
16+
public function create(array $parameters): CreateResponse;
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\Embeddings\CreateResponse;
6+
7+
interface EmbeddingsContract
8+
{
9+
/**
10+
* Creates an embedding vector representing the input text.
11+
*
12+
* @see https://beta.openai.com/docs/api-reference/embeddings/create
13+
*
14+
* @param array<string, mixed> $parameters
15+
*/
16+
public function create(array $parameters): CreateResponse;
17+
}
+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\Files\CreateResponse;
6+
use OpenAI\Responses\Files\DeleteResponse;
7+
use OpenAI\Responses\Files\ListResponse;
8+
use OpenAI\Responses\Files\RetrieveResponse;
9+
10+
interface FilesContract
11+
{
12+
/**
13+
* Returns a list of files that belong to the user's organization.
14+
*
15+
* @see https://beta.openai.com/docs/api-reference/files/list
16+
*/
17+
public function list(): ListResponse;
18+
19+
/**
20+
* Returns information about a specific file.
21+
*
22+
* @see https://beta.openai.com/docs/api-reference/files/retrieve
23+
*/
24+
public function retrieve(string $file): RetrieveResponse;
25+
26+
/**
27+
* Returns the contents of the specified file.
28+
*
29+
* @see https://beta.openai.com/docs/api-reference/files/retrieve-content
30+
*/
31+
public function download(string $file): string;
32+
33+
/**
34+
* Upload a file that contains document(s) to be used across various endpoints/features.
35+
*
36+
* @see https://beta.openai.com/docs/api-reference/files/upload
37+
*
38+
* @param array<string, mixed> $parameters
39+
*/
40+
public function upload(array $parameters): CreateResponse;
41+
42+
/**
43+
* Delete a file.
44+
*
45+
* @see https://beta.openai.com/docs/api-reference/files/delete
46+
*/
47+
public function delete(string $file): DeleteResponse;
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
namespace OpenAI\Resources\Contracts;
4+
5+
use OpenAI\Responses\FineTunes\ListEventsResponse;
6+
use OpenAI\Responses\FineTunes\ListResponse;
7+
use OpenAI\Responses\FineTunes\RetrieveResponse;
8+
9+
interface FineTunesContract
10+
{
11+
/**
12+
* Creates a job that fine-tunes a specified model from a given dataset.
13+
*
14+
* Response includes details of the enqueued job including job status and the name of the fine-tuned models once complete.
15+
*
16+
* @see https://beta.openai.com/docs/api-reference/fine-tunes/create
17+
*
18+
* @param array<string, mixed> $parameters
19+
*/
20+
public function create(array $parameters): RetrieveResponse;
21+
22+
/**
23+
* List your organization's fine-tuning jobs.
24+
*
25+
* @see https://beta.openai.com/docs/api-reference/fine-tunes/list
26+
*/
27+
public function list(): ListResponse;
28+
29+
/**
30+
* Gets info about the fine-tune job.
31+
*
32+
* @see https://beta.openai.com/docs/api-reference/fine-tunes/list
33+
*/
34+
public function retrieve(string $fineTuneId): RetrieveResponse;
35+
36+
/**
37+
* Immediately cancel a fine-tune job.
38+
*
39+
* @see https://beta.openai.com/docs/api-reference/fine-tunes/cancel
40+
*/
41+
public function cancel(string $fineTuneId): RetrieveResponse;
42+
43+
/**
44+
* Get fine-grained status updates for a fine-tune job.
45+
*
46+
* @see https://beta.openai.com/docs/api-reference/fine-tunes/events
47+
*/
48+
public function listEvents(string $fineTuneId): ListEventsResponse;
49+
}

0 commit comments

Comments
 (0)