Rumah > Peranti teknologi > AI > Pengenalan Debug dan Menguji LLMS di Langsmith

Pengenalan Debug dan Menguji LLMS di Langsmith

Joseph Gordon-Levitt
Lepaskan: 2025-03-08 09:35:13
asal
157 orang telah melayarinya

baru -baru ini saya menemui platform AI yang secara automatik menjana flashcards dari mana -mana jenis media. Oleh kerana saya suka menghafal konsep dengan pengulangan jarak, saya segera memuat naik tutorial xgboost saya dan meminta AI untuk membuat 50 flashcards di atasnya.

Tetapi saya kecewa. Kebanyakan soalan terlalu mudah, dan sangat sedikit daripada mereka mengenai sintaks kod. Lebih anehnya, 10% daripada soalan-soalan yang sama dan sama sekali tidak teratur-"Apakah modal Perancis?".

Jenis -jenis kesilapan ini mencadangkan kekurangan penilaian yang betul dan pengesahan output yang dihasilkan oleh perkhidmatan AI. Mungkin mereka tidak tahu tentang Langsmith.

Langsmith adalah platform penuh untuk menguji, debug, dan menilai aplikasi LLM. Mungkin, ciri yang paling penting ialah penilaian output LLM dan pemantauan prestasi. Dalam tutorial ini, kami akan melihat rangka kerja dalam tindakan dan mempelajari teknik untuk menerapkannya dalam projek anda sendiri.

mari kita mulakan!

kenapa Langsmith?

Seperti yang saya nyatakan di atas, Langsmith adalah platform yang komprehensif untuk menilai aplikasi bahasa yang besar. Berikut adalah beberapa ciri dan faedah dunia nyata yang mereka bawa:

Persediaan cepat

Pengaturcara boleh mula bereksperimen dengan Langsmith dalam beberapa minit, bukan jam. Ini bermakna pasukan kecil atau pemaju solo boleh prototaip permohonan AI pada hujung minggu dan berpotensi menghantar perkhidmatan berbayar pada hari Isnin.

Jaminan Kualiti

Dengan alat penilaian yang ketat, syarikat boleh mengelakkan rasa malu dan kos siaran AI yang rosak (seperti contoh yang saya berikan dalam pengenalan). Langsmith membolehkan anda menyemak output LLMs terhadap kriteria terbina dalam seperti membantu, koheren, misogyny, atau penilaian tersuai dalam bahasa semulajadi seperti "Adakah kandungan klise output?" Atau, dalam hal penjanaan flashcards, "Adakah kad itu mengandungi soalan pengekodan?".

pemantauan dan visualisasi masa nyata

Langsmith menggunakan jejak untuk log hampir setiap aspek LLM berjalan. Ini termasuk metrik seperti latensi, kiraan token, harga larian, dan semua jenis metadata. UI Web membolehkan anda dengan cepat menapis berjalan berdasarkan peratusan ralat, latensi, tarikh, atau bahkan dengan kandungan teks menggunakan bahasa semulajadi. Ini bermakna jika, misalnya, tutor AI mula melanda tindak balasnya kepada pelajar sebenar, anda boleh menolak pembetulan dalam beberapa jam.

Integrasi dengan Langchain

Langchain adalah kerangka induk Langsmith yang difokuskan secara khusus pada fasa pembangunan LLMS. Ia menawarkan reka bentuk perisian modular untuk mengikat pelbagai LLM (ejen) dan mengintegrasikannya dengan API lain seperti YouTube, Carian Google dan sebagainya. Langsmith adalah ceri di atas, memastikan bahawa prototaip yang dibina dengan Langchain melakukan seperti yang diharapkan dengan menggunakan alat penilaian dan pemantauan yang kuat.

Lihat aplikasi LLM kami dengan tutorial Langchain untuk mengetahui lebih lanjut mengenai Langchain.

dataset

Satu lagi ciri hebat Langsmith ialah dataset. Mereka boleh digunakan untuk meningkatkan rantai, ejen atau model Langchain terhadap satu set contoh standard sebelum penggunaan. Sebagai contoh, kami mungkin mempunyai fail CSV yang mengandungi dua lajur - soalan dan jawapan untuk flashcards dalam format tertentu.

Dengan menukar fail ini ke dalam dataset rujukan, kita boleh mengarahkan LLM untuk menilai output mereka sendiri menggunakan metrik jaminan kualiti yang disebut tadi.

sekarang kita akan melihat semua ciri-ciri ini melalui contoh satu demi satu.

aliran kerja pembangunan aplikasi llm

Dalam pembangunan aplikasi ML, anda mengumpul data, kereta api, halus, ujian, dan menggunakan model-langkah-langkah yang jelas. Dengan aplikasi LLM, bagaimanapun, anda sering memulakan dengan model siap sedia dari vendor. Penalaan halus? Itu boleh mahal. Oleh itu, anda akan memberi tumpuan banyak untuk membuat petunjuk yang betul - ini semua tentang meminta aplikasi LLM anda soalan yang betul. Fikirkan ia memerlukan banyak arahan untuk menguji perkara, sama seperti anda memerlukan banyak data untuk model ML yang baik.

Walau bagaimanapun, dengan arahan, anda berurusan dengan teks masuk dan keluar, bukan nombor. Oleh itu, cara biasa untuk mengukur kesilapan atau ketepatan, seperti MSE atau silang entropi, tidak berfungsi di sini. Selain itu, bayangkan membaca setiap input dan output untuk penilaian - yang akan mengambil masa beberapa hari jika anda mempunyai beribu -ribu arahan untuk menilai.

Jadi, anda memerlukan aliran kerja yang semua tentang mencipta dan menguji dengan cekap ini untuk melihat sejauh mana aplikasi LLM anda lakukan, tanpa lemas dalam cek manual. Inilah yang kelihatan seperti:

1. Membangunkan

Pada peringkat ini, anda akan prototaip dasar aplikasi anda menggunakan rangka kerja seperti Langchain. Untuk projek penjana flashcard, prototaip anda mungkin termasuk pelbagai komponen di atas LLM yang anda pilih dari vendor. Sebagai contoh, anda mungkin perlu mengikatnya ke:

    pengambilan: API enjin carian, pengikis web
  • Loaders Dokumen: Input Fail - PDF, Teks, CSV, JSON, Clipboard, YouTube, Carian, dan lain -lain
  • pemuat sembang
  • kedai vektor
  • Model Embedding
  • Callbacks
dan sebagainya (lihat jenis komponen yang boleh anda tambahkan dari halaman Dokumen Langchain ini). Tetapi anda boleh memotong masa pembangunan anda secara drastik dengan menggunakan rantai luar rak yang ditawarkan oleh Langchain untuk tugas peringkat tinggi yang biasa.

2. Pengeluaran

Pada peringkat ini, anda akan menguji permohonan anda terhadap seberapa banyak senario yang anda boleh. Ini bermakna anda perlu memastikan setiap komponen tambahan berfungsi dengan baik, berantai bersama-sama dengan baik, dan menghasilkan output berkualiti tinggi yang konsisten.

Diberi LLMS adalah tidak ditentukan (mereka tidak menghasilkan output yang sama untuk input yang sama) dan kerumitan komponen tambahan, anda akan menghabiskan sebahagian besar masa anda dalam tahap ini. Dan Langsmith telah dibangunkan dengan tujuan tunggal untuk membuat masa itu sesingkat mungkin. Kami akan membincangkannya lebih lanjut sepanjang tutorial.

3. Deploy

Sebaik sahaja anda mempunyai aplikasi yang berdaya maju, anda boleh menggunakannya sebagai API REST. API REST pada dasarnya menukarkan rantai atau ejen Langchain sedia ada ke dalam pautan HTTPS yang lain boleh menghantar permintaan untuk berinteraksi dengan model AI anda. Sekarang, anda akan membina antara muka pengguna perkhidmatan anda seperti aplikasi desktop atau, lebih kerap, laman web.

Sekarang, tidak ada cara mudah untuk melakukan ini, tetapi pemaju Langchain akan melepaskan Langserve, yang akan diintegrasikan ke Fastapi (betapa hebatnya itu?). Lihat puncak menyelinap dari halaman ini dokumentasi.

Sekarang, mari kita akhirnya mula bermain -main dengan Langsmith.

Gambaran keseluruhan platform Langsmith

kita akan bermula dengan memahami UI web. Ia boleh didapati melalui pautan smith.langchain.com. Untuk akses, anda perlu mendaftar dan dibersihkan dari senarai tunggu, kerana kini sedang dalam beta tertutup.

Tetapi sebaik sahaja anda masuk, halaman pendaratan akan kelihatan seperti ini:

Pengenalan Debug dan Menguji LLMS di Langsmith

Dua bahagian utama adalah projek dan dataset & ujian, dan kedua -dua bahagian boleh dimanipulasi melalui Python SDK. Platform ini juga mempunyai tab untuk penempatan dan anotasi anotasi, tetapi mereka berada di luar skop artikel ini.

Menyediakan Langsmith Python Sdk

Menguruskan projek di Langsmith jauh lebih mudah dengan Python SDK, yang disambungkan ke platform melalui kunci API.

Untuk mendapatkan kunci, klik pada ikon utama di platform dan simpan di tempat yang selamat. Kemudian, dalam direktori baru dengan persekitaran maya baru yang dimulakan, buat fail .env. Di dalam, tampal dua baris berikut:

LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Seterusnya, di terminal anda, jalankan arahan berikut untuk memasang Langsmith dan Python-Dotenv untuk membaca pembolehubah persekitaran:

python-dotenv to read environment variables:
pip install -U langsmith
pip install python-dotenv
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Sekarang, masa untuk menulis kod:

import warnings

from dotenv import find_dotenv, load_dotenv

warnings.filterwarnings("ignore")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
kami mengimport fungsi find_dotenv dan load_dotenv untuk membaca pembolehubah persekitaran dan menetapkannya dengan OS:

import os

load_dotenv(find_dotenv())
os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Menetapkan Langchain_tracing_v2 untuk benar membolehkan pengesanan (pembalakan), yang penting untuk menyahpepijat LLM. Selepas itu, kami memulakan pelanggan untuk bercakap dengan platform Langsmith:

from langsmith import Client

# Initialize a client
client = Client()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Pelanggan mengandungi arahan peringkat tinggi untuk memanipulasi projek dan aset di Langsmith. Perintah pertama pelanggan yang akan kami gunakan ialah membuat projek baru:

import uuid

# Create id
uid = uuid.uuid4()
# Create a unique name
PROJECT_NAME = "flashcards-generator-" + str(uid)
# Create the project
session = client.create_project(
   project_name=PROJECT_NAME,
   description="A project that generates flashcards from user input",
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Selepas create_project berjaya berjalan, anda dapat melihat projek yang disenaraikan di bahagian projek UI web:

Pengenalan Debug dan Menguji LLMS di Langsmith Seterusnya, kita perlu menetapkan projek baru sebagai lalai dengan pembolehubah persekitaran yang lain:

Sekarang, kita memerlukan LLM untuk projek kami. Kami akan pergi dengan GPT-3.5 Turbo kerana ia lebih murah, tetapi anda boleh menggunakan banyak model lain yang tersedia melalui Langchain. Model OpenAI diasaskan melalui kelas Chateopenai.
os.environ["LANGCHAIN_PROJECT"] = PROJECT_NAME
Salin selepas log masuk

mari kita lari pertama kami:
from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI()  # Uses gpt-3.5-turbo by default
Salin selepas log masuk
LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika anda dengan cepat menyemak projek dari UI, anda akan melihat jangka masa di atas dikesan (log):

Pengenalan Debug dan Menguji LLMS di Langsmith

Apabila kami menyediakan pembolehubah persekitaran dan pelanggan, kami secara automatik mengaktifkan pembalakan. Seperti yang anda lihat, kami sudah mempunyai sekumpulan metadata mengenai larian.

Pengenalan Debug dan Menguji LLMS di Langsmith mari kita jalankan lebih banyak lagi:

kita sudah dapat membina summarizer teks asas. Mari kita meringkaskan output larian terakhir:
python-dotenv to read environment variables:
pip install -U langsmith
pip install python-dotenv
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Hebat, kini sudah tiba masanya untuk membuat dataset pertama kami.
import warnings

from dotenv import find_dotenv, load_dotenv

warnings.filterwarnings("ignore")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Membuat dataset yang tidak berlabel di Langsmith

Seperti yang saya nyatakan dalam bahagian "Aliran Kerja Pembangunan Aplikasi LLM", anda mungkin perlu membuat atau mengumpul ribuan arahan untuk menilai model, rantai, atau ejen LLM anda. Oleh itu, menjalankan satu demi satu seperti yang kita lakukan di atas bukan amalan terbaik.

Atas sebab ini, Langsmith menawarkan dataset dalam tiga jenis:

Nilai Utama (KV)-Lalai: Mendefinisikan input sebagai pasangan nilai kunci sewenang-wenangnya. Mereka berguna semasa menilai rantai dan ejen yang memerlukan pelbagai input atau mengembalikan pelbagai output.
  • LLM Dataset (LLM): Input dan output ditakrifkan dalam "Gaya Penyelesaian" oleh LLMS - String In, String Out.
  • dataset sembang (sembang): Ini adalah dataset yang ditukar dari sembang LLM dan ditakrifkan menggunakan input berstruktur dan mesej bersiri.
  • Pertama, mari kita lihat bagaimana untuk membuat dataset nilai utama tanpa output. Kami akan menggunakan fungsi create_dataset pelanggan:

Sekarang, mari tambahkan tiga input yang masing -masing meminta LLM untuk membuat satu flashcard tunggal:
import os

load_dotenv(find_dotenv())
os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika anda pergi ke tab dataset UI, anda akan melihat setiap petikan yang disenaraikan dengan output null:
from langsmith import Client

# Initialize a client
client = Client()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sekarang, mari kita jalankan semua arahan dalam satu baris kod menggunakan fungsi RUN_ON_DATASET: Pengenalan Debug dan Menguji LLMS di Langsmith

Setelah selesai selesai, ia akan disenaraikan di halaman dataset. Inilah yang kelihatan seperti:

import uuid

# Create id
uid = uuid.uuid4()
# Create a unique name
PROJECT_NAME = "flashcards-generator-" + str(uid)
# Create the project
session = client.create_project(
   project_name=PROJECT_NAME,
   description="A project that generates flashcards from user input",
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kami hanya melakukan ujian yang dijalankan pada dataset yang tidak berlabel - dataset dengan contoh yang diminta tetapi tidak ada contoh output. Ujian kami hanya menghasilkan respons kepada setiap prompt tetapi tidak menilai apa -apa. Tetapi kami ingin melakukan pemeriksaan asas seperti "Adakah output membantu?" atau "Adakah respons pendek atau panjang"?

Pengenalan Debug dan Menguji LLMS di Langsmith Langsmith membolehkan kami melakukan cek tersebut menggunakan penilai terbina dalam.

Menilai LLMS di Langsmith

Untuk menjalankan penilaian kesimpulan dan koheren menggunakan tiga arahan yang kami ada dalam dataset kami, kami boleh menggunakan kelas RunEvalConfig:

LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

di atas, kami menentukan dua kriteria dalam senarai yang dipanggil penilai. Kami lulus penilai ini ke parameter penilaian Run_on_dataset Fungsi:

python-dotenv to read environment variables:
pip install -U langsmith
pip install python-dotenv
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

run_on_dataset adalah fungsi yang berguna untuk menjalankan semua arahan dalam dataset menggunakan LLM yang disediakan dan melakukan apa -apa jenis penilaian dengan cepat. Hasilnya akan dapat dilihat pada halaman khusus setiap dataset:

Pengenalan Debug dan Menguji LLMS di Langsmith

Kali ini, larian mempunyai koheren dan metrik kesimpulan untuk setiap prompt. Di bahagian bawah, anda juga akan melihat skor purata untuk setiap metrik.

Untuk melihat senarai semua kriteria terbina dalam, jalankan coretan di bawah:

import warnings

from dotenv import find_dotenv, load_dotenv

warnings.filterwarnings("ignore")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Menulis Penilai Custom di Langsmith untuk dataset tidak berlabel

Sudah tentu, tidak semua kes penggunaan LLM boleh diperiksa dengan penilai asas. Sebagai contoh, tidak ada penilai untuk memeriksa sama ada flashcard mengandungi soalan pengekodan atau tidak. Jadi, kita lebih baik menentukannya:

import os

load_dotenv(find_dotenv())
os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Untuk lulus kriteria tersuai dengan bahasa semulajadi, kita hanya lulus {"kriteria_name": "syarat untuk memeriksa"} ke kelas kriteria. Di atas, kami mencipta dua penilai tambahan, jadi Langsmith akan menjalankan dua petikan tambahan di atas output yang dihasilkan oleh arahan dalam dataset kami:

from langsmith import Client

# Initialize a client
client = Client()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Jika anda menyemak larian, anda akan melihat kriteria tersuai yang telah kami tentukan di bawah setiap prompt. Sekiranya anda melayang, anda akan mendapat alasan LLM selepas:

Pengenalan Debug dan Menguji LLMS di Langsmith

Dengan memeriksa hasil penilaian untuk semua arahan, anda akan melihat bahawa kriteria kami tidak menilai seperti yang diharapkan. Oleh itu, inilah sesuatu yang perlu dipertimbangkan-anda juga perlu membuat kriteria anda untuk memastikan mereka memeriksa perkara yang betul. Pengenalan Debug dan Menguji LLMS di Langsmith

Membuat dataset berlabel

Kadang -kadang, anda boleh membuat keputusan untuk membuat dataset yang diberikan dengan output yang diharapkan, mis., Dataset berlabel. Anda boleh membuat dataset berlabel dalam pelbagai format, tetapi mungkin yang paling biasa adalah fail CSV. Sebagai contoh, inilah fail yang saya hasilkan dengan chatgpt yang mengandungi lima soalan mengenai sintaks Pytorch:

Untuk membuat dataset dari ini, kita boleh menggunakan fungsi upload_csv:

Pengenalan Debug dan Menguji LLMS di Langsmith

Fungsi ini mempunyai tiga parameter yang diperlukan: laluan CSV dan nama lajur input/output. Setelah muat naik selesai, dataset akan muncul di UI:

import uuid

# Create id
uid = uuid.uuid4()
# Create a unique name
PROJECT_NAME = "flashcards-generator-" + str(uid)
# Create the project
session = client.create_project(
   project_name=PROJECT_NAME,
   description="A project that generates flashcards from user input",
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

mari kita jalankan kriteria tersuai kami dari bahagian sebelumnya pada dataset ini juga:

Pengenalan Debug dan Menguji LLMS di Langsmith Jika anda pergi ke halaman dataset dan lihat larian, kami dapat melihat skor purata untuk setiap kriteria tersuai:

Pengenalan Debug dan Menguji LLMS di Langsmith

Menilai dataset berlabel

Penilai terbina dalam dan adat yang ditulis dalam bahasa semulajadi kebanyakannya untuk dataset yang tidak berlabel. Untuk dataset berlabel seperti dataset CSV yang kami muat naik, Langsmith menawarkan penilai yang lebih komprehensif untuk mengukur ketepatan respons kepada prompt:

    context_qa (Kontekstual Q & A): Menggunakan output sampel sebagai konteks semasa menilai ketepatan
  • qa (Q & A): Mengarahkan LLM untuk secara langsung menilai respons sebagai "betul" atau "salah" menggunakan output rujukan
  • COT_QA (Q & A Chain-of-Thought): Sama dengan Context_QA tetapi penilai ini memaksa LLM untuk menggunakan pemikiran rantai sebelum mencapai keputusan.
mari kita cuba yang terakhir pada contoh kami:

LANGCHAIN_API_KEY="LangSmith-API-key"
OPENAI_API_KEY="Your-OPENAI-key"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Cotqa Criterion mengembalikan skor yang disebut ketepatan kontekstual, seperti yang digambarkan dalam GIF di bawah (juga dalam UI):

Pengenalan Debug dan Menguji LLMS di Langsmith Sila lawati bahagian Evaluators Langchain dokumen Langsmith untuk mengetahui lebih lanjut mengenai penilai.

Kesimpulan

Jika anda mempunyai kesan selepas membaca tutorial ini bahawa Langsmith benar -benar hanya alat yang kompleks untuk kejuruteraan segera, anda akan betul! Sekarang, Langsmith adalah rangka kerja terbaik untuk memastikan arahan dan output LLMS sebenarnya adalah apa yang anda mahukan.

Anda juga mesti menyedari usaha yang diperlukan untuk membina aplikasi LLM gred pengeluaran. Oleh itu, gunakan Langsmith untuk pengalaman yang lebih lancar semasa mengerjakan projek LLM.

Jika beberapa konsep di Langsmith tidak masuk akal, anda mungkin kekurangan beberapa asas di Langchain. Berikut adalah beberapa sumber di atasnya:

intro to langchain untuk kejuruteraan data
  • membina chatbots konteks yang menyedari di langchain
  • kejuruteraan segera di langchain
  • bagaimana untuk membina aplikasi LLM dengan langchain
  • Docs Langchain
  • Dokumen Langsmith

Atas ialah kandungan terperinci Pengenalan Debug dan Menguji LLMS di Langsmith. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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