Menyepadukan model bahasa besar ke dalam bahagian belakang produk dunia sebenar ialah medan pertempuran terkini untuk inovasi. Tetapi seperti semua trend teknologi, pemenang sebenar bukanlah mereka yang tergesa-gesa untuk mengetahui semuanya. Sebaliknya, ini tentang menjeda, merenung dan membuat keputusan yang bijak.
Walaupun AI lebih mudah diakses berbanding sebelum ini, menganggap ia tugas remeh adalah satu kesilapan besar. Bidang ini masih di peringkat awal, dan hampir semua orang dalam teknologi dan perniagaan cuba memikirkan cara untuk memahaminya. Internet dipenuhi dengan maklumat yang boleh dipercayai dan gembar-gembur yang mengelirukan.
Percaya atau tidak, anda tidak perlu mengikuti setiap gosip AI yang anda dengar. Ambil langkah ke belakang dan dekatinya dengan bertimbang rasa.
Jika anda seorang pembangun PHP atau bekerja dengan pangkalan kod PHP, AI mungkin berasa seperti konsep asing. Kelas, antara muka, baris gilir mesej dan rangka kerja kelihatan berbeza daripada NLP, penalaan halus, penurunan kecerunan stokastik, LoRA, RAG dan semua jargon itu. saya faham. Untuk mempelajari konsep ini secara sistematik, seperti apa-apa sahaja dalam kejuruteraan perisian, kami memerlukan masa dan amalan yang baik.
Tetapi bukankah AI, pembelajaran mesin dan sains data adalah domain pengaturcara Python atau R? Anda sebahagiannya betul. Kebanyakan pembelajaran mesin asas dilakukan dalam Python. Dan secara jujur, Python adalah kegembiraan untuk belajar-ia serba boleh dan boleh digunakan pada banyak projek menarik. Daripada membina dan melatih model bahasa hinggalah menggunakan API, Python telah membantu anda.
Tetapi mari kita kembali kepada PHP.
Jangan risau—anda tidak akan menjadi lapuk sebagai jurutera perisian biasa. Agak sebaliknya. Memandangkan kami semakin dijangka memahami bidang berkaitan seperti kontena, CI/CD, kejuruteraan sistem dan infrastruktur awan, AI dengan cepat menjadi satu lagi kemahiran penting dalam kit alat kami. Tiada masa yang lebih baik daripada sekarang untuk mula belajar.
Yang berkata, saya tidak mengesyorkan menyelam terlebih dahulu ke dalam membina rangkaian saraf dari awal (melainkan anda benar-benar mahu). Ia mudah terharu. Sebaliknya, izinkan saya menunjukkan kepada anda titik permulaan praktikal untuk percubaan AI anda.
Inilah perkara yang akan kami bincangkan dalam panduan ini:
Aliran Kerja AI Tak Segerak
Saya akan menunjukkan kepada anda cara melaksanakan aliran kerja AI menggunakan baris gilir mesej—sama ada RabbitMQ, Amazon SQS atau broker pilihan anda.
Penyelesaian Sedia Pengeluaran
Anda akan melihat contoh sebenar penyelesaian yang digunakan dalam sistem pengeluaran yang menyelesaikan keperluan asas perniagaan dengan AI
Integrasi Symfony
Penyelesaian ini dilaksanakan sepenuhnya dalam rangka kerja PHP Symfony.
Alat OpenAI
Kami akan menggunakan perpustakaan PHP OpenAI dan OpenAI Assistants 2.0 yang terkini.
Struktur Set Data
Cara membina set data untuk melatih dan menilai model AI anda.
Model OpenAI Penalaan Halus
Belajar untuk menyediakan fail .jsonl yang betul dan memperhalusi model GPT-4o-mini atau model lain daripada keluarga GPT untuk kes penggunaan perniagaan khusus anda.
Mencipta dan Menguji Pembantu OpenAI 2.0
Fahami cara menyediakan Pembantu OpenAI dan mengujinya di Taman Permainan OpenAI.
Pangkalan Pengetahuan
Selami konsep asas pengetahuan: sebab GPT tidak mengetahui segala-galanya dan cara membekalkannya dengan konteks yang betul untuk meningkatkan ketepatan dengan ketara.
Pengintegrasian PHP&Symfony
Ketahui cara menyambungkan ejen AI anda dengan lancar dengan aplikasi Symfony anda.
Berminat? Jom giler.
Mari kita mendalami masalah yang sedang kita selesaikan.
Pada terasnya, kami berurusan dengan blok teks yang mewakili sesuatu—alamat, dalam kes kami. Matlamatnya adalah untuk mengelaskan komponennya ke dalam kumpulan yang telah ditetapkan.
Jadi, apabila pengguna menghantar alamat kepada kami, kami menyasarkan untuk mengembalikan struktur JSON yang membahagikan alamat kepada bahagiannya. Contohnya:
{ "street": "Strada Grui", "block": "Bloc 7", "staircase": "Scara A", "apartment": "Apartament 6", "city": "Zărnești" }
Mengapa Ini Penting?
Nah, alamat ini ditaip oleh orang—pelanggan kami—dan ia selalunya tidak konsisten. Inilah sebabnya kami memerlukan data berstruktur dan dihuraikan:
Untuk mencapai matlamat ini, kami membahagikan alamat kepada kumpulan yang dipratentukan seperti "jalan", "rumah", "poskod", dsb., dan kemudian memasangnya semula ke dalam urutan yang dikehendaki.
Mengapa Tidak Gunakan Ungkapan Biasa?
Pada pandangan pertama, ia kedengaran mudah. Jika kami menguatkuasakan pemformatan untuk pelanggan baharu atau tahu mereka biasanya menulis alamat dengan cara tertentu, ungkapan biasa mungkin kelihatan seperti penyelesaian yang munasabah.
Walau bagaimanapun, mari kita pertimbangkan contoh alamat Romania:
STRADA GRUI, BLOC 7, SCARA A, APARTAMENT 6, ZĂRNEŞTI BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124
Alamat Romania selalunya rumit, ditulis tanpa tertib tertentu dan kerap menghilangkan elemen seperti poskod. Malah ungkapan biasa yang paling canggih bergelut untuk mengendalikan kebolehubahan sedemikian dengan pasti.
Di sinilah model AI seperti GPT-3.5 Turbo atau GPT-4o-mini bersinar—mereka boleh mengurus ketidakkonsistenan dan kerumitan jauh melebihi apa yang boleh dikendalikan oleh peraturan statik seperti regex.
Ya, kami sedang membangunkan aliran kerja AI yang bertambah baik dengan ketara pada pendekatan tradisional.
Setiap projek pembelajaran mesin bermuara kepada dua perkara penting: data dan model. Walaupun model penting, data jauh lebih kritikal.
Model didatangkan pra-pembungkusan, diuji dan boleh ditukar untuk melihat model yang berprestasi lebih baik. Tetapi pengubah permainan sebenar ialah kualiti data yang kami sediakan kepada model.
Peranan Data dalam Pembelajaran Mesin
Biasanya, kami membahagikan set data kami kepada dua atau tiga bahagian:
Untuk projek ini, kami ingin membahagikan alamat kepada komponennya—menjadikan ini tugas pengelasan. Untuk mendapatkan hasil yang baik dengan model bahasa besar (LLM) seperti GPT, kami memerlukan sekurang-kurangnya 100 contoh dalam set data latihan kami.
Format mentah set data kami tidak begitu penting, tetapi saya telah memilih struktur yang intuitif dan mudah digunakan:
{ "street": "Strada Grui", "block": "Bloc 7", "staircase": "Scara A", "apartment": "Apartament 6", "city": "Zărnești" }
Ini contohnya:
STRADA GRUI, BLOC 7, SCARA A, APARTAMENT 6, ZĂRNEŞTI BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124
Seperti yang anda lihat, matlamatnya adalah untuk menghasilkan respons JSON berstruktur berdasarkan alamat input.
Pertama, anda memerlukan akaun OpenAI API. Ini adalah proses yang mudah, dan saya syorkan menambah beberapa dana permulaan—$10 atau $20 adalah banyak untuk bermula. OpenAI menggunakan model langganan prabayar yang mudah, jadi anda akan mempunyai kawalan penuh ke atas perbelanjaan anda.
Anda boleh mengurus pengebilan akaun anda di sini:
Meneroka Taman Permainan OpenAI
Setelah akaun anda disediakan, pergi ke Taman Permainan OpenAI.
Luangkan sedikit masa untuk membiasakan diri dengan antara muka. Apabila anda sudah bersedia, cari bahagian "Pembantu" dalam menu di sebelah kiri.
Di sinilah kami akan membuat tika GPT tersuai kami.
Menyesuaikan Pembantu GPT Anda
Kami akan menyesuaikan pembantu GPT kami untuk memenuhi keperluan khusus kami dalam dua peringkat:
Arahan Sistem Terperinci dengan Contoh
Langkah ini membantu kami menguji dan mengesahkan dengan cepat sama ada penyelesaian itu berfungsi. Ini cara terpantas untuk melihat hasil.
Penalaan Halus dengan Pangkalan Pengetahuan (RAG ringkas)
Setelah kami berpuas hati dengan hasil awal, kami akan memperhalusi model. Proses ini mengurangkan keperluan untuk memberikan contoh yang meluas dalam setiap gesaan, yang seterusnya mengurangkan masa inferens (berapa lama masa yang diambil untuk model bertindak balas melalui API).
Kedua-dua langkah digabungkan memberikan kami hasil yang paling tepat dan cekap.
Jadi, mari kita mulakan.
Untuk sistem Pengecaman Entiti Dinamakan kami, kami memerlukan model untuk mengeluarkan respons JSON berstruktur secara konsisten. Mencipta gesaan sistem yang bijak adalah penting untuk mencapai matlamat ini.
Inilah perkara yang akan kami fokuskan:
Teknik "sedikit pukulan" ialah pendekatan yang berkesan untuk tugasan ini. Ia berfungsi dengan menyediakan model dengan beberapa contoh hubungan input-output yang dikehendaki. Daripada contoh ini, model boleh membuat generalisasi dan mengendalikan input yang tidak pernah dilihat sebelum ini.
Elemen Utama Gesaan Beberapa Pukulan:
Gesaan terdiri daripada beberapa bahagian, yang harus disusun dengan teliti untuk hasil terbaik. Walaupun susunan yang tepat boleh berbeza-beza, bahagian berikut adalah penting untuk disertakan:
Bahagian pertama gesaan memberikan gambaran keseluruhan umum tentang perkara yang kami jangka model dapat dicapai.
Sebagai contoh, dalam kes penggunaan ini, input ialah alamat Romania, yang mungkin termasuk kesilapan ejaan dan pemformatan yang salah. Konteks ini penting kerana ia menetapkan peringkat untuk model, menerangkan jenis data yang akan diproses.
Selepas mentakrifkan tugas, kami membimbing AI tentang cara memformat outputnya.
Di sini, struktur JSON diterangkan secara terperinci, termasuk cara model harus memperoleh setiap pasangan nilai kunci daripada input. Contoh disertakan untuk menjelaskan jangkaan. Selain itu, sebarang aksara khas dilarikan dengan betul untuk memastikan JSON yang sah.
Contoh adalah tulang belakang teknik "few-shot". Lebih banyak contoh yang berkaitan yang kami berikan, lebih baik prestasi model.
Terima kasih kepada tetingkap konteks GPT yang meluas (sehingga 16K token), kami boleh memasukkan sejumlah besar contoh.
Untuk membina set contoh:
Mulakan dengan gesaan asas dan nilaikan output model secara manual.
Jika output mengandungi ralat, betulkan dan tambah versi tetap pada set contoh.
Proses berulang ini meningkatkan prestasi pembantu dari semasa ke semasa.
Ia tidak dapat dielakkan—pembantu anda akan melakukan kesilapan. Kadangkala, ia mungkin berulang kali melakukan ralat yang sama.
Untuk menangani perkara ini, sertakan maklumat pembetulan yang jelas dan sopan dalam gesaan anda. Jelaskan dengan jelas:
Apakah kesilapan yang dilakukan oleh pembantu.
Perkara yang anda harapkan daripada output sebaliknya.
Maklum balas ini membantu model melaraskan gelagatnya dan menjana hasil yang lebih baik.
Sekarang kami telah mencipta gesaan awal untuk penyelesaian beberapa pukulan bukti konsep kami, tiba masanya untuk mengkonfigurasi dan menguji Assistant.
Langkah 1
Langkah 2: Konfigurasikan Pembantu Anda
Langkah 3: Pilih Model Yang Tepat
Untuk projek ini, saya memilih GPT-4o-mini kerana:
Maksudnya, anda harus sentiasa memilih model anda berdasarkan keseimbangan antara ketepatan dan kos. Jalankan atau cari penanda aras untuk menentukan perkara yang paling sesuai untuk tugas khusus anda.
Dengan konfigurasi awal disediakan, kami kini boleh menentukan skema output secara langsung dalam Penolong pencipta.
Langkah 1: Menggunakan Pilihan "Jana"
Daripada mencipta skema secara manual, saya menggunakan pilihan "Jana" yang disediakan oleh Penolong pencipta. Begini caranya:
Alat ini melakukan kerja yang hebat dalam menjana skema secara automatik yang sepadan dengan struktur anda.
--
Untuk memastikan tindak balas yang konsisten dan boleh diramal, tetapkan suhu serendah mungkin.
Apakah itu Suhu?
Suhu mengawal kerawanan tindak balas model. Nilai suhu yang rendah bermakna model menghasilkan lebih banyak output yang boleh diramal dan menentukan.
Untuk kes penggunaan kami, inilah yang kami mahukan. Apabila diberikan alamat yang sama seperti input, model harus sentiasa mengembalikan respons yang sama dan betul. Ketekalan adalah kunci untuk hasil yang boleh dipercayai.
Dengan semua parameter tersedia, pergi ke Taman Permainan untuk menguji penyelesaian anda.
Taman Permainan menyediakan konsol tempat anda boleh meletakkan Assistant anda berfungsi. Di sinilah keseronokan bermula—anda boleh menguji penyelesaian tulang kosong anda dengan teliti untuk mendedahkan:
Penemuan ini akan membantu anda memperhalusi bahagian Maklumat Pembetulan gesaan anda, menjadikan Assistant anda lebih mantap.
Di bawah ialah contoh hasil daripada salah satu ujian manual saya:
{ "street": "Strada Grui", "block": "Bloc 7", "staircase": "Scara A", "apartment": "Apartament 6", "city": "Zărnești" }
Mengapa Pengujian Manual Penting ?
Ujian sekolah lama, praktikal ialah asas membina penyelesaian yang boleh dipercayai. Dengan menilai output model secara manual, anda akan melihat isu dengan cepat dan memahami cara membetulkannya. Walaupun automasi akan datang kemudian, ujian manual merupakan langkah yang tidak ternilai dalam mencipta bukti-konsep yang kukuh.
Kini tiba masanya untuk menyepadukan segala-galanya ke dalam aplikasi PHP Symfony anda. Persediaan adalah mudah dan mengikut seni bina tak segerak klasik.
Berikut ialah pecahan aliran:
1. Interaksi Depan
Secara umum, apa yang kami ada di sini ialah persediaan tak segerak klasik dengan baris gilir mesej. Kami mempunyai 2 contoh aplikasi Symfony yang dijalankan di dalam bekas Docker. Yang pertama adalah berinteraksi dengan pelanggan bahagian hadapan.
Contohnya, apabila pelanggan menaip:
STRADA GRUI, BLOC 7, SCARA A, APARTAMENT 6, ZĂRNEŞTI BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124
Aplikasi memproses alamat input dan membungkusnya menjadi objek Mesej.
Objek Mesej kemudiannya dibalut dengan contoh Sampul Pengutus Symfony. Mesej disiri ke dalam format JSON, dengan metadata tambahan untuk diproses.
Symfony Messenger sesuai untuk mengendalikan tugas tak segerak. Ia membolehkan kami memunggah operasi yang memakan masa, seperti memanggil OpenAI API, ke proses latar belakang.
Pendekatan ini memastikan:
Di bawah ialah kelas mesej yang digunakan untuk sistem kami:
{ "street": "Strada Grui", "block": "Bloc 7", "staircase": "Scara A", "apartment": "Apartament 6", "city": "Zărnești" }
Aplikasi bersambung ke contoh RabbitMQ menggunakan sambungan PHP amqp. Untuk menyediakan ini, anda perlu menentukan pengangkutan dan pengikatan mesej dalam fail konfigurasi messenger.yaml anda.
Rujuk dokumentasi rasmi Symfony Messenger untuk panduan terperinci:
Konfigurasi Pengangkutan Pengutus Symfony
Dokumentasi: https://symfony.com/doc/current/messenger.html#transport-configuration
Setelah mesej ditolak kepada broker (cth. RabbitMQ, AmazonMQ atau AWS SQS), mesej itu diambil oleh tika kedua aplikasi. Kejadian ini menjalankan daemon messenger untuk menggunakan mesej, seperti yang ditandakan 3 dalam skema seni bina.
Proses penggunaan dikendalikan dengan menjalankan:
bin/konsol messenger:consume
berfungsi mengikut proses.
Daemon mengambil mesej daripada baris gilir yang dikonfigurasikan, menyahsirikannya semula ke dalam kelas Mesej yang sepadan dan memajukannya kepada Pengendali Mesej untuk diproses.
Berikut ialah Pengendali Mesej tempat interaksi dengan Pembantu OpenAI berlaku:
STRADA GRUI, BLOC 7, SCARA A, APARTAMENT 6, ZĂRNEŞTI BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124
Perkara Utama Pengendali
Membalak
Log permulaan pemprosesan untuk kebolehkesanan dan penyahpepijatan.
Perkhidmatan Normalisasi
OpenAIAddressNormalizationService dipanggil untuk memproses alamat input melalui Assistant.
Kegigihan
Alamat yang dinormalkan disimpan dalam pangkalan data menggunakan Doctrine's EntityManager.
Pengendali mesej mungkin kelihatan seperti kod Symfony standard, tetapi intinya terletak dalam baris ini:
INPUT: <what goes into the LLM> OUTPUT: <what the LLM should produce>
Perkhidmatan ini bertanggungjawab untuk berinteraksi dengan OpenAI melalui perpustakaan PHP yang ditetapkan.
Pelanggan PHP OpenAI
Mari kita mendalami pelaksanaan perkhidmatan dengan penggunaan klien PHP.
Berikut ialah pelaksanaan penuh OpenAIAddressNormalizationService:
input: STRADA EREMIA GRIGORESCU, NR.11 BL.45B,SC.B NR 11/38, 107065 PLOIESTI output: {{"street": "Eremia Grigorescu", "house_number": "11", "flat_number": "38", "block": "45B", "staircase": "45B", floor: "", "apartment": "", "landmark": "", "postcode": "107065", "county": "Prahova", 'commune': '', 'village': '', "city" "Ploiesti"}}
Aliran kerja untuk mendapatkan inferens (atau penyiapan)—pada asasnya respons daripada GPT—menggunakan perpustakaan openai-php/klien mengikut tiga peringkat utama:
Langkah pertama ialah menyediakan klien OpenAI dan mendapatkan semula Assistant yang dikonfigurasikan:
INPUT: BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124 OUTPUT: { "street": "Bdul 21 Decembrie 1989", "house": "93", "flat": "50", "block": "", "staircase": "", "floor": "", "apartment": "", "landmark": "", "intercom": "", "postcode": "400124", "county": "Cluj", "commune": "", "village": "", "city": "Cluj" }
Permulaan Pelanggan: Kaedah OpenAI::client() mencipta klien baharu menggunakan kunci API dan ID organisasi anda.
Assistant Retrieval: Kaedah retrieve() bersambung kepada tika Assistant tertentu yang dikonfigurasikan untuk tugas anda, yang dikenal pasti melalui ID uniknya.
Setelah klien dan Assistant dimulakan, anda boleh membuat dan menjalankan urutan untuk memulakan interaksi. Benang bertindak sebagai saluran komunikasi, mengendalikan pertukaran mesej antara pengguna dan Assistant.
Begini cara urutan dimulakan:
{ "street": "Strada Grui", "block": "Bloc 7", "staircase": "Scara A", "apartment": "Apartament 6", "city": "Zărnești" }
Selepas memulakan urutan, aplikasi mengendalikan respons. Memandangkan proses OpenAI mungkin tidak selesai serta-merta, anda perlu meninjau status urutan sehingga ia ditandakan sebagai 'selesai':
STRADA GRUI, BLOC 7, SCARA A, APARTAMENT 6, ZĂRNEŞTI BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124
Tinjauan: Aplikasi menyemak status urutan (beratur atau sedang berjalan). Setelah status bertukar kepada 'selesai', benang mengandungi output akhir.
Setelah urutan selesai, aplikasi mendapatkan semula mesej respons untuk mengekstrak alamat yang dinormalkan:
INPUT: <what goes into the LLM> OUTPUT: <what the LLM should produce>
Alamat yang dinormalkan kini boleh dikembalikan kepada klien bahagian hadapan untuk kegunaan segera atau disimpan dalam pangkalan data sebagai entiti berstruktur, seperti CustomerAddressNormalized, untuk pemprosesan masa hadapan.
Apabila anda menjalankan persediaan ini, anda seharusnya dapat mengekstrak dan menyimpan output berstruktur daripada OpenAI untuk Pengecaman Entiti Dinamakan dan tugas klasifikasi atau penjanaan lain.
Dalam sesetengah kes, penyelesaian AI asas tidak mencukupi. Apabila pematuhan kawal selia dan keperluan perniagaan menuntut ketepatan yang tinggi, kami perlu berusaha keras untuk memastikan output adalah fakta dan boleh dipercayai.
Sebagai contoh, apabila menjana struktur JSON, kami perlu menjamin bahawa kandungannya sejajar dengan realiti. Risiko biasa ialah model berhalusinasi maklumat—seperti mencipta tempat berdasarkan poskod yang disediakan. Ini boleh menyebabkan isu yang serius, terutamanya dalam persekitaran yang berisiko tinggi.
Kebenaran Dasar dengan Pangkalan Pengetahuan
Untuk menghapuskan halusinasi dan memastikan ketepatan fakta, kami perlu membekalkan Pembantu dengan pangkalan pengetahuan kebenaran asas. Ini bertindak sebagai rujukan muktamad untuk model, memastikan ia menggunakan maklumat yang tepat semasa inferens.
Pendekatan Saya: Pangkalan Pengetahuan Kod Pos
Saya mencipta fail JSON yang mudah (tetapi agak besar—sekitar 12 MB) yang mengandungi persempadanan penuh semua poskod di Romania. Struktur seperti kamus ini menyediakan:
Kod Pos: Nilai input.
Maklumat Disahkan: Fakta seperti bandar, daerah dan nama tempat keseluruhan yang sepadan.
Pangkalan pengetahuan ini berfungsi sebagai titik rujukan untuk Pembantu apabila melakukan Pengiktirafan Entiti Dinamakan.
Struktur Pangkalan Pengetahuan
Berikut ialah contoh coretan struktur JSON pangkalan pengetahuan:
{ "street": "Strada Grui", "block": "Bloc 7", "staircase": "Scara A", "apartment": "Apartament 6", "city": "Zărnești" }
Dengan pangkalan pengetahuan sedia, sudah tiba masanya untuk mengarahkan Pembantu menggunakannya dengan berkesan. Walaupun anda boleh membenamkan ini terus ke dalam gesaan, pendekatan ini meningkatkan penggunaan dan kos token. Ini menjadikannya detik terbaik untuk memperkenalkan penalaan halus.
Penalaan halus melibatkan pengubahsuaian lapisan paling luar (khususnya matriks berat) model pra-latihan, menyesuaikannya untuk tugas tertentu. Dalam kes kami, Pengiktirafan Entiti Dinamakan (NER) ialah calon yang sempurna.
Model yang ditala halus:
Matlamat utama adalah untuk menyelaraskan model dengan lebih dekat dengan nuansa data dunia sebenar yang akan diprosesnya. Latihan mengenai data khusus domain menjadikan model lebih baik dalam memahami dan menjana respons yang sesuai. Ia juga mengurangkan keperluan untuk pemprosesan pasca atau pembetulan ralat oleh aplikasi.
Untuk memperhalusi model, kami memerlukan set data yang diformat dengan betul dalam format .jsonl (JSON Lines), seperti yang diperlukan oleh OpenAI. Setiap entri dalam set data termasuk:
Set data ini memberikan Assistant contoh khusus domain, membolehkannya mengetahui cara membalas gesaan serupa pada masa hadapan.
Berikut ialah contoh cara menyusun entri penalaan halus:
STRADA GRUI, BLOC 7, SCARA A, APARTAMENT 6, ZĂRNEŞTI BD. 21 DECEMBRIE 1989 nr. 93 ap. 50, CLUJ, 400124
Mari kita pecahkan struktur entri penalaan halus dalam fail .jsonl, menggunakan kes pemprosesan alamat Romania kami sebagai contoh:
Setiap entri direka bentuk untuk mensimulasikan interaksi sebenar antara pengguna dan Assistant, merangkumi:
Pendekatan ini membantu model mempelajari tingkah laku yang diingini dalam konteks dunia sebenar.
1. Mesej Peranan Sistem
Menerangkan keupayaan pembantu dan skop kefungsiannya, menetapkan jangkaan untuk jenis entiti yang patut dikenali dan diekstraknya, seperti nama jalan, nombor rumah dan kod pos.
Contoh: Sistem menerangkan bahawa pembantu direka bentuk untuk berfungsi sebagai model Pengecaman Entiti Dinamakan untuk alamat Romania, memperincikan komponen yang harus diekstrak dan dikelaskan.
2. Mesej Peranan Pengguna
3. Mesej Peranan Penolong
Setelah anda mencipta fail latihan, langkah seterusnya ialah menyediakan fail pengesahan. Fail ini menilai ketepatan Assistant yang diperhalusi pada data sebenar. Strukturnya serupa dengan fail latihan, yang menjadikan mengautomasikan penciptaan kedua-dua fail lebih mudah.
Fail pengesahan direka untuk menguji keupayaan generalisasi model. Ia memastikan Pembantu yang diperhalusi boleh mengendalikan input baharu dan berprestasi secara konsisten, walaupun apabila berhadapan dengan contoh yang tidak biasa atau mencabar.
Mesej Sistem:
Untuk mengekalkan konsistensi dengan proses latihan, mesej sistem hendaklah sama dengan yang digunakan dalam fail latihan.
Mesej Pengguna:
Memperkenalkan input baharu (mis., alamat) yang tidak disertakan dalam fail latihan. Contoh baharu hendaklah realistik dan khusus domain, serta mencabar model dengan memasukkan ralat atau kerumitan kecil.
Mesej Pembantu:
Menyediakan respons berstruktur yang dijangkakan untuk input pengguna baharu.
Ini berfungsi sebagai standard emas untuk mengesahkan ketepatan model.
Untuk menyelaraskan penciptaan kedua-dua fail latihan dan pengesahan, skrip automasi boleh digunakan. Skrip ini menjana fail .jsonl yang diformat dengan betul berdasarkan set data input.
Lawati repositori yang mengandungi skrip untuk menjana fail latihan dan pengesahan:
Skrip penjanaan .jsonl automatik
Ia adalah versi Python bagi automasi penalaan halus. Versi PHP akan datang tidak lama lagi.
Mengapa Pengesahan Penting?
Jika anda mahu, anda boleh memperhalusi Assistant secara manual menggunakan antara muka pengguna grafik (GUI) OpenAI. Setelah anda menyediakan kedua-dua fail latihan dan pengesahan, ikut langkah ini untuk bermula:
Langkah 1: Akses Wizard Penalaan Halus
Langkah 2: Konfigurasikan Penalaan Halus
Dalam menu penalaan halus, kemas kini tetapan berikut:
Langkah 3: Pantau Proses Penalaan Halus
Setelah proses penalaan halus bermula, anda boleh menjejaki kemajuannya dalam Papan Pemuka Penalaan Halus:
Papan pemuka menyediakan kemas kini masa nyata dan memaparkan beberapa metrik untuk membantu anda memantau dan menilai proses latihan.
Metrik Utama untuk Difahami
Kehilangan latihan Mengukur sejauh mana model menyesuaikan data latihan. Kehilangan latihan yang lebih rendah menunjukkan model sedang mempelajari corak dalam set data dengan berkesan.
Kehilangan Pengesahan Penuh Menunjukkan prestasi pada data yang tidak kelihatan daripada set data pengesahan. Kehilangan pengesahan yang lebih rendah menunjukkan model akan digeneralisasikan dengan baik kepada input baharu.
Langkah dan Masa Langkah latihan ialah bilangan lelaran di mana berat model dikemas kini berdasarkan kumpulan data.
Cap masa menunjukkan masa setiap langkah diproses, yang membantu memantau tempoh latihan dan selang antara penilaian.
Mentafsir Metrik
Pemantauan di bawah metrik membantu anda menentukan sama ada proses penalaan halus bertumpu dengan betul atau memerlukan pelarasan.
Underfitting: Berlaku apabila kedua-dua kerugian kekal tinggi, menunjukkan model tidak belajar dengan berkesan.
Dengan Pembantu anda terlatih dan diperhalusi, tiba masanya untuk menyepadukannya ke dalam aplikasi anda dan mula menilai prestasinya.
Mulakan Mudah.
Mulakan dengan ujian manual, sama ada di Taman Permainan Pembantu atau terus dalam aplikasi anda. Elakkan terlalu merumitkan penilaian anda pada peringkat ini; fokus untuk memastikan asas berfungsi seperti yang diharapkan.
Sebagai contoh, anda boleh menggunakan alat mudah seperti Helaian Google untuk membandingkan input dan output secara manual, seperti yang ditunjukkan di sini:
Ini adalah langkah pertama.
Penyelesaian AI dan ML memerlukan penilaian berterusan untuk memastikan prestasi kekal konsisten. Untuk tugasan seperti Pengecaman Entiti Dinamakan, alatan automatik seperti sambungan PromptFlow untuk Kod Visual Studio boleh membantu memperkemas ujian dan pengesahan.
Rujukan
Dokumentasi Penalaan Halus OpenAI
Dokumentasi Pengutus Symfony
Perpustakaan Pelanggan OpenAI PHP
Sambungan PromptFlow untuk Kod VS
Terima Kasih!
Terima kasih kerana meluangkan masa untuk meneroka panduan ini! Saya harap ia memberikan anda asas yang kukuh untuk membina dan memperhalusi penyelesaian dikuasakan AI anda. Jika anda mempunyai sebarang soalan atau cadangan, sila hubungi atau tinggalkan ulasan.
Selamat pengekodan dan semoga berjaya dengan projek AI anda! ?
Atas ialah kandungan terperinci Memanfaatkan Pembantu OpenAI untuk Pengiktirafan Entiti Dinamakan dalam PHP/Symfony 7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!