paint-brush
Reseo ny Hallucinations LLM amin'ny fampiasana toby fahalalanany@kattasundeep110
569 HENOINA
569 HENOINA

Reseo ny Hallucinations LLM amin'ny fampiasana toby fahalalana

ny Sundeep Goud Katta7m2024/11/07
Read on Terminal Reader

Lava loatra; Mamaky

Ny hallucinations amin'ny LLMs dia azo sorohina na ahena amin'ny alàlan'ny fanatsarana ny valiny amin'ny alàlan'ny fahalalahana. Ny fototry ny fahalalana dia mety ho iray amin'ireo angon'ny fikambanana. Ny valin-tenin'ny LLM dia miorina ary misy valin-kafatra nohatsaraina omena ny mpampiasa.
featured image - Reseo ny Hallucinations LLM amin'ny fampiasana toby fahalalana
Sundeep Goud Katta HackerNoon profile picture
0-item

Inona?

Raha manasa LLM ianao "manolotra fiteny fandaharana tsara ho an'ny fianarana milina"


Ny valintenin'ny LLM dia hoe: "Ny iray amin'ireo fiteny fandaharana atolotra indrindra amin'ny fianarana milina dia Python. Python dia avo lenta…”


Ahoana raha tianao ny orinasanao hanome fampahalalana manokana momba ny fikambanana, izany hoe manatsara ny valiny amin'ny fampahalalana momba ny fikambanana tena izy?


Andeha isika hanao izany rehefa mifandray amin'ny LLM

Nahoana?

LLM malaza toa ny OpenAI's chatGPT, Google's Gemini dia voaofana amin'ny angona azo ampahibemaso. Matetika izy ireo no tsy manana fampahalalana manokana momba ny fandaminana. Misy fotoana izay tian'ny fikambanana hiantehitra amin'ny LLM. Na izany aza, te-hanatsara ny valin-kafatra manokana ho an'ny fikambanana iray manokana na hampiditra fanavakavahana rehefa tsy misy angona fototra.


Ny dingan'ny fanaovana izany dia fantatra amin'ny anarana hoe Grounding of LLM's responses using Knowledge bases.

Ahoana?

Na izany aza, afaka miresaka momba izany fotsiny aho.


Amin'ny maha injeniera mijery sombin-kaody sasany dia manome ahy fahatokisana.


Mampitombo ny fahatokisako ny fanatanterahana azy ireo ary manome fahasambarana koa. Ny fizarana dia manome fahafaham-po ahy 😄

Code? Fa nahoana no tsy! → Python? Mazava ho azy!!

  1. Mametraka tranomboky ilaina

     pip install openai faiss-cpu numpy python-dotenv
  • openai : Mifanerasera amin'ny maodely GPT an'ny OpenAI sy ny embeddings.
  • faiss-cpu : Tranomboky avy amin'ny Facebook AI ho an'ny fikarohana fitoviana mahomby, ampiasaina amin'ny fitahirizana sy fikarohana ireo embeddings.
  • numpy : Ho an'ny fampandehanana isa, ao anatin'izany ny fikarakarana ny embeddings ho vectors.
  • python-dotenv : Mametraka ny fari-piainan'ny tontolo iainana (oh: lakilen'ny API) avy amin'ny rakitra .env azo antoka.


  1. Amboary ny fari-piainana manodidina

    • Mandehana mankany amin'ny https://platform.openai.com/settings/organization/api-keys
    • Tsindrio ny "Mamorona fanalahidy miafina vaovao" araka ny aseho amin'ny sary etsy ambany.
    • Manome antsipiriany, Afaka mampiasa kaonty serivisy ianao. Omeo anarana ho an'ny "ID kaonty serivisy" ary mifidiana tetikasa.
    • Adikao amin'ny solaitrabe ny fanalahidy miafina
    • Mamorona rakitra .env ao amin'ny lahatahiry tetikasanao. Ampio ny fanalahidinao OpenAI API amin'ity rakitra ity.
     OPENAI_API_KEY=your_openai_api_key_here
    • Ity rakitra ity dia mitazona ny fanalahidin'ny API anao ho azo antoka ary misaraka amin'ny kaody.


  2. Atombohy ny fari-piainan'ny mpanjifa sy enta-mavesatra

    • load_dotenv() dia mitondra ny rakitra .env , ary os.getenv("OPENAI_API_KEY") dia maka ny lakile API. Ity fananganana ity dia mitazona ny fanalahidin'ny API ho azo antoka.
 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. Famaritana ny fototra angona / fahalalana fototra
    • Ity rakibolana ity dia ahitana ny fampahalalana fototra momba ny lohahevitra. Raha ny marina, mety ho angona lehibe kokoa na angon-drakitra izany.
 # 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. Mamorona Text Embeddings

    • Fampiasa iray hamoronana fametahana ho an'ny lahatsoratra iray amin'ny alàlan'ny modely fametahana OpenAI. Ity fiasa ity dia miantso ny OpenAI API mba hahazoana ny fampidirana ho an'ny fampidirana lahatsoratra, izay averina amin'ny endrika 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. Fanondroana sy fametahana FAISS ho an'ny angona fototra

    • Mamorona tondro FAISS, rafitra natao ho an'ny fikarohana mitovy haingana, ary fenoy azy amin'ny fampidirana ny angona fototra.
     # 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 : Ny haben'ny embedding tsirairay, ilaina mba hanombohana ny tondro FAISS.
    • index = faiss.IndexFlatL2(dimension) : Mamorona tondro FAISS izay mampiasa halavirana Euclidean (L2) mba hitovitovy.
    • Ho an'ny fidirana tsirairay ao amin'ny grounding_data , ity kaody ity dia miteraka fametahana ary manampy azy amin'ny tondro FAISS.


  3. Vector fikarohana asa

    • Ny Function dia mikaroka ao amin'ny tondron'ny FAISS ho an'ny fidirana angona fototra mitovy indrindra amin'ny fanontaniana iray.
 # 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 : Mamadika ny lahatsoratry ny fanontaniana ho lasa vector embed.
  • FAISS Search : Mikaroka ny tondro ho an'ny vector akaiky indrindra amin'ny fangatahana.
  • Threshold Check : Raha eo ambanin'ny tokonam-baravarana ny halaviran'ny vector akaiky indrindra (D) dia mamerina ny fampahalalana fototra. Raha tsy izany, dia midika izany fa tsy misy fototra azo antoka hita.
  1. Anontanio ny LLM

    Manontany ny LLM izahay amin'ny fampiasana ny modely OpenAI chatgpt api sy gpt-4.

     # 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. Valiny nohatsaraina

    • Ampidiro ny fampahalalana fototra raha misy izany, na
    • Manampy fandavana raha tsy hita ny fampahalalana fototra mifandraika.
     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. Farito ny tena asa

    Ny asa lehibe dia manambatra ny zava-drehetra, ahafahanao mampiditra lohahevitra iray, manontany ny LLM, ary manamarina raha mifanaraka amin'ny angon-drakitra fototra ny valiny.

     # 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()

vokatra

Ataovy ny script

Antsoy ity snippet ity amin'ny fampiasana

 python groundin_llm.py


Ny valiny:

Valiny miorim-paka

fanazavana

Raha tsikaritrareo ny valiny, na dia ny valin'ny LLM aza dia "Iray amin'ireo tenim-pandaharana tsara indrindra ho an'ny fianarana milina ...", ny valinteny mifototra dia hoe "Lehibe ny Java, manome hery ny ankamaroan'ny kaody fianarana Machine, manana andian-tsarimihetsika manankarena izy io. trano famakiam-boky misy”.


Azo atao izany amin'ny alàlan'ny famakiam-boky FAISS an'ny Meta ho an'ny fikarohana vector mifototra amin'ny fitoviana.

Dingana :

  1. Alao aloha ny valintenin'ny LLM.
  2. Hamarino raha manana fampahalalana mifandraika amin'ny fampiasana fikarohana vector ny fototry ny fahalalanay.
  3. Raha misy dia avereno ny valiny avy amin'ny "ny fototra fahalalana"
  4. Raha tsy avereno ny valin-tenin'ny LLM toy ny.


Ity ny kaody: https://github.com/sundeep110/groundingLLMs

Happy Grounding!!