Enum dengan 'other' untuk Kebolehkembangan
Tambah nilai 'other' bersama medan perincian
Enum dengan 'other' untuk Kebolehkembangan ialah pelajaran Claude Architect percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Claude Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Claude Architect merangkumi sejumlah 4 pelajaran.
Masalah dengan Enum Tertutup
Enum ialah tunjang output berstruktur yang kemas. Apabila anda mengehadkan sesuatu medan kepada set nilai tetap — seperti category yang mestilah salah satu daripada billing, technical atau account — model tidak boleh tersasar kepada rentetan bebas, dan kod hiliran boleh membuat percabangan dengan yakin.
Namun, enum tertutup mempunyai mod kegagalan tersembunyi: dunia sebenar menghasilkan input yang tidak pernah dijangka oleh senarai anda. Apabila sesuatu tiket tidak sepadan dengan mana-mana nilai yang dibenarkan, model terpaksa memilih pilihan yang paling kurang salah. Ini ialah salah pengelasan senyap yang merosakkan segala yang dibina berasaskannya.
Corak Kebolehkembangan: 'other' + butiran
Penyelesaian bertaraf arkitek ialah corak kebolehkembangan: tambahkan nilai "other" kepada enum, bersama-sama medan butiran teks bebas yang diisi oleh model apabila memilih other.
Ini memberikan dua manfaat serentak:
- Model mempunyai jalan keluar yang jujur dan bukannya padanan yang dipaksa serta buruk.
- Anda merekodkan apakah kes luar jangka itu sebenarnya — isyarat mentah yang boleh anda analisis untuk mengembangkan enum kemudian.
Ini menukar jurang dalam taksonomi anda menjadi titik data yang direkodkan dan boleh diperiksa, bukannya rekod yang rosak.
Skema dengan 'other'
Berikut ialah alat pengelasan untuk ejen sokongan. Perhatikan bahawa enum tersebut merangkumi "other", dan terdapat rentetan category_detail yang sepadan untuk kes terbuka.
Oleh sebab output berstruktur melalui tool_use + JSON Schema menguatkuasakan enum, model secara harfiah tidak boleh mengembalikan nilai di luar senarai — termasuk injap keselamatan other yang disengajakan.
classify_ticket = {
"name": "classify_ticket",
"description": "Classify a support ticket into one category.",
"input_schema": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": ["billing", "technical", "account", "other"],
"description": "Use 'other' ONLY when none of the named categories fit."
},
"category_detail": {
"type": "string",
"description": "Required when category is 'other': a short phrase naming the real category."
}
},
"required": ["category"]
}
}Mengapa Butiran Tidak Boleh Diwajibkan
Keputusan skema yang paling penting di sini: tandakan category_detail sebagai pilihan, dan jangan sekali-kali mewajibkannya.
Peraturan asas output berstruktur ialah mewajibkan sesuatu medan hanya jika medan itu sentiasa wujud. Medan butiran hanya wujud apabila category ialah other — medan itu tiada untuk tiket billing, technical dan account.
Jika anda memasukkannya ke dalam required, model akan mereka-reka rentetan butiran untuk kes yang tidak memerlukannya, semata-mata untuk memenuhi skema. Anda sebenarnya menghasilkan halusinasi untuk menguatkuasakan peraturan yang tidak diperlukan.
Keperluan Bersyarat Diletakkan dalam Gesaan
Jadi, bagaimana anda memastikan category_detail diisi apabila model memilih other? Kebergantungan itu bersyarat, jadi letakkannya dalam penerangan medan dan gesaan sistem — bukan dalam tatasusunan required statik skema.
Nyatakan peraturan itu dengan jelas. Kriteria yang jelas sentiasa lebih baik daripada arahan yang kabur.
system = (
"Classify each ticket using the classify_ticket tool.\n"
"Pick the most specific named category that fits.\n"
"Choose 'other' ONLY when no named category applies. "
"When you choose 'other', you MUST also provide category_detail "
"as a short noun phrase naming the true category "
"(e.g. 'partnership inquiry', 'legal request')."
)Memaksa Output Berstruktur dengan tool_choice
Untuk memastikan model mengembalikan pengelasan sebagai data berstruktur dan bukannya prosa, paksa panggilan alat. Menetapkan tool_choice kepada {"type": "tool", "name": "classify_ticket"} memaksa Claude mengeluarkan input alat tersebut dengan tepat, dan input itu disahkan mengikut skema.
Jika anda mempunyai beberapa alat pengekstrakan dan hanya mahu menjamin sesuatu panggilan berstruktur, tool_choice: "any" boleh digunakan; "auto" membenarkan model memilih antara teks dengan alat. Untuk satu skema yang dipaksa, nyatakan nama alat secara jelas.
resp = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=512,
system=system,
tools=[classify_ticket],
tool_choice={"type": "tool", "name": "classify_ticket"},
messages=[{"role": "user", "content": ticket_text}],
)Membaca Hasil dengan Selamat
Di sisi pengguna, buat percabangan berdasarkan enum. Baldi other ialah tempat anda membaca category_detail — dan tempat anda perlu menjangka bahawa medan itu kadangkala tiada kerana ia bersifat pilihan.
Akses defensif (dengan rentetan kosong sebagai nilai lalai) memastikan kod anda teguh terhadap medan yang tiada secara sah, iaitu tingkah laku yang memang anda reka.
block = next(b for b in resp.content if b.type == "tool_use")
result = block.input
category = result["category"]
if category == "other":
detail = result.get("category_detail", "")
log_uncategorized(ticket_text, detail) # capture for later enum growth
else:
route_to_queue(category)Menganalisis 'other' untuk Mengembangkan Enum
Medan butiran bukan sekadar sandaran — ia ialah gelung maklum balas. Setiap rekod other membawa label yang boleh dibaca manusia untuk kes yang terlepas daripada taksonomi anda.
Agregatkan butiran tersebut secara berkala. Apabila kelompok seperti "pertanyaan perkongsian" muncul 40 kali seminggu, anda telah menemui nilai enum kelas pertama anda yang seterusnya. Naikkannya daripada teks bebas kepada kategori bernama, lalu pengelas anda menjadi lebih tepat — dipacu oleh data sebenar, bukan tekaan.
Berpadanan Secara Semula Jadi dengan Cuba Semula dengan Maklum Balas
Corak ini mudah digabungkan dengan pengesahan. Jika hasil melanggar peraturan bersyarat anda — katakan category ialah other tetapi category_detail dikembalikan sebagai kosong — itu ialah ralat struktur, dan cuba semula dengan maklum balas memang membaiki ralat sedemikian.
Hantar tiket asal, output salah yang dihasilkannya sendiri dan ralat pengesahan yang tepat kepada model. Yang penting, cuba semula membantu kerana maklumat yang diperlukan (kategori sebenar) wujud dalam sumber. Cuba semula tidak akan membantu jika maklumat itu sememangnya tiada dalam tiket.
if result["category"] == "other" and not result.get("category_detail"):
feedback = (
"You returned category='other' but left category_detail empty. "
"Re-classify and provide a short detail phrase."
)
# resend: original ticket + the bad output + this exact errorBila Tidak Perlu Menambah 'other'
Corak ini adalah untuk kebolehkembangan dalam keadaan tidak pasti — taksonomi dunia terbuka seperti kategori tiket, jenis dokumen atau label niat, yang akan terus menerima kes baharu.
Jangan tambahkan other pada set yang benar-benar tertutup. Medan priority dengan nilai low / medium / high sudah lengkap mengikut definisi; other di situ hanya menggalakkan model mengelak daripada membuat keputusan sebenar. Simpan jalan keluar ini untuk enum yang sememangnya tidak dapat menjangka setiap nilai.
Keseluruhan Corak dalam Satu Paparan
Gabungkan semua bahagian dan anda memperoleh kontrak kecil yang teguh:
- Enum dengan nilai bernama serta
other— skema menguatkuasakan set tertutup. - Medan butiran pilihan — tidak pernah diwajibkan, jadi model tidak akan mereka-rekanya.
- Gesaan + penerangan membawa peraturan bersyarat "isi butiran apabila other".
- Pengguna membuat percabangan berdasarkan enum dan merekodkan butiran.
- Pengesahan/cuba semula mengesan butiran yang tiada tetapi diwajibkan oleh peraturan.
Ini ialah pengasingan yang kemas: skema menjamin bentuk; gesaan menjamin tingkah laku; gelung merekodkan perkara yang tidak anda jangka.
Semakan Pantas: Mereka Bentuk Medan 'other'
Anda sedang membina alat pengelas tiket yang enum category-nya merangkumi billing, technical, account dan other. Anda menambah rentetan category_detail yang perlu diisi setiap kali model memilih other. Bagaimanakah anda harus mengekodkan keperluan supaya category_detail diisi untuk kes other?
Imbas Kembali: Enum yang Boleh Dikembangkan
Kesimpulan utama:
- Enum tertutup tersilap mengelaskan input yang tidak pernah dijangka secara senyap; nilai
othermemberikan model jalan keluar yang jujur. - Padankan
otherdengan medan butiran teks bebas untuk merekodkan apakah kes luar jangka itu sebenarnya. - Pastikan medan butiran pilihan — jangan sekali-kali mewajibkan medan yang mungkin tiada, atau model akan mereka-rekanya.
- Letakkan peraturan bersyarat "isi butiran apabila other" dalam gesaan dan penerangan medan, bukan dalam tatasusunan
requiredstatik. - Analisis butiran
otheryang direkodkan untuk mengembangkan enum dengan nilai kelas pertama sebenar dari semasa ke semasa. - Gunakan
tool_use+ JSON Schema untuk menguatkuasakan enum, dan cuba semula dengan maklum balas untuk pelanggaran struktur.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 26
- Pelajaran
- 104
Soalan Lazim
Adakah pelajaran “Enum dengan 'other' untuk Kebolehkembangan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Claude Architect, termasuk “Enum dengan 'other' untuk Kebolehkembangan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Claude Architect merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Enum dengan 'other' untuk Kebolehkembangan”?
Tambah nilai 'other' bersama medan perincian Anda berlatih Claude Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Claude Architect?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Claude Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Enum dengan 'other' untuk Kebolehkembangan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Claude Architect ini?
Ya. Setiap pelajaran Claude Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- tool_use untuk Struktur Terjamin
- Mereka Bentuk Skema JSON
- Medan Diperlukan berbanding Pilihan/Boleh Nol
- Enum dengan 'other' untuk Kebolehkembangan