ඔබ LLM එකක් ඉල්ලා සිටින්නේ නම් "යන්ත්ර ඉගෙනීම සඳහා විශිෂ්ට ක්රමලේඛන භාෂාවක් යෝජනා කරන්න"
LLMs ප්රතිචාරය වනුයේ: “යන්ත්ර ඉගෙනීම සඳහා වඩාත් නිර්දේශිත ක්රමලේඛන භාෂාවක් වන්නේ Python ය. Python යනු ඉහළ මට්ටමේ...”
ඔබේ සංවිධානයට සත්යාපිත සංවිධානයකට නිශ්චිත තොරතුරු සැපයීමට එනම් සත්ය සංවිධාන තොරතුරු සමඟ ප්රතිචාරය වැඩි දියුණු කිරීමට ඔබට අවශ්ය නම් කුමක් කළ යුතුද?
LLM සමඟ අන්තර් ක්රියා කරන විට අපි එය සිදු කරමු
OpenAI හි chatGPT, Google හි Gemini වැනි ජනප්රිය LLMs ප්රසිද්ධියේ ලබා ගත හැකි දත්ත මත පුහුණු කර ඇත. ඔවුන් බොහෝ විට සංවිධානයේ නිශ්චිත තොරතුරු නොමැත. සංවිධාන LLM මත විශ්වාසය තැබීමට කැමති ඇතැම් අවස්ථා තිබේ. කෙසේ වෙතත්, කිසියම් සංවිධානයකට විශේෂිත වූ ප්රතිචාරය වැඩි දියුණු කිරීමට හෝ පදනම් දත්ත නොමැති විට වියාචන එක් කිරීමට කැමතිය.
මෙය සිදු කිරීමේ ක්රියාවලිය දැනුම පදනම් භාවිතා කරමින් LLM හි ප්රතිචාරය භූගත කිරීම ලෙස හැඳින්වේ.
ඒ අතරම, මට ඒ ගැන කතා කළ හැකිය.
ඉංජිනේරුවෙකු ලෙස සමහර කේත කොටස් දෙස බැලීම මට විශ්වාසයක් ඇති කරයි.
ඒවා ක්රියාත්මක කිරීමෙන් මගේ විශ්වාසය ඉහළ නංවනවා වගේම සතුටකුත් ලැබෙනවා. බෙදාගැනීමෙන් මට තෘප්තියක් ලැබෙනවා 😄
අවශ්ය පුස්තකාල ස්ථාපනය කරන්න
pip install openai faiss-cpu numpy python-dotenv
openai
: OpenAI හි GPT ආකෘති සහ කාවැද්දීම් සමඟ අන්තර් ක්රියා කිරීමට.faiss-cpu
: කාවැද්දීම් ගබඩා කිරීමට සහ සෙවීමට භාවිතා කරන කාර්යක්ෂම සමානතා සෙවීම සඳහා Facebook AI විසින් පුස්තකාලයකි.numpy
: දෛශික ලෙස කාවැද්දීම හැසිරවීම ඇතුළු සංඛ්යාත්මක මෙහෙයුම් සඳහා.python-dotenv
: .env
ගොනුවකින් පරිසර විචල්යයන් (උදා, API යතුරු) ආරක්ෂිතව පැටවීමට.
පරිසර විචල්ය සකසන්න
.env
ගොනුවක් සාදන්න. මෙම ගොනුවට ඔබගේ OpenAI API යතුර එක් කරන්න. OPENAI_API_KEY=your_openai_api_key_here
මෙම ගොනුව ඔබගේ API යතුර ආරක්ෂිතව තබාගෙන කේතයෙන් වෙන් කර තබයි.
සේවාලාභියා ආරම්භ කිරීම සහ පරිසර විචල්යයන් පැටවීම
load_dotenv()
.env
ගොනුව පූරණය කරයි, සහ os.getenv("OPENAI_API_KEY")
API යතුර ලබා ගනී. මෙම පිහිටුවීම ඔබගේ API යතුර ආරක්ෂිතව තබයි. import os from openai import OpenAI from dotenv import load_dotenv import faiss import numpy as np # Load environment variables load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Grounding data grounding_data = { "Python": "Python is dynamically typed, which can be a double-edged sword. While it makes coding faster and more flexible, it can lead to runtime errors that might have been caught at compile-time in statically-typed languages.", "LLMs": "Large Language Models (LLMs) are neural networks trained on large text datasets.", "Data Science": "Data Science involves using algorithms, data analysis, and machine learning to understand and interpret data.", "Java": "Java is great, it powers most of the machine learning code, and has a rich set of libraries available." }
පෙළ එබ්බවීම් උත්පාදනය කරන්න
# Function to generate embedding for a text def get_embedding(text): response = client.embeddings.create( model="text-embedding-ada-002", input=text ) return np.array(response.data[0].embedding)
FAISS දර්ශකය සහ භූගත දත්ත සඳහා කාවැද්දීම
# Create FAISS index and populate it with grounding data embeddings dimension = len(get_embedding("test")) # Dimension of embeddings index = faiss.IndexFlatL2(dimension) # L2 distance index for similarity search grounding_embeddings = [] grounding_keys = list(grounding_data.keys()) for key, text in grounding_data.items(): embedding = get_embedding(text) grounding_embeddings.append(embedding) index.add(np.array([embedding]).astype("float32"))
dimension
: FAISS දර්ශකය ආරම්භ කිරීමට අවශ්ය එක් එක් කාවැද්දීමේ ප්රමාණය.index = faiss.IndexFlatL2(dimension)
: සමානත්වය සඳහා යුක්ලීඩීය දුර (L2) භාවිතා කරන FAISS දර්ශකයක් නිර්මාණය කරයි.grounding_data
හි එක් එක් ප්රවේශයක් සඳහා, මෙම කේතය කාවැද්දීමක් ජනනය කර එය FAISS දර්ශකයට එක් කරයි.
දෛශික සෙවුම් කාර්යය
# Function to perform vector search on FAISS def vector_search(query_text, threshold=0.8): query_embedding = get_embedding(query_text).astype("float32").reshape(1, -1) D, I = index.search(query_embedding, 1) # Search for the closest vector if I[0][0] != -1 and D[0][0] <= threshold: return grounding_data[grounding_keys[I[0][0]]] else: return None # No similar grounding information available
Query Embedding
: විමසුම් පෙළ කාවැද්දීමේ දෛශිකයක් බවට පරිවර්තනය කරයි.FAISS Search
: විමසුමට ආසන්නතම දෛශිකය සඳහා දර්ශකය සොයයි.Threshold Check
: ආසන්නතම දෛශිකයේ දුර (D) එළිපත්තට පහළින් නම්, එය භූගත තොරතුරු ලබා දෙයි. එසේ නොමැති නම්, එය විශ්වාසදායක පදනමක් සොයාගත නොහැකි බව පෙන්නුම් කරයි.LLM විමසන්න
අපි OpenAI හි chatgpt api සහ gpt-4 ආකෘතිය භාවිතයෙන් LLM විමසන්නෙමු.
# Query the LLM def query_llm(prompt): response = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt} ] ) return response.choices[0].message.content
වැඩි දියුණු කළ ප්රතිචාර
def enhance_response(topic, llm_response): grounding_info = vector_search(llm_response) if grounding_info: # Check if the LLM's response aligns well with grounding information return f"{llm_response}\n\n(Verified Information: {grounding_info})" else: # Add a disclaimer when no grounding data is available return f"{llm_response}\n\n(Disclaimer: This information could not be verified against known data and may contain inaccuracies.)"
ප්රධාන කාර්යය නිර්වචනය කරන්න
ප්රධාන කාර්යය සියල්ල ඒකාබද්ධ කරයි, ඔබට මාතෘකාවක් ඇතුළත් කිරීමට, LLM විමසීමට සහ ප්රතිචාරය භූගත දත්ත සමඟ සමපාත වන්නේ දැයි පරීක්ෂා කිරීමට ඉඩ සලසයි.
# Main function to execute the grounding check def main(): topic = input("Enter a topic: ") llm_response = query_llm(f"What can you tell me about {topic}?") grounding_info = vector_search(llm_response, threshold=0.8) print(f"LLM Response: {llm_response}") print(f"Grounding Information: {grounding_info}") if grounding_info != "No grounding information available": print("Response is grounded and reliable.") else: print("Potential hallucination detected. Using grounded information instead.") print(f"Grounded Answer: {grounding_info}") if __name__ == "__main__": main()
භාවිතයෙන් මෙම ස්නිපටය ඉල්ලා සිටින්න
python groundin_llm.py
ප්රතිචාරය:
ඔබ ප්රතිචාරය දුටුවහොත්, LLM වෙතින් ලැබෙන ප්රතිචාරය “යන්ත්ර ඉගෙනීම සඳහා වඩාත්ම නිර්දේශිත ක්රමලේඛන භාෂාවක්…” වුවද, පදනම් වූ ප්රතිචාරය වූයේ “ජාවා විශිෂ්ටයි, එය යන්ත්ර ඉගෙනීමේ කේතයෙන් බොහොමයක් බලගන්වයි, එහි පොහොසත් කට්ටලයක් ඇත. පුස්තකාල තිබේ."
සමානත්වය මත දෛශික සෙවීම සඳහා Meta's FAISS පුස්තකාලය භාවිතයෙන් මෙය කළ හැක.
ක්රියාවලිය :
මෙන්න කේතය: https://github.com/sundeep110/groundingLLMs
සුභ බිමක්!!