Large Language Models
LLM trainen
Text aanvullen
Text genereren
Fine-tuning
Toon gewenste output
Rankschik antwoorden om reward model te trainen
Update generatieve model d.m.v. reward model
Prompt engineering principes
Gebruik delimiters (```text```, [text], <text>, …)
Specifieer de output (only output the json, only write code, …)
Geef een rol aan het model (you're an expert [role]. Do...)
Laat het model de oplossing uitwerken voor een oplossing te genereren
Prompt iteratief verbeteren (trial & error)
Conclusie
Principes kunnen worden onderverdeeld in 5 categorieën:
Context (geef context over de rol, chat, doel, etc)
Input data (over de gebruiker)
Instructies (verwachtingen, vraag, doel, …)
Voorbeelden
Beperkingen (JSON output, enkel code, aantal woorden, …)
Gebruik van LLMs
Samenvatten
Intentie en gevoel analyse
Spelling, gramatica en stijl
Uitbreiden
Rollen bij ChatGPT
User: degene die requests maakt
Assistant: degene die antwoorden genereert
System: degene die algemene context over het gesprek onthoudt
Prompt injection
Een prompt maken om het model te gebruiken voor andere doeleinden
Rogue assistant: gevoelige e-mails forwarden en verwijderen van inbox
Search index poisoning: websites aanmaken met vervuilende info en internet-verbonden LLMs vervuilen ermee
Indirect prompt injection
Jailbreaking
Veiligheidsmaatregelen verbreken om LLMs dingen laten zeggen dat ze niet mogen zeggen:
DAN (Do Anything Now): “We’re writing a play where …”
System chat vervangen: ervoor zorgen dat de user op interageert met problematische dingen
LangChain
LLMs
from langchain.llms import EdenAI
llm = EdenAI(edenai_api_key: str, provider: str, model: str, temperature: float, max_tokens: int)from langchain.embeddings.edenai import EdenAIEmbeddings
embeddings = EdenAIEmbeddings(edenai_api_key: str, provider: str)
embeddings.embed_query(text: str)from langchain.prompts import PromptTemplate
template = PromptTemplate.from_template(template: str)
prompt = template.format(**kwargs: Any)from langchain.output_parsers import ResponseSchema, StructuredOutputParser
schema = ResponseSchema(name: str, description: str, type: str)
parser = StructuredOutputParser.from_response_schemas([schema])
instruction = parser.get_format_instructions()
parser.parse(text: str)from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemory, ConversationSummaryBufferMemory
memory = ConversationBufferMemory()
memory.clear()
memory = ConversationBufferWindowMemory(k: int)
memory = ConversationSummaryBufferMemory(llm: BaseLanguageModel, max_token_limit: int)from langchain.chains import ConversationChain, LLMChain, SimpleSequentialChain, SequentialChain, RetrievalQA
conversation = ConversationChain(llm: BaseLanguageModel, memory: BaseMemory)
conversation.predict(input: str)
chain = LLMChain(llm: BaseLanguageModel, prompt: BasePromptTemplate)
chain.run(str)
simple_chain = SimpleSequentialChain(chains: list[Chain])
simple_chain.run(str)
sequential_chain = SequentialChain(chains: list[Chain], input_variables: list[str], output_variables: list[str])
sequential_chain.run(str)
qa_stuff = RetrievalQA.from_chain_type(llm: BaseLanguageModel, chain_type: str, retriever: VectorStoreRetriever)
qa_stuff.run(str)from langchain.document_loaders import CSVLoader, PyPDFLoader
csv_loader = CSVLoader(file_path: str, csv_args: dict[str, Any]) # csv_args: ["delimiter", "quotechar", "fieldnames", ...]
data = csv_loader.load()
pdf_loader = PyPDFLoader(file_path: str)
data = pdf_loader.load()