Rumah >pembangunan bahagian belakang >tutorial php >Memanfaatkan Pembantu OpenAI untuk Pengiktirafan Entiti Dinamakan dalam PHP/Symfony 7

Memanfaatkan Pembantu OpenAI untuk Pengiktirafan Entiti Dinamakan dalam PHP/Symfony 7

Patricia Arquette
Patricia Arquetteasal
2024-12-26 02:44:13758semak imbas

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.

Apa yang Boleh Anda Jangkakan?

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.

Apakah Topik yang Akan Kami Kupas?

  • 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.

Prasyarat untuk Projek PHP OpenAI

  1. Akaun OpenAI Anda memerlukan akaun di openai.com.
  2. Pilihan: Akaun Berat & Pisahkan Menyediakan akaun di wandb.ai adalah pilihan tetapi sangat disyorkan. Ia merupakan alat yang sangat baik untuk menjejak percubaan AI dan menggambarkan hasil.

Menentukan Masalah

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:

  1. Pemformatan Konsisten Memastikan alamat mengikut format standard untuk pemprosesan yang lancar.
  2. Pengesahan Alamat (Pilihan) Membolehkan kami mengesahkan sama ada alamat itu sah atau wujud.

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.

Aliran Kerja AI yang Lebih Pintar

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:

  • Data Latihan: Digunakan untuk mengajar model apa yang patut dilakukannya.
  • Data Pengujian: Digunakan untuk menilai prestasi model.

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.

Menstrukturkan Set Data

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.

Menyediakan Akaun OpenAI API Anda

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:

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

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.

Mereka bentuk Gesaan Sistem untuk Pengiktirafan Entiti Dinamakan

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:

  • Menstrukturkan gesaan sistem "kotor" awal untuk menghasilkan hasil yang jelas.
  • Memperhalusi gesaan kemudian untuk meningkatkan kecekapan dan meminimumkan kos.

Bermula dengan Teknik Sedikit Pukulan

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:

1. Objektif Jelas

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.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

2. Arahan pemformatan

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.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

3. Contoh

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.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

4. Maklumat pembetulan

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.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

Mengkonfigurasi dan Menguji Pembantu Anda

Sekarang kami telah mencipta gesaan awal untuk penyelesaian beberapa pukulan bukti konsep kami, tiba masanya untuk mengkonfigurasi dan menguji Assistant.

Langkah 1

  • Pergi ke papan pemuka OpenAI
  • Dari menu di sebelah kiri, pilih "Pembantu"
  • Anda akan diubah hala ke halaman penciptaan Assistant. Kembali ke papan pemuka OpenAI dan dari menu di sebelah kiri, pilih "Pembantu". Anda akan diubah hala ke Penolong pencipta.

Langkah 2: Konfigurasikan Pembantu Anda

  • Beri Nama Pembantu Anda: Pilih nama deskriptif untuk Pembantu anda yang menggambarkan tujuannya (mis., "Penghurai Alamat").
  • Tampalkan Arahan Sistem: Salin keseluruhan gesaan anda yang dibuat dan tampalkannya ke dalam kotak input Arahan Sistem. Ini mentakrifkan kelakuan Assistant anda dan membimbing outputnya.
  • Simpan Pembantu Anda: Setelah anda menampal gesaan, klik Simpan untuk menyimpan konfigurasi.

Langkah 3: Pilih Model Yang Tepat

Untuk projek ini, saya memilih GPT-4o-mini kerana:

  • Ia lebih murah daripada GPT-3.5 Turbo
  • Ia lebih tepat :)

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.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

Mentakrifkan Skema Output

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:

  • Ambil struktur output JSON daripada gesaan anda (daripada salah satu contoh)
  • Tampalkannya ke dalam medan "Jana".

Alat ini melakukan kerja yang hebat dalam menjana skema secara automatik yang sepadan dengan struktur anda.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

--
Untuk memastikan tindak balas yang konsisten dan boleh diramal, tetapkan suhu serendah mungkin.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

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.

Menguji Penolong

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:

  • Di mana model berhalusinasi (menjana maklumat yang tidak relevan atau tidak betul).
  • Potensi kelemahan dalam gesaan atau skema anda.

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.

Memalamkan Pembantu ke dalam Aplikasi Symfony PHP Anda

Kini tiba masanya untuk menyepadukan segala-galanya ke dalam aplikasi PHP Symfony anda. Persediaan adalah mudah dan mengikut seni bina tak segerak klasik.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

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:

  • Responsif: Bahagian hadapan kekal pantas dan responsif.
  • Skalabiliti: Tugasan boleh diagihkan merentasi berbilang pekerja.

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:

1. Permulaan mendapatkan semula Klien dan Pembantu OpenAI

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.

1. Mencipta dan Menjalankan Benang

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"
}
  • ID Pembantu: ID Pembantu menentukan contoh model yang akan memproses input.
  • Mesej: Setiap urutan termasuk urutan mesej. Dalam kes ini, mesej mempunyai Peranan yang menunjukkan sama ada mesej itu daripada pengguna (input) atau sistem (tindak balas). Dan yang kedua ialah Kandungan - mengandungi teks input sebenar (mis., alamat).

3. Mengendalikan Tindak Balas Benang

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.

Jadikan Assistant Blazing Tepat dengan Penalaan Halus dan Pangkalan Pengetahuan (Generasi Dipertingkatkan Semula)

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.

Apakah 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:

  • Memerlukan Gesaan Lebih Kecil: Mengurangkan keperluan untuk arahan yang panjang atau contoh terbenam.
  • Potongan Kos: Gesaan yang lebih pendek dan lebih sedikit contoh mengurangkan penggunaan token.
  • Meningkatkan Masa Inferens: Respons yang lebih pantas bermakna prestasi masa nyata yang lebih baik.

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.

Menyediakan Set Data Penalaan Halus

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:

  • Gesaan Sistem: Arahan awal untuk Pembantu.
  • Input Pengguna: Data input mentah (mis., alamat yang tidak kemas).
  • Output Jangkaan: Respons berstruktur yang diingini.

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:

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

Setiap entri direka bentuk untuk mensimulasikan interaksi sebenar antara pengguna dan Assistant, merangkumi:

  • Tujuan dan skop Pembantu.
  • Senario input pengguna.
  • Keluaran berstruktur yang dijangkakan.

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

  • Menyediakan senario atau pertanyaan terperinci di mana pengguna memberikan input alamat tertentu. Bahagian kemasukan data ini adalah penting kerana ia secara langsung mempengaruhi cara model akan belajar untuk bertindak balas kepada input yang serupa dalam tetapan operasi.

3. Mesej Peranan Penolong

  • Mengandungi respons yang diharapkan daripada pembantu, diformatkan dalam JSON. Respons ini penting kerana ia melatih model tentang format dan ketepatan output yang diingini.

Mencipta Fail Pengesahan untuk Penalaan Halus

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.

Struktur Fail Pengesahan

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

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?

  • Ujian Ketepatan: Mengukur prestasi model yang diperhalusi pada data yang tidak kelihatan.
  • Generalisasi: Mengesahkan keupayaan model untuk mengendalikan input baharu, kompleks atau mudah ralat.
  • Gelung Maklum Balas: Membantu mengenal pasti kawasan yang memerlukan penalaan halus atau data tambahan.

Perhalus Pembantu Anda Secara Manual

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

  • Pergi ke Papan Pemuka dan klik pada "Penalaan Halus" dalam menu di sebelah kiri.
  • Klik butang "Buat" hijau untuk membuka menu penalaan halus.

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

Langkah 2: Konfigurasikan Penalaan Halus

Dalam menu penalaan halus, kemas kini tetapan berikut:

  • Model asas: Pada masa penulisan, model asas yang paling kos efektif dan berprestasi tinggi ialah gpt-4o-mini-2024-07-18. Pilih model asas yang paling sesuai dengan prestasi dan keperluan belanjawan anda.
  • Data Latihan dan Pengesahan - Muat naik data latihan dan fail data pengesahan yang anda buat sebelum ini.
  • Bilangan zaman - Tetapkan bilangan zaman (lelaran proses latihan ke atas keseluruhan set data). Saya syorkan bermula dengan 3 zaman, tetapi anda boleh mencuba dengan lebih banyak zaman jika bajet anda mengizinkan.

Langkah 3: Pantau Proses Penalaan Halus

Setelah proses penalaan halus bermula, anda boleh menjejaki kemajuannya dalam Papan Pemuka Penalaan Halus:

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

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.

  • Mengurangkan Kerugian: Kedua-dua latihan dan kerugian pengesahan sepatutnya berkurangan dari semasa ke semasa, akhirnya menjadi stabil. Terlebih pemasangan: Berlaku apabila kehilangan latihan terus berkurangan manakala kehilangan pengesahan mula meningkat atau turun naik. Ini menunjukkan model terlalu mengkhususkan kepada data latihan dan berprestasi buruk pada data yang tidak kelihatan.

Underfitting: Berlaku apabila kedua-dua kerugian kekal tinggi, menunjukkan model tidak belajar dengan berkesan.

Palamkan Model & Evaluasi

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:

Harnessing OpenAI Assistant  for Named Entity Recognition in PHP/Symfony 7

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn