paint-brush
දැනුම පදනම් භාවිතා කරමින් LLM මායාවන් ජය ගන්නවිසින්@kattasundeep110
නව ඉතිහාසය

දැනුම පදනම් භාවිතා කරමින් LLM මායාවන් ජය ගන්න

විසින් Sundeep Goud Katta7m2024/11/07
Read on Terminal Reader

දිග වැඩියි; කියවීමට

දැනුම පදනම් භාවිතා කර ප්‍රතිචාරය වැඩි දියුණු කිරීම මගින් LLM වල මායාවන් මග හැරිය හැක. දැනුම පදනම් ආයතනයේ ඕනෑම දත්තයක් විය හැක. LLM හි ප්‍රතිචාරය පදනම් වී ඇති අතර වැඩි දියුණු කළ ප්‍රතිචාරයක් පරිශීලකයාට ලබා දේ.
featured image - දැනුම පදනම් භාවිතා කරමින් LLM මායාවන් ජය ගන්න
Sundeep Goud Katta HackerNoon profile picture
0-item

කුමක් ද?

ඔබ LLM එකක් ඉල්ලා සිටින්නේ නම් "යන්ත්‍ර ඉගෙනීම සඳහා විශිෂ්ට ක්‍රමලේඛන භාෂාවක් යෝජනා කරන්න"


LLMs ප්‍රතිචාරය වනුයේ: “යන්ත්‍ර ඉගෙනීම සඳහා වඩාත් නිර්දේශිත ක්‍රමලේඛන භාෂාවක් වන්නේ Python ය. Python යනු ඉහළ මට්ටමේ...”


ඔබේ සංවිධානයට සත්‍යාපිත සංවිධානයකට නිශ්චිත තොරතුරු සැපයීමට එනම් සත්‍ය සංවිධාන තොරතුරු සමඟ ප්‍රතිචාරය වැඩි දියුණු කිරීමට ඔබට අවශ්‍ය නම් කුමක් කළ යුතුද?


LLM සමඟ අන්තර් ක්‍රියා කරන විට අපි එය සිදු කරමු

ඇයි?

OpenAI හි chatGPT, Google හි Gemini වැනි ජනප්‍රිය LLMs ප්‍රසිද්ධියේ ලබා ගත හැකි දත්ත මත පුහුණු කර ඇත. ඔවුන් බොහෝ විට සංවිධානයේ නිශ්චිත තොරතුරු නොමැත. සංවිධාන LLM මත විශ්වාසය තැබීමට කැමති ඇතැම් අවස්ථා තිබේ. කෙසේ වෙතත්, කිසියම් සංවිධානයකට විශේෂිත වූ ප්‍රතිචාරය වැඩි දියුණු කිරීමට හෝ පදනම් දත්ත නොමැති විට වියාචන එක් කිරීමට කැමතිය.


මෙය සිදු කිරීමේ ක්‍රියාවලිය දැනුම පදනම් භාවිතා කරමින් LLM හි ප්‍රතිචාරය භූගත කිරීම ලෙස හැඳින්වේ.

කෙසේද?

ඒ අතරම, මට ඒ ගැන කතා කළ හැකිය.


ඉංජිනේරුවෙකු ලෙස සමහර කේත කොටස් දෙස බැලීම මට විශ්වාසයක් ඇති කරයි.


ඒවා ක්‍රියාත්මක කිරීමෙන් මගේ විශ්වාසය ඉහළ නංවනවා වගේම සතුටකුත් ලැබෙනවා. බෙදාගැනීමෙන් මට තෘප්තියක් ලැබෙනවා 😄

කේතය? ඇයි නැත්තේ! → පයිතන්? ඇත්ත වශයෙන්!!

  1. අවශ්ය පුස්තකාල ස්ථාපනය කරන්න

     pip install openai faiss-cpu numpy python-dotenv
  • openai : OpenAI හි GPT ආකෘති සහ කාවැද්දීම් සමඟ අන්තර් ක්‍රියා කිරීමට.
  • faiss-cpu : කාවැද්දීම් ගබඩා කිරීමට සහ සෙවීමට භාවිතා කරන කාර්යක්ෂම සමානතා සෙවීම සඳහා Facebook AI විසින් පුස්තකාලයකි.
  • numpy : දෛශික ලෙස කාවැද්දීම හැසිරවීම ඇතුළු සංඛ්‍යාත්මක මෙහෙයුම් සඳහා.
  • python-dotenv : .env ගොනුවකින් පරිසර විචල්‍යයන් (උදා, API යතුරු) ආරක්ෂිතව පැටවීමට.


  1. පරිසර විචල්‍ය සකසන්න

    • https://platform.openai.com/settings/organization/api-keys වෙත සංචාලනය කරන්න
    • පහත රූපයේ දැක්වෙන පරිදි "නව රහස් යතුර සාදන්න" මත ක්ලික් කරන්න.
    • විස්තර සපයන්න, ඔබට සේවා ගිණුමක් භාවිතා කළ හැක. "සේවා ගිණුම් හැඳුනුම්පත" සඳහා නමක් ලබා දී ව්‍යාපෘතියක් තෝරන්න.
    • රහස් යතුර පසුරු පුවරුවට පිටපත් කරන්න
    • ඔබේ ව්‍යාපෘති නාමාවලියෙහි .env ගොනුවක් සාදන්න. මෙම ගොනුවට ඔබගේ OpenAI API යතුර එක් කරන්න.
     OPENAI_API_KEY=your_openai_api_key_here
    • මෙම ගොනුව ඔබගේ API යතුර ආරක්ෂිතව තබාගෙන කේතයෙන් වෙන් කර තබයි.


  2. සේවාලාභියා ආරම්භ කිරීම සහ පරිසර විචල්‍යයන් පැටවීම

    • 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"))


  1. භූගත දත්ත/දැනුම පදනම නිර්වචනය කරන්න
    • මෙම ශබ්ද කෝෂයේ මාතෘකා සඳහා පදනම් තොරතුරු අඩංගු වේ. ඇත්ත වශයෙන්ම, මෙය විශාල දත්ත කට්ටලයක් හෝ දත්ත සමුදායක් විය හැකිය.
 # 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." }


  1. පෙළ එබ්බවීම් උත්පාදනය කරන්න

    • OpenAI හි කාවැද්දීමේ ආකෘතිය භාවිතයෙන් දී ඇති පෙළ සඳහා කාවැද්දීම උත්පාදනය කිරීමේ කාර්යයකි. මෙම ශ්‍රිතය පෙළ ආදානයක් සඳහා කාවැද්දීම ලබා ගැනීමට OpenAI API අමතයි, එය NumPy අරාවක් ලෙස ආපසු ලබාදේ.
     # 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)


  2. FAISS දර්ශකය සහ භූගත දත්ත සඳහා කාවැද්දීම

    • වේගවත් සමානතා සෙවීම් සඳහා ප්‍රශස්ත කළ ව්‍යුහයක් වන 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 දර්ශකයට එක් කරයි.


  3. දෛශික සෙවුම් කාර්යය

    • Function විසින් විමසුමකට වඩාත්ම සමාන භූගත දත්ත ඇතුළත් කිරීම සඳහා 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) එළිපත්තට පහළින් නම්, එය භූගත තොරතුරු ලබා දෙයි. එසේ නොමැති නම්, එය විශ්වාසදායක පදනමක් සොයාගත නොහැකි බව පෙන්නුම් කරයි.
  1. 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


  1. වැඩි දියුණු කළ ප්රතිචාර

    • පදනම් තොරතුරු තිබේ නම් එය එක් කරයි, හෝ
    • අදාළ පදනම් තොරතුරු සොයා නොගත්තොත් වියාචනයක් එක් කරයි.
     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.)"
  2. ප්රධාන කාර්යය නිර්වචනය කරන්න

    ප්‍රධාන කාර්යය සියල්ල ඒකාබද්ධ කරයි, ඔබට මාතෘකාවක් ඇතුළත් කිරීමට, 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 පුස්තකාලය භාවිතයෙන් මෙය කළ හැක.

ක්රියාවලිය :

  1. මුලින්ම LLMs ප්‍රතිචාරය ලබාගන්න.
  2. දෛශික සෙවුම භාවිතයෙන් අපගේ දැනුම් පදනමක අදාළ තොරතුරු තිබේදැයි පරීක්ෂා කරන්න.
  3. පවතී නම් "දැනුම පදනම" වෙතින් ප්‍රතිචාරය ආපසු දෙන්න
  4. එසේ නොවේ නම් LLM ප්‍රතිචාරය එලෙසම ආපසු එවන්න.


මෙන්න කේතය: https://github.com/sundeep110/groundingLLMs

සුභ බිමක්!!