Rumah > pembangunan bahagian belakang > Tutorial Python > Mengoptimumkan GPT-mini OpenAI untuk Mengesan Teks Dijana AI Menggunakan DSPy

Mengoptimumkan GPT-mini OpenAI untuk Mengesan Teks Dijana AI Menggunakan DSPy

Linda Hamilton
Lepaskan: 2024-11-24 06:46:14
asal
212 orang telah melayarinya

Mengesan teks yang dijana AI telah menjadi topik hangat, dengan penyelidik dan pengamal membahaskan kebolehlaksanaan dan implikasi etikanya. Apabila model berkembang dengan lebih canggih, membezakan antara teks tulisan manusia dan teks yang dijana AI menjadi satu cabaran yang menarik dan keperluan kritikal.

Dalam siaran ini, kami akan meneroka cara memanfaatkan keupayaan pengoptimuman DSPy untuk memperhalusi GPT-4o-mini OpenAI untuk tugas ini menggunakan set data menarik sebanyak 1.39 juta sampel teks. Pada akhirnya, anda akan tahu cara untuk melaksanakan, menilai dan mengoptimumkan pengesan teks AI asas menggunakan DSPy—tiada kejuruteraan segera manual diperlukan.


Pemuatan Set Data

Mula-mula, mari muatkan set data, yang mengandungi sampel teks yang dilabelkan sebagai sama ada tulisan manusia atau AI yang dijana daripada pelbagai sumber manusia dan LLM. Untuk bermula, pastikan anda telah memasang Python 3, bersama-sama dengan pustaka set data DSPy dan muka peluk:

pip install dspy datasets
Salin selepas log masuk
Salin selepas log masuk

Saiz set data adalah lebih kurang 2GB, jadi bergantung pada kelajuan internet anda, langkah ini mungkin mengambil masa beberapa minit.

Berikut ialah kod untuk memuatkan dan membahagikan set data secara sama rata untuk latihan dan ujian:

from datasets import load_dataset

# Load the dataset
ds = load_dataset("artem9k/ai-text-detection-pile", split="train")

# For simplicity, we’ll do an even split of data for testing and training
NUM_EXAMPLES = 80  # Adjust this to experiment with dataset size
ds = ds.train_test_split(test_size=NUM_EXAMPLES, train_size=NUM_EXAMPLES)
Salin selepas log masuk
Salin selepas log masuk

Petua: Anda boleh melaraskan NUM_EXAMPLES untuk mencuba set data yang lebih besar atau untuk mengurangkan kos semasa menjalankan pengoptimuman.


Persediaan Model

Seterusnya, kami akan mencipta peramal DSPy asas menggunakan GPT-4o-mini OpenAI. GPT-4o-mini ialah versi ringan model GPT-4o OpenAI, menjadikannya menjimatkan kos untuk percubaan. DSPy memudahkan proses ini dengan menggunakan tandatangan, yang mentakrifkan pemetaan input-output berstruktur.

Ganti "YOUR_API_KEY" dengan kunci API OpenAI anda sebelum menjalankan kod:

import dspy
from typing import Literal

# Initialize the OpenAI GPT-4o-mini model
lm = dspy.LM('openai/gpt-4o-mini', api_key="YOUR_API_KEY")
dspy.configure(lm=lm, experimental=True)

# Define the AI text detector signature
class DetectAiText(dspy.Signature):
    """Classify text as written by human or by AI."""
    text: str = dspy.InputField()
    source: Literal['ai', 'human'] = dspy.OutputField()

# Create a basic predictor
detector = dspy.Predict(DetectAiText)
Salin selepas log masuk

Perhatikan bahawa kami tidak melakukan sebarang kejuruteraan segera di sini. Sebaliknya, kami bergantung pada DSPy untuk mengendalikannya, serta perhubungan input-output secara automatik.

Anda boleh menguji "pengesan" dengan beberapa input sampel:

print(detector(text="Hello world (this definitely wasn't written by AI)"))
Salin selepas log masuk

Ramalan akan muncul dalam medan 'sumber' output.


Menilai Pengesan

Sekarang kita mempunyai pengesan asas, mari kita nilai prestasinya menggunakan alat penilaian DSPy. Untuk ini, kami akan mentakrifkan metrik mudah yang menyemak sama ada model meramalkan sumber teks dengan betul (manusia atau AI).

Berikut ialah kod untuk menyediakan dan menjalankan penilaian:

from dspy.evaluate import Evaluate

# Define a simple evaluation metric
def validate_text_source(example: dspy.Example, pred, trace=None) -> int:
    return 1 if example.source.lower() == pred.source.lower() else 0

# Transform the dataset into DSPy-compatible "Example" objects
dspy_trainset = [
    dspy.Example(source=x['source'], text=x['text']).with_inputs('text') for x in ds['train']
]
dspy_devset = [
    dspy.Example(source=x['source'], text=x['text']).with_inputs('text') for x in ds['test']
]

# Evaluate the detector
evaluator = Evaluate(devset=dspy_devset, num_threads=12)  # Adjust threads based on your system
evaluator(detector, metric=validate_text_source)
Salin selepas log masuk

Dalam ujian awal saya, saya mencapai ketepatan 76%–81%. Harap maklum bahawa keputusan mungkin berbeza-beza disebabkan oleh pensampelan rawak set data.

Optimizing OpenAI’s GPT-mini to Detect AI-Generated Text Using DSPy


Mengoptimumkan dengan DSPy

Kuasa sebenar DSPy terletak pada keupayaan pengoptimumannya. Dengan menggunakan pengoptimum MIPROv2, kami boleh meningkatkan prestasi pengesan tanpa mengubah gesaan secara manual. Pengoptimum mengautomasikan proses ini menggunakan contoh beberapa tangkapan, templat dinamik dan teknik penyeliaan sendiri.

Berikut ialah cara untuk menyediakan dan menjalankan pengoptimum:

pip install dspy datasets
Salin selepas log masuk
Salin selepas log masuk

Nota: Kos untuk pengoptimuman tunggal dijalankan dengan pratetap "ringan" biasanya kurang daripada $0.50 untuk set data sebanyak 80 contoh.


Keputusan dan Lelaran

Selepas menjalankan pengoptimuman, saya melihat peningkatan prestasi yang ketara. Larian pertama saya mencapai ketepatan 91.25%, berbanding 76%–81% garis dasar. Larian seterusnya berjulat antara 81.2% dan 91.25%, menunjukkan peningkatan yang konsisten dengan usaha yang minimum.

Optimizing OpenAI’s GPT-mini to Detect AI-Generated Text Using DSPy

Untuk memuatkan model yang dioptimumkan untuk kegunaan selanjutnya:

from datasets import load_dataset

# Load the dataset
ds = load_dataset("artem9k/ai-text-detection-pile", split="train")

# For simplicity, we’ll do an even split of data for testing and training
NUM_EXAMPLES = 80  # Adjust this to experiment with dataset size
ds = ds.train_test_split(test_size=NUM_EXAMPLES, train_size=NUM_EXAMPLES)
Salin selepas log masuk
Salin selepas log masuk

Anda boleh mengulang lagi dengan:

  • Melaraskan parameter auto pengoptimum (ringan, sederhana, berat) atau menetapkan sendiri parameter hiper.
  • Meningkatkan saiz set data untuk latihan dan penilaian.
  • Ujian dengan LLM yang lebih maju atau dikemas kini.

Kesimpulan

Hanya dalam beberapa langkah, kami menunjukkan cara DSPy memudahkan pengoptimuman LLM untuk kes penggunaan dunia sebenar. Tanpa sebarang kejuruteraan segera manual, kami mencapai peningkatan yang boleh diukur dalam mengesan teks yang dijana AI. Walaupun model ini tidak sempurna, fleksibiliti DSPy membolehkan lelaran berterusan, menjadikannya alat yang berharga untuk pembangunan AI berskala.

Saya sangat mengesyorkan pembacaan dokumentasi DSPy dan percubaan dengan pengoptimum lain dan corak LLM.


Kod penuh tersedia di GitHub.

Soalan? Komen? Beritahu saya, saya tidak sabar untuk melihat apa yang anda bina dengan DSPy!

Anda boleh mencari saya di LinkedIn | CTO & Rakan Kongsi @ EES.

Atas ialah kandungan terperinci Mengoptimumkan GPT-mini OpenAI untuk Mengesan Teks Dijana AI Menggunakan DSPy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan