Prompt engineering

Null til Avansert Prompt Engineering med Langchain i Python

mm
Legg til Unite.AI blant dine foretrukne kilder pÃĨ Google

En viktig aspekt ved store sprÃĨkmodeller (LLM) er antallet parametre disse modellene bruker for ÃĨ lÃĶre. Jo flere parametre en modell har, jo bedre kan den forstÃĨ forholdet mellom ord og fraser. Dette betyr at modeller med milliarder av parametre har kapasiteten til ÃĨ generere forskjellige kreative tekstformater og svare pÃĨ ÃĨpne og utfordrende spÃļrsmÃĨl pÃĨ en informativ mÃĨte.

LLM-er som ChatGPT, som bruker Transformer-modellen, er dyktige i ÃĨ forstÃĨ og generere menneskesprÃĨk, noe som gjÃļr dem nyttige for applikasjoner som krever naturlig sprÃĨkforstÃĨelse. Likevel har de ikke uten begrensninger, som inkluderer foreldet kunnskap, evne til ÃĨ samhandle med eksterne systemer, manglende kontekstforstÃĨelse og noen ganger genererer de plausibelt lydende, men feil eller meningslÃļse svar, blant annet.

Å lÃļse disse begrensningene krever integrering av LLM-er med eksterne datakilder og funksjoner, noe som kan vÃĶre komplekst og kreve omfattende kode- og datahÃĨndteringsevner. Dette, kombinert med utfordringene ved ÃĨ forstÃĨ AI-konsepter og komplekse algoritmer, bidrar til lÃĶringkurven som er forbundet med ÃĨ utvikle applikasjoner som bruker LLM-er.

Likevel kan integreringen av LLM-er med andre verktÃļy for ÃĨ danne LLM-drevne applikasjoner kunne omdefinere vÃĨr digitale landskap. Potensialet for slike applikasjoner er enormt, inkludert ÃĨ forbedre effisiens og produktivitet, forenkle oppgaver, forbedre beslutningstaking og tilby personlige opplevelser.

I denne artikkelen vil vi dykke dyptere inn i disse problemene, utforske avanserte teknikker for prompt engineering med Langchain, tilby klare forklaringer, praktiske eksempler og trinnvis instruksjoner pÃĨ hvordan ÃĨ implementere dem.

Langchain, en state-of-the-art-bibliotek, bringer bekvemmelighet og fleksibilitet til ÃĨ designe, implementere og justere prompter. Etterhvert som vi pakker ut prinsippene og praksisene for prompt engineering, vil du lÃĶre hvordan du kan utnytte Langchains kraftfulle funksjoner for ÃĨ utnytte styrkene til SOTA Generative AI-modeller som GPT-4.

ForstÃĨ Prompter

FÃļr vi dykker inn i tekniske detaljer om prompt engineering, er det essensielt ÃĨ forstÃĨ konseptet med prompter og deres betydning.

En ‘prompt‘ er en sekvens av token som brukes som inndata til en sprÃĨkmodell, som instruerer den til ÃĨ generere en bestemt type svar. Prompter spiller en avgjÃļrende rolle i ÃĨ styre modellens atferd. De kan pÃĨvirke kvaliteten pÃĨ den genererte teksten, og nÃĨr de er konstruert korrekt, kan de hjelpe modellen til ÃĨ gi innsiktsfulle, nÃļyaktige og kontekstspesifikke resultater.

Prompt engineering er kunsten og vitenskapen om ÃĨ designe effektive prompter. MÃĨlet er ÃĨ fremkalle det Ãļnskede utgangspunktet fra en sprÃĨkmodell. Ved ÃĨ velge og strukturere prompter nÃļye, kan en guide modellen mot ÃĨ generere mer nÃļyaktige og relevante svar. I praksis innebÃĶrer dette ÃĨ finjustere inndatafrasene for ÃĨ tilpasse modellens trening og struktur-bias.

Sophistikasjonen i prompt engineering spenner fra enkle tekniker, som ÃĨ mate modellen med relevante nÃļkkelord, til mer avanserte metoder som involverer design av komplekse, strukturerte prompter som utnytter modellens interne mekanismer til sin fordel.

Langchain: Det Raskest Voksende Prompt-verktÃļyet

LangChain, lansert i oktober 2022 av Harrison Chase, har blitt ett av de hÃļyest ratede ÃĨpne kildekode-rammeverkene pÃĨ GitHub i 2023. Det tilbyr et forenklet og standardisert grensesnitt for ÃĨ inkorporere store sprÃĨkmodeller (LLM-er) i applikasjoner. Det tilbyr ogsÃĨ et funksjonsrikt grensesnitt for prompt engineering, som lar utviklere eksperimentere med forskjellige strategier og evaluere resultater. Ved ÃĨ bruke Langchain, kan du utfÃļre prompt engineering-oppgaver mer effektivt og intuitivt.

LangFlow fungerer som et brukergrensesnitt for ÃĨ orchestrere LangChain-komponenter i en eksekverbar flowchart, som muliggjÃļr rask prototyping og eksperimentering.

LangChain fyller en kritisk lukket i AI-utvikling for massene. Det muliggjÃļr en rekke NLP-applikasjoner som virtuelle assistenter, innholdsgenerering, spÃļrsmÃĨl-svar-systemer og mer, for ÃĨ lÃļse en rekke virkelige problemer.

I stedet for ÃĨ vÃĶre en selvstendig modell eller leverandÃļr, forenkler LangChain interaksjonen med diverse modeller, og utvider kapasiteten til LLM-applikasjoner utenfor begrensningene til et enkelt API-anrop.

Arkitekturen til LangChain

 

LangChains hovedkomponenter inkluderer Model I/O, Prompt-maler, Minne, Agenter og Kjeder.

Model I/O

LangChain muliggjÃļr en sÃļmlÃļs tilkobling til forskjellige sprÃĨkmodeller ved ÃĨ pakke dem inn i et standardisert grensesnitt kjent som Model I/O. Dette muliggjÃļr en enkel modell-skifter for optimalisering eller bedre ytelse. LangChain stÃļtter flere sprÃĨkmodell-leverandÃļrer, inkludert OpenAI, HuggingFace, Azure, Fireworks og mer.

Prompt-maler

Disse brukes til ÃĨ hÃĨndtere og optimalisere interaksjoner med LLM-er ved ÃĨ gi konsise instruksjoner eller eksempler. Å optimalisere prompter forbedrer modellens ytelse, og deres fleksibilitet bidrar betydelig til inndata-prosessen.

Et enkelt eksempel pÃĨ en prompt-mal:


<p>from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=[&amp;quot;emne&amp;quot;],
template=&amp;quot;Hva er de nyeste fremgangene i feltet {emne}?&amp;quot;)
print(prompt.format(emne=&amp;quot;Naturlig SprÃĨkbehandling&amp;quot;))</p>

Som vi gÃĨr videre i kompleksitet, mÃļter vi mer sofistikerte mÃļnster i LangChain, som f.eks. Reason and Act (ReAct)-mÃļnsteret. ReAct er et viktig mÃļnster for handlingseksekvering hvor agenten tildekker en oppgave til et egnet verktÃļy, tilpasser inndata for det og parserer utdata for ÃĨ fullfÃļre oppgaven. Python-eksempelet nedenfor viser et ReAct-mÃļnster. Det demonstrerer hvordan en prompt er strukturert i LangChain, ved ÃĨ bruke en rekke tanker og handlinger for ÃĨ granske et problem og produsere et endelig svar:

PREFIX = &amp;quot;&amp;quot;&amp;quot;Svar pÃĨ fÃļlgende spÃļrsmÃĨl ved ÃĨ bruke de gitt verktÃļyene:&amp;quot;&amp;quot;&amp;quot;
FORMAT_INSTRUCTIONS = &amp;quot;&amp;quot;&amp;quot;FÃļlg denne formaten:
SpÃļrsmÃĨl: {input_spÃļrsmÃĨl}
Tanke: din fÃļrste tanke om spÃļrsmÃĨlet
Handling: din valgte handling fra [{tool_names}]
Handling Inndata: ditt inndata for handlingen
Observasjon: handlingens resultat&amp;quot;&amp;quot;&amp;quot;
SUFFIX = &amp;quot;&amp;quot;&amp;quot;Start!
SpÃļrsmÃĨl: {input}
Tanke:{agent_scratchpad}&amp;quot;&amp;quot;&amp;quot;

Minne

Minne er et kritisk konsept i LangChain, som muliggjÃļr at LLM-er og verktÃļy kan beholde informasjon over tid. Dette tilstandsbaserte atferd forbedrer ytelsen til LangChain-applikasjoner ved ÃĨ lagre tidligere svar, brukerinteraksjoner, tilstandsinformasjon og agentens mÃĨl. ConversationBufferMemory- og ConversationBufferWindowMemory-strategier hjelper med ÃĨ holde spor pÃĨ hele eller nylige deler av en samtale, henholdsvis. For en mer sofistert tilnÃĶrming, tillater ConversationKGMemory-strategien ÃĨ kode samtalen som en kunnskapsgraf som kan mates tilbake i prompter eller brukes til ÃĨ forutsi svar uten ÃĨ ringe LLM.

Agenter

En agent samhandler med verden ved ÃĨ utfÃļre handlinger og oppgaver. I LangChain kombinerer agenter verktÃļy og kjeder for oppgave-eksekvering. Den kan etablere en tilkobling til den ytre verden for informasjonshenting for ÃĨ supplere LLM-kunnskap, og dermed overvinne deres innebygde begrensninger. De kan bestemme ÃĨ overfÃļre beregninger til en regnemaskin eller Python-tolker avhengig av situasjonen.

Agenter er utstyrt med underkomponenter:

  • VerktÃļy: Disse er funksjonelle komponenter.
  • VerktÃļykasser: Samlinger av verktÃļy.
  • Agent-eksekutorer: Dette er eksekveringsmekanismen som tillater valg mellom verktÃļy.

Agenter i LangChain fÃļlger ogsÃĨ Zero-shot ReAct-mÃļnsteret, hvor avgjÃļrelsen baseres bare pÃĨ verktÃļyets beskrivelse. Denne mekanismen kan utvides med minne for ÃĨ ta hensyn til hele samtalehistorien. Med ReAct, i stedet for ÃĨ be en LLM om ÃĨ autocomplete din tekst, kan du prompte den til ÃĨ svare i en tanke/handling/observasjon-syklus.

Kjeder

Kjeder, som navnet tilsier, er sekvenser av operasjoner som tillater LangChain-biblioteket ÃĨ behandle sprÃĨkmodell-inndata og -utdata sÃļmlÃļst. Disse integrale komponentene i LangChain bestÃĨr grunnleggende av lenker, som kan vÃĶre andre kjeder eller primitiver som prompter, sprÃĨkmodeller eller verktÃļy.

Tenk pÃĨ en kjede som en samlebÃĨnd i en fabrikk. Hver trinn pÃĨ dette bÃĨndet representerer en bestemt operasjon, som kan vÃĶre ÃĨ invokere en sprÃĨkmodell, ÃĨ bruke en Python-funksjon pÃĨ en tekst eller ÃĨ prompte modellen pÃĨ en bestemt mÃĨte.

LangChain kategoriserer sine kjeder i tre typer: Utility-kjeder, Generiske kjeder og Kombiner Dokumenter-kjeder. Vi skal dykke inn i Utility- og Generiske kjeder for vÃĨr diskusjon.

  • Utility-kjeder er spesifikt designet for ÃĨ trekke ut presise svar fra sprÃĨkmodeller for snevert definerte oppgaver. For eksempel, la oss se pÃĨ LLMMathChain. Denne utility-kjeden muliggjÃļr at sprÃĨkmodeller kan utfÃļre matematiske beregninger. Den aksepterer et spÃļrsmÃĨl pÃĨ naturlig sprÃĨk, og sprÃĨkmodellen genererer deretter en Python-kodebit som sÃĨ blir kjÃļrt for ÃĨ produsere svaret.
  • Generiske kjeder, pÃĨ den andre siden, tjener som byggeklosser for andre kjeder, men kan ikke brukes direkte pÃĨ egen hÃĨnd. Disse kjedene, som f.eks. LLMChain, er grunnleggende og kombineres ofte med andre kjeder for ÃĨ utfÃļre komplekse oppgaver. For eksempel blir LLMChain ofte brukt til ÃĨ spÃļrre en sprÃĨkmodell-objekt ved ÃĨ formatere inndata basert pÃĨ en gitt prompt-mal og deretter passer det til sprÃĨkmodellen.

Trinnvis Implementering av Prompt Engineering med Langchain

Vi skal gÃĨ gjennom prosessen med ÃĨ implementere prompt engineering med Langchain. FÃļr du fortsetter, sikre deg at du har installert nÃļdvendig programvare og pakker.

Du kan dra nytte av populÃĶre verktÃļy som Docker, Conda, Pip og Poetry for ÃĨ sette opp LangChain. De relevante installasjonsfilene for hver av disse metodene kan finnes i LangChain-repositoriet pÃĨ https://github.com/benman1/generative_ai_with_langchain. Dette inkluderer en Dockerfile for Docker, en requirements.txt for Pip, en pyproject.toml for Poetry og en langchain_ai.yml-fil for Conda.

I vÃĨr artikkel vil vi bruke Pip, standardpakkeadministratoren for Python, for ÃĨ installere og hÃĨndtere tredjepartsbiblioteker. Hvis det ikke er inkludert i din Python-distribusjon, kan du installere Pip ved ÃĨ fÃļlge instruksjonene pÃĨ https://pip.pypa.io/.

For ÃĨ installere en bibliotek med Pip, bruk kommandoen pip install bibliotek_navn.

Likevel hÃĨndterer Pip ikke miljÃļer pÃĨ egen hÃĨnd. For ÃĨ hÃĨndtere forskjellige miljÃļer, bruker vi verktÃļyet virtualenv.

I neste seksjon skal vi diskutere modell-integrasjoner.

Trinn 1: Sette opp Langchain

FÃļrst mÃĨ du installere Langchain-pakken. Vi bruker Windows OS. KjÃļr fÃļlgende kommando i terminalen for ÃĨ installere det:


pip install langchain

Trinn 2: Importere Langchain og andre nÃļdvendige moduler

Neste, importer Langchain sammen med andre nÃļdvendige moduler. Her importerer vi ogsÃĨ transformers-biblioteket, som er mye brukt i NLP-oppdrag.


<p>import langchain
from transformers import AutoModelWithLMHead, AutoTokenizer

Trinn 3: Last inn ForhÃĨnds-trent Modell

Open AI

OpenAI-modeller kan vÃĶre praktisk ÃĨ bruke med LangChain-biblioteket eller OpenAI Python-klientbiblioteket. Notabelt tilbyr OpenAI en Innlejring-klasse for tekst-innlejring-modeller. To nÃļkkel-LLM-modeller er GPT-3.5 og GPT-4, som hovedsakelig skilles fra hverandre i token-lengde. Prising for hver modell kan finnes pÃĨ OpenAI-nettstedet. Mens det finnes mer avanserte modeller som GPT-4-32K som har hÃļyere token-aksept, er deres tilgjengelighet via API ikke alltid garantert.

Tilgang til disse modellene krever en OpenAI-API-nÃļkkel. Dette kan gjÃļres ved ÃĨ opprette en konto pÃĨ OpenAI-plattformen, sette opp faktureringsinformasjon og generere en ny hemmelig nÃļkkel.


<p>import os
os.environ[&amp;quot;OPENAI_API_KEY&amp;quot;] = &#039;din-openai-token&#039;</p>

Etter ÃĨ ha opprettet nÃļkkelen, kan du sette den som en miljÃļvariabel (OPENAI_API_KEY) eller overfÃļre den som en parameter under klassen-oppbygging for OpenAI-anrop.

VurdÃĐr en LangChain-skript for ÃĨ vise interaksjonen med OpenAI-modellene:

from langchain.llms import OpenAI
llm = OpenAI(model_name=&amp;quot;text-davinci-003&amp;quot;)
# LLM tar en prompt som inndata og utgang er en fullfÃļring
prompt = &amp;quot;hvem er presidenten i USA?&amp;quot;
fullfÃļring = llm(prompt)

<p>Den nÃĨvÃĶrende presidenten i USA er Joe Biden.</p>

I dette eksempelet initialiseres en agent for ÃĨ utfÃļre beregninger. Agenten tar inndata, en enkel addisjonsoppgave, prosesserer det ved hjelp av den tilgjengelige OpenAI-modellen og returnerer resultatet.

Hugging

Hugging Face er et Gratis-til-bruk Transformers Python-bibliotek, kompatibelt med PyTorch, TensorFlow og JAX, og inkluderer implementeringer av modeller som BERT, T5, osv.

Hugging Face tilbyr ogsÃĨ Hugging Face Hub, en plattform for vertshosting av kode-repositorier, maskinlÃĶringsmodeller, datasett og web-applikasjoner.

For ÃĨ bruke Hugging Face som en leverandÃļr for dine modeller, mÃĨ du ha en konto og API-nÃļkler, som kan bli oppnÃĨdd fra deres nettsted. Token kan bli gjort tilgjengelig i din miljÃļ som HUGGINGFACEHUB_API_TOKEN.

VurdÃĐr fÃļlgende Python-utdrag som bruker en ÃĨpen kilde-modell utviklet av Google (GOOGL ), Flan-T5-XXL-modellen:

from langchain.llms import HuggingFaceHub

<p>llm = HuggingFaceHub(model_kwargs={&amp;quot;temperature&amp;quot;: 0.5, &amp;quot;max_length&amp;quot;: 64},repo_id=&amp;quot;google/flan-t5-xxl&amp;quot;)
prompt = &amp;quot;I hvilket land ligger Tokyo?&amp;quot;
fullfÃļring = llm(prompt)
print(fullfÃļring)</p>

Dette skriptet tar et spÃļrsmÃĨl som inndata og returnerer et svar, og viser kunnskapen og prediksjons-evnen til modellen.

Trinn 4: Grunnleggende Prompt Engineering

For ÃĨ starte, vil vi generere en enkel prompt og se hvordan modellen responderer.

prompt = &#039;Oversett fÃļlgende engelsk tekst til fransk: &amp;quot;{0}&amp;quot;&#039;
input_tekst = &#039;Hei, hvordan har du det?&#039;
input_ids = tokenizer.encode(prompt.format(input_tekst), return_tensors=&#039;pt&#039;)

<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

I ovenstÃĨende kode-utdrag gir vi en prompt for ÃĨ oversette engelsk tekst til fransk. SprÃĨkmodellen prÃļver deretter ÃĨ oversette den gitt teksten basert pÃĨ prompten.

Trinn 5: Avansert Prompt Engineering

Mens ovenstÃĨende tilnÃĶrming fungerer bra, tar den ikke fullt ut fordelen av prompt engineering. La oss forbedre det ved ÃĨ innfÃļre mer komplekse prompt-strukturer.

prompt = &#039;Som en svÃĶrt dyktig fransk oversetter, oversett fÃļlgende engelsk tekst til fransk: &amp;quot;{0}&amp;quot;&#039;
input_tekst = &#039;Hei, hvordan har du det?&#039;
input_ids = tokenizer.encode(prompt.format(input_tekst), return_tensors=&#039;pt&#039;)

<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

I dette kode-utdraget modifiserer vi prompten til ÃĨ antyde at oversettelsen utfÃļres av en ‘svÃĶrt dyktig fransk oversetter’. Endringen i prompten kan fÃļre til forbedrede oversettelser, ettersom modellen nÃĨ antar en persona av en ekspert.

Bygging av et Akademisk Litteratur SpÃļrsmÃĨl og Svar-system med Langchain

Vi skal bygge et Akademisk Litteratur SpÃļrsmÃĨl og Svar-system med LangChain som kan svare pÃĨ spÃļrsmÃĨl om nylig publiserte akademiske artikler.

FÃļrst og fremst, for ÃĨ sette opp vÃĨrt miljÃļ, installerer vi de nÃļdvendige avhengighetene.

pip install langchain arxiv openai transformers faiss-cpu

Etter installasjonen, oppretter vi en ny Python-notebok og importerer de nÃļdvendige bibliotekene:

from langchain.llms import OpenAI
from langchain.chains.qa_with_sources import load_qa_with_sources_chain
from langchain.docstore.document import Document
import arxiv

Kjernen i vÃĨrt SpÃļrsmÃĨl og Svar-system er evnen til ÃĨ hente relevante akademiske artikler relatert til et bestemt felt, her betrakter vi Naturlig SprÃĨkbehandling (NLP), ved hjelp av arXiv-akademisk database. For ÃĨ utfÃļre dette, definerer vi en funksjon get_arxiv_data(max_results=10). Denne funksjonen samler de nyeste NLP-artikkelsummer fra arXiv og innkapsler dem i LangChain-dokumentobjekter, ved ÃĨ bruke sammenfattingen som innhold og den unike innfÃļrsels-ID som kilde.

Vi skal bruke arXiv-API til ÃĨ hente nylige artikler relatert til NLP:


<p>def get_arxiv_data(max_results=10):
sÃļk = arxiv.SÃļk(
spÃļrring=&amp;quot;NLP&amp;quot;,
max_results=max_results,
sort_by=arxiv.SortKriterium.InnsendtDato,
)</p>

dokumenter = []

<p>for resultat in sÃļk.resultater():
dokumenter.append(Dokument(
side_innhold=resultat.sammenfatting,
metadata={&amp;quot;kilde&amp;quot;: resultat.innfÃļrsels_id},
))</p>

return dokumenter

Denne funksjonen henter sammenfatninger av de nyeste NLP-artiklene fra arXiv og konverterer dem til LangChain-dokumentobjekter. Vi bruker artikkelsammenfatningen og dens unike innfÃļrsels-ID (URL til artikkelen) som innhold og kilde, henholdsvis.

def print_svar(spÃļrsmÃĨl):
print(
kjede(
{
&amp;quot;inndata_dokumenter&amp;quot;: kilder,
&amp;quot;spÃļrsmÃĨl&amp;quot;: spÃļrsmÃĨl,
},
returner_bare_uttak=True,
)[&amp;quot;utgang_tekst&amp;quot;]
)

La oss definere vÃĨr korpus og sette opp LangChain:

kilder = get_arxiv_data(2)
kjede = load_qa_with_sources_chain(OpenAI(temperatur=0))

Med vÃĨrt akademiske SpÃļrsmÃĨl og Svar-system nÃĨ klart, kan vi teste det ved ÃĨ stille et spÃļrsmÃĨl:

print_svar(&amp;quot;Hva er de nyeste fremgangene i NLP?&amp;quot;)

Utgangen vil vÃĶre svaret pÃĨ ditt spÃļrsmÃĨl, med kildehenvisninger til hvor informasjonen ble hentet fra. For eksempel:


<p>De nyeste fremgangene i NLP inkluderer Retriever-augmenterte instruksjonsfÃļlgende modeller og en ny beregningsramme for ÃĨ lÃļse alternerende strÃļm-optimalt flyt (ACOPF)-problemer ved hjelp av grafikkprosessorer (GPUer).
KILDER: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1

Du kan enkelt bytte modeller eller endre systemet etter dine behov. For eksempel, her bytter vi til GPT-4, som resulterer i et mye bedre og mer detaljert svar.

kilder = get_arxiv_data(2)
kjede = load_qa_with_sources_chain(OpenAI(model_navn=&amp;quot;gpt-4&amp;quot;, temperatur=0))

<p>De nyeste fremgangene i Naturlig SprÃĨkbehandling (NLP) inkluderer utviklingen av retriever-augmenterte instruksjonsfÃļlgende modeller for informasjonssÃļkende oppgaver som spÃļrsmÃĨl-svar (QA). Disse modellene kan tilpasses til forskjellige informasjonsdomener og oppgaver uten ekstra finjustering. Likevel, de kan ofte streve med ÃĨ holde seg til den gitt kunnskapen og kan hallucinere i deres svar. En annen fremgang er innfÃļringen av en beregningsramme for ÃĨ lÃļse alternerende strÃļm-optimalt flyt (ACOPF)-problemer ved hjelp av grafikkprosessorer (GPUer). Denne tilnÃĶrmingen utnytter en enkelt-instruksjon, multi-data (SIMD)-abstraksjon av ikke-lineÃĶre programmer (NLP) og anvender en kondensert-rom-interiÃļrpunktmetode (IPM) med en ulikhet-relaksasjon-strategi. Denne strategien tillater faktorisering av KKT-matrisen uten numerisk pivoting, som tidligere har hindret paralleliseringen av IPM-algoritmen.
KILDER: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1</p>

En token i GPT-4 kan vÃĶre sÃĨ kort som ett tegn eller sÃĨ lang som ett ord. For eksempel, GPT-4-32K kan prosessere opptil 32 000 token i ett enkelt lÃļp, mens GPT-4-8K og GPT-3.5-turbo stÃļtter 8 000 og 4 000 token, henholdsvis. Likevel, det er viktig ÃĨ merke seg at hver interaksjon med disse modellene kommer med en kostnad som er direkte proporsjonal med antall token prosessert, enten det er inndata eller utgang.

I sammenheng med vÃĨrt SpÃļrsmÃĨl og Svar-system, hvis en del av den akademiske litteraturen overstiger maksimumstoken-grensen, vil systemet feile i ÃĨ prosessere den i sin helhet, og dermed pÃĨvirke kvaliteten og fullstendigheten av svarene. For ÃĨ lÃļse dette problemet, kan teksten brytes ned i mindre deler som overholder token-grensen.

FAISS (Facebook AI Similarity Search) (META ) hjelper med ÃĨ raskt finne de mest relevante tekst-delene relatert til brukerens spÃļrsmÃĨl. Det skaper en vektor-representasjon av hver tekst-del og bruker disse vektorene til ÃĨ identifisere og hente de delene som er mest like vektor-representasjonen av et gitt spÃļrsmÃĨl.

Det er viktig ÃĨ huske pÃĨ at selv med bruk av verktÃļy som FAISS, kan nÃļdvendigheten av ÃĨ dele teksten inn i mindre deler pÃĨ grunn av token-begrensninger noen ganger fÃļre til tap av kontekst, og pÃĨvirke kvaliteten av svarene. Derfor er det avgjÃļrende ÃĨ hÃĨndtere og optimalisere token-bruk nÃļye nÃĨr man arbeider med disse store sprÃĨkmodellene.

pip install faiss-cpu langchain CharacterTextSplitter

Etter ÃĨ ha sikret at ovenstÃĨende biblioteker er installert, kjÃļr

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.faiss import FAISS
from langchain.text_splitter import CharacterTextSplitter
dokumenter = get_arxiv_data(max_results=10) # Vi kan nÃĨ bruke mer data
dokument_del = []
splitter = CharacterTextSplitter(separator=&amp;quot; &amp;quot;, del_stÃļrrelse=1024, del_overlapp=0)
for dokument in dokumenter:
for del_ in splitter.split_text(dokument.side_innhold):
dokument_del.append(Dokument(side_innhold=del_, metadata=dokument.metadata))

<p>sÃļk_indeks = FAISS.from_dokumenter(dokument_del, OpenAIEmbeddings())</p>

<p>kjede = load_qa_with_sources_chain(OpenAI(temperatur=0))</p>

<p>def print_svar(spÃļrsmÃĨl):
print(
kjede(
{
&amp;quot;inndata_dokumenter&amp;quot;: sÃļk_indeks.sÃļk_lignende(spÃļrsmÃĨl, k=4),
&amp;quot;spÃļrsmÃĨl&amp;quot;: spÃļrsmÃĨl,
},
returner_bare_uttak=True,
)[&amp;quot;utgang_tekst&amp;quot;]
)

Med koden fullfÃļrt, har vi nÃĨ et kraftig verktÃļy for ÃĨ spÃļrre den nyeste akademiske litteraturen i feltet NLP.

De nyeste fremgangene i NLP inkluderer bruk av dype neurale nettverk (DNN) for automatisk tekst-analyse og NLP-oppdrag som stavekontroll, sprÃĨk-gjenkjenning, entitet-uttrekk, forfatter-gjenkjenning, spÃļrsmÃĨl-svar og andre oppdrag.
KILDER: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1

Konklusjon

Integreringen av store sprÃĨkmodeller (LLM-er) i applikasjoner har akselerert adopsjonen i flere domener, inkludert sprÃĨk-oversettelse, mening-analyse og informasjonsgjenfinning. Prompt engineering er et kraftig verktÃļy i ÃĨ maksimere potensialet til disse modellene, og Langchain er i fremkant av ÃĨ forenkle denne komplekse oppgaven. Dets standardiserte grensesnitt, fleksible prompt-maler, robust modell-integrasjon og den innovative bruken av agenter og kjeder sikrer optimale resultater for LLM-er-ytelse.

Likevel, til tross for disse fremgangene, er det noen viktige punkter ÃĨ huske pÃĨ. Mens du bruker Langchain, er det essensielt ÃĨ forstÃĨ at kvaliteten pÃĨ utgangen avhenger tungt av promptens formulering. Å eksperimentere med forskjellige prompt-stiler og strukturer kan fÃļre til forbedrede resultater. Dessuten, husk at selv om Langchain stÃļtter en rekke sprÃĨkmodeller, har hver sin styrker og svakheter. Valg av riktig modell for din spesifikke oppgave er avgjÃļrende. Til slutt, husk at bruk av disse modellene kommer med kostnads-betraktninger, ettersom token-prosessering direkte pÃĨvirker kostnaden av interaksjoner.

Som demonstrert i trinnvis-guiden, kan Langchain aktivere robuste applikasjoner, som det akademiske Litteratur SpÃļrsmÃĨl og Svar-system. Med en voksende brukersamfunn og Ãļkende prominens i ÃĨpen kilde-landskapet, lover Langchain ÃĨ vÃĶre et avgjÃļrende verktÃļy i ÃĨ utnytte fullt potensiale til LLM-er som GPT-4.

Jeg har brukt de siste fem ÃĨrene pÃĨ ÃĨ dykke ned i den fasiniserende verden av MaskinlÃĶring og Dypt LÃĶring. Min lidenskap og ekspertise har ledet meg til ÃĨ bidra til over 50 ulike programvareprosjekter, med sÃĶrlig fokus pÃĨ AI/ML. Min pÃĨgÃĨende nysgjÃļrhet har ogsÃĨ trukket meg mot Naturlig SprÃĨkbehandling, et felt jeg er ivrig etter ÃĨ utforske videre.