Paket ini tidak lagi didukung atau dipelihara.
Klien API OpenAi REST Tectalic adalah paket yang menyediakan cara yang nyaman dan langsung untuk berinteraksi dengan API OpenAI dari aplikasi PHP Anda.
Mendukung ChatGPT , GPT-4 , GPT-3.5 , GPT-3 , Codex , Dall · E , Whisper , Fine-Tuning , Embeddings dan Moderation Model, dengan objek transfer data (DTO) yang diketik sepenuhnya untuk semua permintaan dan respons dan dukungan Autocomplete Autocomplete IDE.
Informasi lebih lanjut tersedia dari https://tectalic.com/apis/openai.
Ini adalah paket tidak resmi dan tidak memiliki afiliasi dengan openai.
Mengintegrasikan OpenAi ke dalam aplikasi Anda sekarang sesederhana beberapa baris kode.
$ openaiClient = Tectalic OpenAi Manager :: build (
new GuzzleHttp Client (),
new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' ))
);
/** @var TectalicOpenAiModelsChatCompletionsCreateResponse $response */
$ response = $ openaiClient -> chatCompletions ()-> create (
new Tectalic OpenAi Models ChatCompletions CreateRequest ([
' model ' => ' gpt-4 ' ,
' messages ' => [
[
' role ' => ' user ' ,
' content ' => ' Will using a well designed and supported third party package save time? '
],
],
])
)-> toModel ();
echo $ response -> choices [ 0 ]-> message -> content ;
// Yes, using a well-designed and supported third-party package can save time during software development.
// It allows you to focus on the core functionality of your application without having to reinvent the wheel or spend resources developing the same functionality from scratch.
// A good third-party package can provide reliability, efficiency, and continued support with updates and bug fixes, which in turn facilitates faster development and a more stable final product.
// Additionally, using widely adopted packages can also increase the chances of compatibility with other software components and make it easier for other developers to understand and work with your code.Pelajari lebih lanjut tentang penyelesaian obrolan.
Pawang ini mendukung model GPT-3.5 dan GPT-4 :
Model GPT-3.5 yang didukung termasuk gpt-3.5-turbo dan banyak lagi.
Model GPT-4 yang didukung termasuk gpt-4 dan banyak lagi.
Catatan: GPT-4 saat ini dalam beta terbatas dan hanya dapat diakses oleh mereka yang telah diberikan akses. Silakan lihat di sini untuk detail dan instruksi tentang cara bergabung dengan daftar tunggu.
Jika Anda menerima kesalahan 404 saat mencoba menggunakan GPT-4, maka akun OpenAI Anda belum diberikan akses.
Contoh berikut menggunakan model gpt-3.5-turbo-0613 untuk menunjukkan panggilan fungsi.
Ini mengubah bahasa alami menjadi panggilan fungsi, yang kemudian dapat dieksekusi dalam aplikasi Anda.
$ openaiClient = Tectalic OpenAi Manager :: build (
new GuzzleHttp Client (),
new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' ))
);
/** @var TectalicOpenAiModelsChatCompletionsCreateResponse $response */
$ response = $ openaiClient -> chatCompletions ()-> create ( new CreateRequest ([
' model ' => ' gpt-3.5-turbo-0613 ' ,
' messages ' => [
[ ' role ' => ' user ' , ' content ' => ' What ' s the weather like in Boston? ' ]
],
' functions ' => [
[
' name ' => ' get_current_weather ' ,
' description ' => ' Get the current weather in a given location ' ,
' parameters ' => new Tectalic OpenAi Models ChatCompletions CreateRequestFunctionsItemParameters (
[
' type ' => ' object ' ,
' properties ' => [
' location ' => [
' type ' => ' string ' ,
' description ' => ' The worldwide city and state, e.g. San Francisco, CA ' ,
],
' format ' => [
' type ' => ' string ' ,
' description ' => ' The temperature unit to use. Infer this from the users location. ' ,
' enum ' => [ ' celsius ' , ' farhenheit ' ],
],
' num_days ' => [
' type ' => ' integer ' ,
' description ' => ' The number of days to forecast ' ,
],
],
' required ' => [ ' location ' , ' format ' , ' num_days ' ],
]
)
]
],
' function_call ' => ' auto ' ,
]))-> toModel ();
$ params = json_decode ( $ response -> choices [ 0 ]-> message -> function_call -> arguments , true );
var_dump ( $ params );
// array(3) {
// 'location' =>
// string(6) "Boston"
// 'format' =>
// string(7) "celsius"
// 'num_days' =>
// int(1)
//}Pelajari lebih lanjut tentang panggilan fungsi.
$ openaiClient = Tectalic OpenAi Manager :: build ( new GuzzleHttp Client (), new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' )));
/** @var TectalicOpenAiModelsCompletionsCreateResponse $response */
$ response = $ openaiClient -> completions ()-> create (
new Tectalic OpenAi Models Completions CreateRequest ([
' model ' => ' text-davinci-003 ' ,
' prompt ' => ' Will using a third party package save time? ' ,
])
)-> toModel ();
echo $ response -> choices [ 0 ]-> text ;
// Using a third party package can save time because you don't have to write the code yourself. Pawang ini mendukung semua model GPT-3, termasuk text-davinci-003 , text-davinci-002 dan banyak lagi.
Pelajari lebih lanjut tentang penyelesaian teks.
$ openaiClient = Tectalic OpenAi Manager :: build ( new GuzzleHttp Client (), new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' )));
/** @var TectalicOpenAiModelsCompletionsCreateResponse $response */
$ response = $ openaiClient -> completions ()-> create (
new Tectalic OpenAi Models Completions CreateRequest ([
' model ' => ' code-davinci-002 ' ,
' prompt ' => " // PHP 8 n // A variable that saves the current date and time " ,
' max_tokens ' => 256 ,
' stop ' => " ; " ,
])
)-> toModel ();
echo $ response -> choices [ 0 ]-> text ;
// $now = date("Y-m-d G:i:s") Model kodeks yang didukung termasuk code-davinci-002 dan code-cushman-001 .
Pelajari lebih lanjut tentang penyelesaian kode.
$ openaiClient = Tectalic OpenAi Manager :: build ( new GuzzleHttp Client (), new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' )));
/** @var TectalicOpenAiModelsImagesGenerationsCreateResponse $response */
$ response = $ openaiClient -> imagesGenerations ()-> create (
new Tectalic OpenAi Models ImagesGenerations CreateRequest ([
' prompt ' => ' A cute baby sea otter wearing a hat ' ,
' size ' => ' 256x256 ' ,
' n ' => 5
])
)-> toModel ();
foreach ( $ response -> data as $ item ) {
var_dump ( $ item -> url );
}Pelajari lebih lanjut tentang pembuatan gambar.
$ openaiClient = Tectalic OpenAi Manager :: build ( new GuzzleHttp Client (), new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' )));
/** @var TectalicOpenAiModelsAudioTranscriptionsCreateResponse $response */
$ response = $ openaiClient -> audioTranscriptions ()-> create (
new Tectalic OpenAi Models AudioTranscriptions CreateRequest ([
' file ' => ' /full/path/to/audio/file.mp3 ' ,
' model ' => ' whisper-1 ' ,
])
)-> toModel ();
echo $ response -> text ;
// Your audio transcript in your source language... Model Whisper yang didukung termasuk whisper-1 .
Pelajari lebih lanjut tentang ucapan untuk teks, termasuk 50+ bahasa yang didukung.
$ openaiClient = Tectalic OpenAi Manager :: build ( new GuzzleHttp Client (), new Tectalic OpenAi Authentication ( getenv ( ' OPENAI_API_KEY ' )));
/** @var TectalicOpenAiModelsAudioTranslationsCreateResponse $response */
$ response = $ openaiClient -> audioTranslations ()-> create (
new Tectalic OpenAi Models AudioTranslations CreateRequest ([
' file ' => ' /full/path/to/audio/file.mp3 ' ,
' model ' => ' whisper-1 ' ,
])
)-> toModel ();
echo $ response -> text ;
// Your audio transcript in English... Model Whisper yang didukung termasuk whisper-1 .
Pelajari lebih lanjut tentang ucapan untuk teks, termasuk 50+ bahasa yang didukung.
Butuh bantuan untuk memulai? Lihat Panduan Kami: Cara Membangun Aplikasi Menggunakan API OpenAI.
Instal paket ke dalam proyek Anda:
composer require tectalic/openaiSetelah menginstal paket klien API OpenAi Rest Tectalic ke dalam proyek Anda, pastikan Anda juga memiliki klien HTTP PSR-18 yang kompatibel seperti 'Guzzle' atau Symfony 'HTTP Client'.
Anda dapat menggunakan sampel kode berikut dan menyesuaikannya agar sesuai dengan aplikasi Anda.
// Load your project's composer autoloader (if you aren't already doing so).
require_once ( __DIR__ . ' /vendor/autoload.php ' ); use Symfony Component HttpClient Psr18Client ;
use Tectalic OpenAi Authentication ;
use Tectalic OpenAi Client ;
use Tectalic OpenAi Manager ;
// Build a Tectalic OpenAI REST API Client globally.
$ auth = new Authentication ( getenv ( ' OPENAI_API_KEY ' ));
$ httpClient = new Psr18Client ();
Manager :: build ( $ httpClient , $ auth );
// or
// Build a Tectalic OpenAI REST API Client manually.
$ auth = new Authentication ( getenv ( ' OPENAI_API_KEY ' ));
$ httpClient = new Psr18Client ();
$ client = new Client ( $ httpClient , $ auth , Manager :: BASE_URI ); Untuk mengotentikasi permintaan API Anda, Anda harus memberikan objek Authentication ( $auth ) saat menelepon Manager::build() .
Otentikasi untuk API OpenAI adalah dengan otentikasi pembawa HTTP.
Silakan lihat dokumentasi API OpenAI untuk detail lebih lanjut tentang mendapatkan kredensial otentikasi Anda.
Dalam kode penggunaan di atas, sesuaikan konstruktor Authentication dengan kebutuhan Anda. Misalnya, kemungkinan perlu menambahkan variabel lingkungan OPENAI_API_KEY ke sistem Anda.
Kelas utama yang akan Anda berinteraksi adalah kelas Client ( TectalicOpenAiClient ).
Kelas Client ini juga berisi metode pembantu yang memungkinkan Anda dengan cepat mengakses 19 penangan API.
Silakan lihat di bawah untuk daftar lengkap penangan dan metode yang didukung.
Paket ini mendukung 28 metode API, yang dikelompokkan menjadi 19 penangan API.
Lihat tabel di bawah ini untuk daftar lengkap penangan dan metode API.
| Kelas penangan dan nama metode API | Keterangan | API kata kerja dan url |
|---|---|---|
AudioTranscriptions::create() | Transkrip audio ke dalam bahasa input. | POST /audio/transcriptions |
AudioTranslations::create() | Menerjemahkan audio ke dalam bahasa Inggris. | POST /audio/translations |
ChatCompletions::create() | Membuat respons model untuk percakapan obrolan yang diberikan. | POST /chat/completions |
Completions::create() | Membuat penyelesaian untuk prompt dan parameter yang disediakan. | POST /completions |
Edits::create() | POST /edits | |
Embeddings::create() | Membuat vektor embedding yang mewakili teks input. | POST /embeddings |
Files::list() | Mengembalikan daftar file milik organisasi pengguna. | GET /files |
Files::create() | Unggah file yang berisi dokumen yang akan digunakan di berbagai titik akhir/fitur. Saat ini, ukuran semua file yang diunggah oleh satu organisasi dapat mencapai 1 GB. Silakan hubungi kami jika Anda perlu meningkatkan batas penyimpanan. | POST /files |
Files::retrieve() | Mengembalikan informasi tentang file tertentu. | GET /files/{file_id} |
Files::delete() | Hapus file. | DELETE /files/{file_id} |
FilesContent::download() | Mengembalikan konten file yang ditentukan. | GET /files/{file_id}/content |
FineTunes::list() | GET /fine-tunes | |
FineTunes::create() | Respons termasuk rincian pekerjaan yang diaktifkan termasuk status pekerjaan dan nama model yang disesuaikan setelah selesai. Pelajari lebih lanjut tentang fine-tuning | POST /fine-tunes |
FineTunes::retrieve() | Pelajari lebih lanjut tentang fine-tuning | GET /fine-tunes/{fine_tune_id} |
FineTunesCancel::cancelFineTune() | POST /fine-tunes/{fine_tune_id}/cancel | |
FineTunesEvents::listFineTune() | GET /fine-tunes/{fine_tune_id}/events | |
FineTuningJobs::listPaginated() | Buat daftar pekerjaan yang menyempurnakan organisasi Anda | GET /fine_tuning/jobs |
FineTuningJobs::create() | Membuat pekerjaan yang menyempurnakan model tertentu dari dataset yang diberikan. Respons termasuk rincian pekerjaan yang diaktifkan termasuk status pekerjaan dan nama model yang disesuaikan setelah selesai. Pelajari lebih lanjut tentang fine-tuning | POST /fine_tuning/jobs |
FineTuningJobs::retrieve() | Dapatkan info tentang pekerjaan yang menyempurnakan. Pelajari lebih lanjut tentang fine-tuning | GET /fine_tuning/jobs/{fine_tuning_job_id} |
FineTuningJobsCancel::fineTuning() | Segera batalkan pekerjaan fine-tune. | POST /fine_tuning/jobs/{fine_tuning_job_id}/cancel |
FineTuningJobsEvents::listFineTuning() | Dapatkan pembaruan status untuk pekerjaan yang menyempurnakan. | GET /fine_tuning/jobs/{fine_tuning_job_id}/events |
ImagesEdits::createImage() | Membuat gambar yang diedit atau diperpanjang diberi gambar asli dan prompt. | POST /images/edits |
ImagesGenerations::create() | Membuat gambar yang diberi prompt. | POST /images/generations |
ImagesVariations::createImage() | Menciptakan variasi gambar yang diberikan. | POST /images/variations |
Models::list() | Daftar model yang tersedia saat ini, dan memberikan informasi dasar tentang masing -masing seperti pemilik dan ketersediaan. | GET /models |
Models::retrieve() | Mengambil contoh model, memberikan informasi dasar tentang model seperti pemilik dan izin. | GET /models/{model} |
Models::delete() | Hapus model yang disesuaikan. Anda harus memiliki peran pemilik dalam organisasi Anda untuk menghapus model. | DELETE /models/{model} |
Moderations::create() | Mengklasifikasikan apakah teks melanggar kebijakan konten openai | POST /moderations |
Metode yang sudah usang terdaftar dengan strike-through format. Tolong jangan gunakan metode ini, karena akan dihapus dalam rilis di masa mendatang.
Ada dua cara untuk mengajukan permintaan kepada penangan API yang dinominasikan dan metode API:
Jika Anda membangun klien agar dapat diakses secara global, Anda dapat menggunakan kelas penangan API yang relevan secara langsung:
use Tectalic OpenAi Handlers AudioTranscriptions ;
( new AudioTranscriptions ())-> create ();Atau, Anda dapat mengakses semua penangan API dari kelas klien menggunakan kelas klien:
$ client -> audioTranscriptions ()-> create ();Setelah Anda membuat permintaan menggunakan salah satu dari dua metode yang diuraikan di atas, langkah selanjutnya adalah mengakses respons.
Anda dapat mengakses respons dengan berbagai cara. Pilih yang Anda sukai.
Respons model adalah kelas php objek transfer data (DTO), dengan properti publik untuk setiap properti API.
Mereka menawarkan cara terstruktur untuk mengambil respons dari permintaan API.
Semua model respons adalah contoh dari TectalicOpenAiModelsAbstractModel atau TectalicOpenAiModelsAbstractModelCollection .
Setelah melakukan permintaan, gunakan metode ->toModel() FLUENT untuk metode API:
use Tectalic OpenAi Handlers AudioTranscriptions ;
$ model = ( new AudioTranscriptions ())-> create ()-> toModel (); Panggilan setiap metode API toModel() akan mengembalikan jenis kelas model yang sesuai untuk metode API yang baru saja Anda panggil.
Setelah melakukan permintaan, gunakan metode fluent ->toArray() untuk metode API:
use Tectalic OpenAi Handlers AudioTranscriptions ;
$ array = ( new AudioTranscriptions ())-> create ()-> toArray ();Dalam array asosiatif yang dihasilkan, tombol array akan cocok dengan nama properti publik di kelas model yang relevan.
Jika Anda perlu mengakses respons mentah atau memeriksa header HTTP, gunakan metode lancar ->getResponse() ke metode API. Itu akan mengembalikan PsrHttpMessageResponseInterface :
use Tectalic OpenAi Handlers AudioTranscriptions ;
$ response = ( new AudioTranscriptions ())-> create ()-> getResponse (); Saat melakukan permintaan dengan klien API OpenAi Rest Tectalic , skenario spesifik akan menyebabkan TectalicOpenAiExceptionClientException akan dilemparkan. Silakan lihat di bawah untuk detailnya.
Manager yang tidak valid A LogicException akan dilemparkan jika fungsi Manager::build() dipanggil beberapa kali, atau jika Manager::access() dipanggil sebelum menelepon Manager::build() .
Klien API OpenAi REST Tectalic tergantung pada klien HTTP PSR-18 yang kompatibel, dan bahwa klien HTTP tidak boleh melempar pengecualian untuk kode respons HTTP yang gagal.
Kode respons yang tidak berhasil diklasifikasikan sebagai yang tidak ada dalam kisaran 200 - 299 (inklusif). Contoh kode respons yang gagal meliputi:
100 - 199 )300 - 399 )400 - 499 )500 - 599 )Jika kode respons yang tidak berhasil terjadi:
toModel() akan melempar ClientException .toArray() akan mengembalikan badan respons dan tidak melempar ClientException .getResponse() akan mengembalikan respons mentah dan tidak melempar ClientException . Di bawah ini adalah contoh bagaimana Anda mungkin ingin menggunakan blok try / catch saat melakukan permintaan sehingga Anda dapat mendeteksi dan menangani kesalahan yang tidak terduga.
use Tectalic OpenAi Authentication ;
use Tectalic OpenAi Client ;
use Tectalic OpenAi ClientException ;
use Tectalic OpenAi Manager ;
// Build a Tectalic OpenAI REST API Client globally.
$ auth = new Authentication ( ' token ' );
Manager :: build ( $ httpClient , $ auth );
$ handler = new AudioTranscriptions ();
// Perform a request
try {
$ model = $ handler -> create ()-> toModel ();
// Do something with the response model...
} catch ( ClientException $ e ) {
// Error response received. Retrieve the HTTP response code and response body.
$ responseBody = $ handler -> toArray ();
$ responseCode = $ handler -> getResponse ()-> getStatusCode ();
// Handle the error...
} Jika klien pilihan HTTP Anda melempar pengecualian selain ClientException , Client klien API OpenAi REST Tectalic dan kelas penangan API -nya akan membiarkan pengecualian ini meningkat.
Konsultasikan dokumentasi klien HTTP Anda untuk detail lebih lanjut tentang penanganan pengecualian.
Paket klien API OpenAi REST Tectalic mencakup beberapa jenis tes phpunit otomatis untuk memverifikasi operasi yang benar:
Untuk menjalankan tes ini, Anda harus menginstal paket klien API OpenAi Rest Tectalic dengan dependensi DEV-nya (yaitu tidak menggunakan bendera --no-dev saat menjalankan komposer).
Tes phpunit ini dirancang untuk:
Client dan Manager .Tes unit dapat dijalankan menggunakan perintah berikut, yang perlu dijalankan dari direktori root paket ini.
composer test:unitTes unit tidak melakukan permintaan nyata terhadap API OpenAI.
Tes unit terletak di direktori tests/Unit .
Tes integrasi terletak di direktori tests/Integration .
Tes phPunit ini dirancang untuk mengkonfirmasi bahwa setiap metode API menguraikan respons yang valid, sesuai dengan spesifikasi OpenAi API OpenAPI. Di luar kotak, tes integrasi dirancang untuk bekerja dengan server mock prisma.
Pastikan prisma dipasang. Silakan lihat dokumentasi Prism untuk detail tentang cara menginstal prisma.
Setelah prisma dipasang, Anda dapat menjalankan prisma dan tes integrasi berdampingan di jendela terminal terpisah, atau menggunakan perintah berikut, yang perlu dijalankan dari direktori root paket ini.
echo " > Starting Prism server "
prism mock tests/openapi.yaml > /dev/null 2>&1 &
PRISM_PID= $!
sleep 2
echo " => Started "
composer test:integration
kill $PRISM_PIDPerintah -perintah tersebut akan memulai server mock prisma, kemudian menjalankan tes integrasi, dan kemudian menghentikan server mock prisma ketika tes selesai.
Dalam hal ini tes integrasi tidak melakukan permintaan nyata terhadap API OpenAI.
Dengan mengatur variabel lingkungan OPENAI_CLIENT_TEST_BASE_URI , Anda dapat menetapkan target titik akhir API yang berbeda untuk tes integrasi.
Misalnya, alih -alih menggunakan prisma, Anda dapat menggunakan server mocking/pementasan/uji pilihan Anda yang berbeda, atau Anda dapat menggunakan titik akhir langsung OpenAI API.
Jangan lupa untuk mengatur kredensial yang sesuai di OPENAI_CLIENT_TEST_AUTH_USERNAME OPENAI_CLIENT_TEST_AUTH_PASSWORD variabel lingkungan.
Setelah pengaturan Anda selesai cukup jalankan perintah berikut.
composer test:integrationKami tidak merekomendasikan menjalankan tes integrasi terhadap titik akhir API OpenAi langsung. Ini karena tes akan mengirim contoh data ke semua titik akhir, yang dapat mengakibatkan data baru dibuat, atau data yang ada dihapus.
Jika Anda menulis tes sendiri, Anda mungkin perlu mengejek tanggapan dari API OpenAI .
Salah satu cara untuk melakukan ini adalah dengan menginstal paket php-http/mock-client ke dalam proyek Anda, dan kemudian menggunakan kelas HttpMockClient (bukan klien PSR-18 nyata) ketika instantiasi klien API Openai Tectalic .
Ini memungkinkan Anda untuk mengejek tanggapan dari API Openai , daripada melakukan permintaan nyata.
Silakan lihat dokumentasi klien tiruan untuk detailnya.
Jika Anda memiliki pertanyaan atau umpan balik, silakan gunakan papan diskusi.
Perangkat lunak ini adalah hak cipta (c) 2022-sekarang tektalic.
Untuk informasi hak cipta dan lisensi, silakan lihat file lisensi .