Prinsip asas model bahasa besar (LLMS) adalah sangat mudah: untuk meramalkan perkataan seterusnya (atau token) dalam urutan kata -kata berdasarkan corak statistik dalam data latihan mereka. Walau bagaimanapun, keupayaan yang seolah -olah mudah ini ternyata sangat canggih apabila ia dapat melakukan beberapa tugas yang luar biasa seperti ringkasan teks, penjanaan idea, brainstorming, penjanaan kod, pemprosesan maklumat, dan penciptaan kandungan. Yang mengatakan, LLM tidak mempunyai ingatan tidak ada yang sebenarnya mereka "memahami" apa -apa, selain melekat pada fungsi asas mereka: meramalkan perkataan seterusnya .
Proses ramalan perkataan seterusnya adalah probabilistik. LLM perlu memilih setiap perkataan dari taburan kebarangkalian. Dalam proses ini, mereka sering menjana kandungan palsu, direka, atau tidak konsisten dalam usaha untuk menghasilkan respons yang koheren dan mengisi jurang dengan maklumat yang munasabah tetapi tidak betul. Fenomena ini dipanggil halusinasi, ciri LLM yang tidak dapat dielakkan dan terkenal yang menjamin pengesahan dan pengesahan output mereka.
Kaedah Generasi Augment Retrieval (RAG), yang menjadikan LLM berfungsi dengan sumber pengetahuan luaran, meminimumkan halusinasi sedikit sebanyak, tetapi mereka tidak dapat membasmi mereka sepenuhnya. Walaupun kain lanjutan dapat memberikan petikan dan URL dalam teks, mengesahkan rujukan ini boleh menjadi sibuk dan memakan masa. Oleh itu, kita memerlukan kriteria objektif untuk menilai kebolehpercayaan atau kepercayaan respons LLM, sama ada ia dihasilkan dari pengetahuannya sendiri atau asas pengetahuan luaran (RAG).
Dalam artikel ini, kita akan membincangkan bagaimana output LLM dapat dinilai untuk kepercayaan oleh model bahasa yang boleh dipercayai yang memberikan skor kepada output LLM. Kami akan terlebih dahulu membincangkan bagaimana kami boleh menggunakan model bahasa yang boleh dipercayai untuk memberikan skor kepada jawapan LLM dan menerangkan kepercayaan. Seterusnya, kami akan membangunkan RAG contoh dengan llamaparse dan llamaindex yang menilai jawapan RAG untuk kepercayaan.
Kod keseluruhan artikel ini boleh didapati dalam buku nota Jupyter di GitHub.
Untuk menunjukkan bagaimana kita dapat menetapkan skor kepercayaan kepada respons LLM, saya akan menggunakan model bahasa yang boleh dipercayai (TLM) CleanLab. TLMS tersebut menggunakan gabungan Kuantiti Ketidakpastian dan
pip install --upgrade cleanlab-studio
CleanLab menyokong beberapa model proprietari seperti ' gpt-4o ', ' gpt-4o-mini ', ' o1-preview ', ' Claude-3-Sonnet ','
from cleanlab_studio import Studio studio = Studio("<CLEANLAB_API_KEY>") # Get your API key from above tlm = studio.TLM(options={"log": ["explanation"], "model": "gpt-4o"}) # GPT, Claude, etc #set the prompt out = tlm.prompt("How many vowels are there in the word 'Abracadabra'.?") #the TLM response contains the actual output 'response', trustworthiness score and explanation print(f"Model's response = {out['response']}") print(f"Trustworthiness score = {out['trustworthiness_score']}") print(f"Explanation = {out['log']['explanation']}")
Berapa banyak vokal yang ada dalam perkataan 'Abracadabra'.? ". Output TLM mengandungi jawapan model (tindak balas), skor kepercayaan, dan penjelasan. Berikut adalah output kod ini.
Model's response = The word "Abracadabra" contains 6 vowels. The vowels are: A, a, a, a, a, and a. Trustworthiness score = 0.6842228802750124 Explanation = This response is untrustworthy due to a lack of consistency in possible responses from the model. Here's one inconsistent alternate response that the model considered (which may not be accurate either): 5.
claude-3.5-sonnet-v2 .
Model's response = Let me count the vowels in 'Abracadabra': A-b-r-a-c-a-d-a-b-r-a The vowels are: A, a, a, a, a There are 5 vowels in the word 'Abracadabra'. Trustworthiness score = 0.9378276048845285 Explanation = Did not find a reason to doubt trustworthiness.
Claude-3.5-sonnet-v2 menghasilkan output yang betul. Mari kita bandingkan jawapan dua model kepada soalan lain.
from cleanlab_studio import Studio import markdown from IPython.core.display import display, Markdown # Initialize the Cleanlab Studio with API key studio = Studio("<CLEANLAB_API_KEY>") # Replace with your actual API key # List of models to evaluate models = ["gpt-4o", "claude-3.5-sonnet-v2"] # Define the prompt prompt_text = "Which one of 9.11 and 9.9 is bigger?" # Loop through each model and evaluate for model in models: tlm = studio.TLM(options={"log": ["explanation"], "model": model}) out = tlm.prompt(prompt_text) md_content = f""" ## Model: {model} **Response:** {out['response']} **Trustworthiness Score:** {out['trustworthiness_score']} **Explanation:** {out['log']['explanation']} --- """ display(Markdown(md_content))
DeepSeek-R1-Distill-Llama-70B , berdasarkan META's Llama-3.3-70B-Instruct Model dan disuling dari campuran parameter 671 bilion yang lebih besar ) model. Penyulingan pengetahuan adalah teknik pembelajaran mesin yang bertujuan untuk memindahkan pembelajaran model pra-terlatih yang besar, "model guru," kepada "model pelajar" yang lebih kecil.
Berikut adalah outputimport streamlit as st from langchain_groq.chat_models import ChatGroq import os os.environ["GROQ_API_KEY"]=st.secrets["GROQ_API_KEY"] # Initialize the Groq Llama Instant model groq_llm = ChatGroq(model="deepseek-r1-distill-llama-70b", temperature=0.5) prompt = "Which one of 9.11 and 9.9 is bigger?" # Get the response from the model response = groq_llm.invoke(prompt) #Initialize Cleanlab's studio studio = Studio("226eeab91e944b23bd817a46dbe3c8ae") cleanlab_tlm = studio.TLM(options={"log": ["explanation"]}) #for explanations #Get the output containing trustworthiness score and explanation output = cleanlab_tlm.get_trustworthiness_score(prompt, response=response.content.strip()) md_content = f""" ## Model: {model} **Response:** {response.content.strip()} **Trustworthiness Score:** {output['trustworthiness_score']} **Explanation:** {output['log']['explanation']} --- """ display(Markdown(md_content))
.
Perpustakaan berikut perlu dipasang untuk kod seterusnya.
Untuk menjadikan HTML ke dalam format PDF, kita juga perlu memasang alat baris perintah
pip install llama-parse llama-index-core llama-index-embeddings-huggingface llama-index-llms-cleanlab requests beautifulsoup4 pdfkit nest-asyncio
dari laman web mereka. Perpustakaan berikut akan diimport:
Langkah -langkah seterusnya akan melibatkan data mengikis dari URL yang diberikan menggunakan perpustakaan Python's
BeautifulSoupfrom llama_parse import LlamaParse from llama_index.core import VectorStoreIndex import requests from bs4 import BeautifulSoup import pdfkit from llama_index.readers.docling import DoclingReader from llama_index.core import Settings from llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.core import VectorStoreIndex, SimpleDirectoryReader from llama_index.llms.cleanlab import CleanlabTLM from typing import Dict, List, ClassVar from llama_index.core.instrumentation.events import BaseEvent from llama_index.core.instrumentation.event_handlers import BaseEventHandler from llama_index.core.instrumentation import get_dispatcher from llama_index.core.instrumentation.events.llm import LLMCompletionEndEvent import nest_asyncio import os
pdfkit , dan menguraikan data dari pdf ( s) ke fail markdown menggunakan llamaparse yang merupakan platform parsing dokumen genai-native yang dibina dengan LLM dan untuk kes penggunaan LLM.
kami akan mengkonfigurasi LLM terlebih dahulu untuk digunakan oleh CleanLabTLM dan model penyembuhan ( huggingface model embedding baai/bge-small-en-v1.5 ) untuk mengira embeddings data yang dikikis untuk membuat kedai vektor.
pip install --upgrade cleanlab-studio
Kami kini akan menentukan pengendali acara tersuai, GetTrustWorthinessScore , yang berasal dari kelas pengendali peristiwa asas. Pengendali ini akan dicetuskan oleh akhir penyempurnaan LLM dan mengekstrak skor kepercayaan dari metadata respons. Fungsi pembantu, display_response , memaparkan tindak balas LLM bersama -sama dengan skor kepercayaannya.
from cleanlab_studio import Studio studio = Studio("<CLEANLAB_API_KEY>") # Get your API key from above tlm = studio.TLM(options={"log": ["explanation"], "model": "gpt-4o"}) # GPT, Claude, etc #set the prompt out = tlm.prompt("How many vowels are there in the word 'Abracadabra'.?") #the TLM response contains the actual output 'response', trustworthiness score and explanation print(f"Model's response = {out['response']}") print(f"Trustworthiness score = {out['trustworthiness_score']}") print(f"Explanation = {out['log']['explanation']}")
Kami kini akan menjana PDF dengan mengikis data dari URL yang diberikan. Untuk demonstrasi, kami akan membuang data hanya dari artikel Wikipedia ini mengenai model bahasa yang besar ( Creative Commons Attribution-Sharealise 4.0 License ).
NOTA : Pembaca dinasihatkan untuk sentiasa menyemak semula status kandungan/data yang mereka akan mengikis dan memastikan mereka dibenarkan berbuat demikian.
Sekeping kod berikut mengikis data dari URL yang diberikan dengan membuat permintaan HTTP dan menggunakan BeautifulSoup perpustakaan python untuk menghuraikan kandungan HTML. Kandungan HTML dibersihkan dengan menukarkan URL-relatif protokol kepada yang mutlak. Seterusnya, kandungan yang dikikis ditukar menjadi fail pdf menggunakan pdfkit .
Model's response = The word "Abracadabra" contains 6 vowels. The vowels are: A, a, a, a, a, and a. Trustworthiness score = 0.6842228802750124 Explanation = This response is untrustworthy due to a lack of consistency in possible responses from the model. Here's one inconsistent alternate response that the model considered (which may not be accurate either): 5.
Selepas menghasilkan PDF (s) dari data yang dikikis, kami menghuraikan PDF ini menggunakan llamaparse . Kami menetapkan arahan parsing untuk mengekstrak kandungan dalam format markdown dan menghuraikan dokumen (s) halaman-bijak bersama dengan nama dokumen dan nombor halaman. Entiti -entiti yang diekstrak (halaman) ini dirujuk sebagai nod . Parser melangkah ke atas nod yang diekstrak dan mengemas kini setiap metadata nod dengan memasuki tajuk kutipan yang memudahkan rujukan kemudian.
Model's response = Let me count the vowels in 'Abracadabra': A-b-r-a-c-a-d-a-b-r-a The vowels are: A, a, a, a, a There are 5 vowels in the word 'Abracadabra'. Trustworthiness score = 0.9378276048845285 Explanation = Did not find a reason to doubt trustworthiness.
Kami kini membuat kedai vektor dan enjin pertanyaan. Kami mentakrifkan template segera pelanggan untuk membimbing tingkah laku LLM dalam menjawab soalan -soalan. Akhirnya, kami membuat enjin pertanyaan dengan indeks yang dibuat untuk menjawab pertanyaan. Untuk setiap pertanyaan, kami mengambil 3 nod teratas dari kedai vektor berdasarkan persamaan semantik mereka dengan pertanyaan. LLM menggunakan nod yang diambil ini untuk menghasilkan jawapan terakhir.
from cleanlab_studio import Studio import markdown from IPython.core.display import display, Markdown # Initialize the Cleanlab Studio with API key studio = Studio("<CLEANLAB_API_KEY>") # Replace with your actual API key # List of models to evaluate models = ["gpt-4o", "claude-3.5-sonnet-v2"] # Define the prompt prompt_text = "Which one of 9.11 and 9.9 is bigger?" # Loop through each model and evaluate for model in models: tlm = studio.TLM(options={"log": ["explanation"], "model": model}) out = tlm.prompt(prompt_text) md_content = f""" ## Model: {model} **Response:** {out['response']} **Trustworthiness Score:** {out['trustworthiness_score']} **Explanation:** {out['log']['explanation']} --- """ display(Markdown(md_content))
Sekarang mari kita menguji kain untuk beberapa pertanyaan dan skor kepercayaan mereka yang sepadan.
import streamlit as st from langchain_groq.chat_models import ChatGroq import os os.environ["GROQ_API_KEY"]=st.secrets["GROQ_API_KEY"] # Initialize the Groq Llama Instant model groq_llm = ChatGroq(model="deepseek-r1-distill-llama-70b", temperature=0.5) prompt = "Which one of 9.11 and 9.9 is bigger?" # Get the response from the model response = groq_llm.invoke(prompt) #Initialize Cleanlab's studio studio = Studio("226eeab91e944b23bd817a46dbe3c8ae") cleanlab_tlm = studio.TLM(options={"log": ["explanation"]}) #for explanations #Get the output containing trustworthiness score and explanation output = cleanlab_tlm.get_trustworthiness_score(prompt, response=response.content.strip()) md_content = f""" ## Model: {model} **Response:** {response.content.strip()} **Trustworthiness Score:** {output['trustworthiness_score']} **Explanation:** {output['log']['explanation']} --- """ display(Markdown(md_content))
pip install llama-parse llama-index-core llama-index-embeddings-huggingface llama-index-llms-cleanlab requests beautifulsoup4 pdfkit nest-asyncio
Menetapkan skor kepercayaan kepada respons LLM, sama ada yang dihasilkan melalui kesimpulan langsung atau kain, membantu menentukan kebolehpercayaan output AI dan mengutamakan pengesahan manusia di mana diperlukan. Ini amat penting untuk domain kritikal di mana tindak balas yang salah atau tidak boleh dipercayai boleh membawa kesan yang teruk.
Itu semua orang! Jika anda suka artikel, sila ikuti saya di medium dan LinkedIn .
Atas ialah kandungan terperinci Cara Mengukur Kebolehpercayaan Respons Model Bahasa Besar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!