Wer seid Ihr?
-
ChatGPT-Nutzer? CoPilot?
-
Python-Entwickler?
-
Kennt AutoGPT, AgentVerse, BabyAGI, MetaGPT etc?
-
Schon mit LangChain gearbeitet?
-
Und mit LangGraph?
Vorstellungsrunde
-
Was macht Ihr?
-
Was würdet Ihr gerne mitnehmen?
Mitmachen!
Ein Internetzugang und ein Browser reichen aus!
Sourcen sind alle Online.
Was sind Agenten?
-
ALT! (1977 Hewitt)
-
führt aus eigener Initiative Aktionen aus und arbeitet unabhängig vom Nutzer
-
kommuniziert mit dem Nutzer
und anderen Agenten
-
passt sich an die Umwelt an und lernt eigenständig und langfristig aus Beobachtungen und Entscheidungen
Was sind Agenten?
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
prompt = hub.pull("hwchase17/openai-functions-agent")
tools = [TavilySearchResults()]
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({"input": "how can langsmith help with testing?"})
Welchen Businessprozess
unterstützt ChatGPT?
GenAI Agenten sind universelle
Problemlöser für eine Business-Domäne.
... und sie sind schuld daran.
Das wusste
OpenAI.
Wer sich umorientieren möchte ..
Warum jetzt?
Agenten gibt es doch schon lange, Sprachmodelle auch.
Warum jetzt auf einmal
so einen Wirbel machen?
Language Models
Gibt es seit den 80ern.
-
Können:
-
Übersetzen
-
Text Generation
-
Lücken füllen
-
Entities erkennen
...
-
-
Das statistisch Wahrscheinliche auf Basis von Model & Input
Das Teekesselchen-Dilemma
-
Warum haben Fische Schuppen? Damit sie ihre Fahrräder unterstellen können.
-
Treffen sich zwei Kerzen. Fragt die eine die andere:
„Wollen wir zusammen ausgehen?"
Context matters ...
Erst mit dem Kontext kann man herausfinden, was tatsächlich gemeint ist.
Attention is all You need
Was muss ich berücksichtigen, was nicht?
Input | Prediction |
---|---|
Hello! | How |
Hello! How | can |
Hello! How can | I |
Hello! How can I | as- |
Hello! How can i as- | -sist |
Hello! How can i assist | you |
Hello! How can i assist you | today |
Hello! How can i assist you today | ? |
Transformer Based
Large Language Models
Text-Generation: Sag mir statistisch das nächste Wort voraus ...
GPT: LARGE Language Models
-
Billionen von Ausgangsdaten
-
Milliarden von Parametern(Gewichten)
-
Sehr teuer zu trainieren:
GPT-4 100.000.000 $ -
"Weltwissen", um korrekt arbeiten zu können
Training:
Die richtige Fortsetzung für
"Zähl mal von 1 bis 12"
ist
"1,2,3,4,5,6,7,8,9,10,11,12"
Wie man aus Text Generation
Instruction Following macht
-
Wenn man nicht das ganze trainieren kann, dann nur den relevanten Teil.
-
Finetuning bzw. PEFT (parameter efficient fine tuning) - nur das trainieren, was man braucht.
-
Mit Lora & co sogar noch kleiner und dazuladbar
-
Wie bei rekursiver Komprimierung wird nicht alles besser mit mehr: Catastrophic forgetting
Finetuning
Finetuning
<|im_start|>system
Sie sind ein KI-Assistent. Sie erhalten eine Aufgabe. Sie müssen eine detaillierte und lange Antwort generieren.
<|im_start|>user
Generieren Sie einen Satz mit etwa fünfzehn Wörtern, der all diese Daten beschreibt:
Mitsommerhaus
Typ: Restaurant;
Essen Chinesisch;
Preisspanne: moderat;
Kundenbewertung: 3 von 5;
Ort: in der Nähe vom Hofbräuhaus
<|im_start|>assistant
Das Mittsommerhaus ist ein moderatpreisiges Restaurant in der Nähe vom Hofbräuhaus, bietet chinesisches Essen an und hat eine Kundenbewertung von 3 von 5.
<|im_end|>
Systemprompt
Prompt
Antwort
FLAN-Palm Finetuning
Und was tuned man so fein?
Warum Agenten jetzt funktionieren
TAFKA-In-Context-Learning:
Prompt Engineering
-
Transformer-Architekturen setzen auf dem Input auf
-
Das kann für neue Informationen genutzt werden
-
Neudeutsch "Prompt Engineering"
Few-Shot-Prompting
https://the-prompt-engineer.beehiiv.com/p/3-fewshot-prompting
Chain of Thought Prompting
Größere Modelle, besseres Finetuning
Ende 2022...
... und seitdem sind alle hibbelig.
Finetuning
- Generate Texts
- Summarization
- Classification
- Question Answering
Planned ...
- Follow Instructions
- Reasoning
- Decision making
- Evaluate Results
Emergent...
-
führt aus eigener Initiative Aktionen aus und arbeitet unabhängig vom Nutzer
-
kommuniziert mit dem Nutzer und anderen Agenten
-
passt sich an die Umwelt an und lernt langfristig aus Beobachtungen und Entscheidungen
Agenten von ChatGPT
Agenten für Entwickler:Innen
Wer nutzt CoPilot?
Probleme von LLM-Applikationen
-
Sie halluzinieren, man kann Ihnen nicht trauen
-
Sie könne nur einfache Aufgaben erledigen. Für komplexe Aufgaben braucht es einen Menschen zum Prompten.
-
Sie antworten falsch, und ich muss dann dafür haften.
-
Was ist mit Prüfung mittels Rag?
-
Mit Self-Critique?
-
Mit Schleifen, um es zu korrigieren nach Prüfung?
Text
Kahnemans System 1 vs System 2
-
System 1: Automatisch, unreflektiert, unbewusst.
-
System 2: bewusst, gezielt, reflektiert, selbstkritisch, analytisch und informiert
Das LLM und Agenten verhalten sich
wie System 1 und System 2.
Verlässlichkeit und geprüfte
Information gibt es nur von Agenten.
https://www.linkedin.com/pulse/state-autonomous-ai-agents-dean-meyer/
Warum LLMs mühsam sind ...
-
LLMs sind sehr langsam: XX token/s
-
Chat & Streaming geht in UX gerade so - aber nicht bei Agenten
-
Fazit: Agenten sind asynchrone Services
-
"Autonom". Ja genau.
🦜🔗 LangChain
🦜🔗 LangChain
🦜🔗 LangChain
-
Alternativen
-
AutoChain, Semantic Kernel, Haystack, LlamaIndex
-
-
Langchain Community
-
Features, Doku, Entwickler
-
viel Forks, viele Committer
-
-
Vollständigstes Framework
-
Größte Verbreitung
-
Industriestandard, zB Kurse bei Deeplearning.ai
🦜🔗 LangChain
-
Gegenargumente
-
Umfangreich
-
Steile Lernkurve
-
zum Teil hohe Komplexität
-
zum Teil veraltete Dokumentation
-
häufige Compability Breaks
-
-
Wird noch eine Weile populär bleiben.
🦜🔗 LangChain
🦜🔗 LangChain
🦜🔗 LangSmith
Tracing
🦜🔗 LangSmith
Promptlogging,
Testing, Annotation,
Model-Testing
🦜🔗 LangSmith
Promptlogging,
Testing, Annotation,
Model-Testing
🦜🔗 LangChain
Core
🦜🔗 HandsOn
Bitte
https://workshop.aisaisbaby.com/
aufrufen!
Bitte mit Realnamen registrieren, damit wir bei Bedarf unterstützen können.
Für die Mutigen:
https://github.com/mayflower/langchain_agents
JupyterHub unter
https://workshop.aisaisbaby.com/
Im Folder langchain_agents:
🦜🔗 Wie tickt LangChain?
Ziele:
-
be data-aware Daten für LLMs bereitstellen
-
be agentic Agenten als Kernstrategie
Dafür wird bereitgestellt:
-
Komponenten Abstraktionen für typische Aufgaben
-
Off-the-shelf chains (fast) fertige Lösungsstrecken
🦜🔗 Chains
🦜🔗
01_basics.ipynb
02_langchain_repo.ipynb
🦜🔗 Long Term Memory
Natürliche Sprache != Strukturierte Daten
Es gibt keine eindeutigen Keys für den Lookup.
! SQL, !NoSQL, !DocumentDB, !GraphDB
Wenn man bloss was hätte, was man
mit Sprache abfragen könnte ...
🦜🔗 VectorStores
Superspezialdatenbanken mit 3 Spalten:
-
hochdimensionaler Vektorindex
-
Textblob
-
Metadata
Der Vektorindex kommt aus Embeddings.
🦜🔗 Embeddings
-
Texte sind in LLMs in Token
-
Embeddings sind Vektoren, die den "Sinn" von einem Stapel Token abbilden
"Liebe Vektordatenbank, gib mir mal alles inhaltlich ähnliches hierzu."
🦜🔗
03_rag_basics.ipynb
https://python.langchain.com/docs/use_cases/more/agents
🦜🔗 Default: ReAct Agents
https://blog.research.google/2022/11/react-synergizing-reasoning-and-acting.html
Der agile
Plan-Do-Check-Act-Loop der Agenten.
ReAct
Agents
https://blog.research.google/2022/11/react-synergizing-reasoning-and-acting.html
🦜🔗
04_react.ipynb
-
Every other "Chat My $stuff" Chatbot
-
Dokumentation verwendbar machen
-
Callcenter und Supportanfragen automatisch beantworten
-
Kundenbriefe und Mails auf Basis vergangener ähnlicher Anfragen beantworten
-
Alles Consultingwissen, von SAP bis Legal.
🦜🔗 VectorStores einsetzen bei Agenten
🦜🔗
05_agentic_rag.ipynb
ReAct
Tools
🦜🔗 Tools
Im Beispiel: search und llm-math
Viele Tools, wachsend ...
-
Alle Suchplattformen, Wikipedia, Arxiv, WolframAlpha, DuckDuckGo, ...
-
Libraries: HuggingFace Tools
-
Code ausführen: Shell , Python, Lambda
-
Interaktion: Human
🦜🔗 Einfache Toolnutzung
🦜🔗 Flexible Toolnutzung
🦜🔗 Gegenseitige Aufrufe
https://github.com/jwa91/LangGraph-Expense-Tracker/
🦜🔗 Workflows mit Aufruffolgen
https://blog.langchain.dev/code-execution-with-langgraph/
🦜🔗 Appium Flow
https://github.com/assafelovic/gpt-researcher/
🦜🔗 GTP-Researcher
State
Nodes
Edges
Agenten-Workflows werden als State-Machine modeliert
from langgraph.graph import MessageGraph, END
workflow = MessageGraph()
workflow.add_node("chatbot", model)
workflow.set_entry_point("chatbot")
workflow.add_edge("chatbot", END)
graph_app = workflow.compile()
-
StateGraph
- Enthält den Graphen
- Status und Konfiguration als Parameter
- Jedes Statuselement kann einen Reducer haben
from langgraph.graph import StateGraph, MessageGraph
def reducer(a: list, b: int | None) -> int:
if b is not None:
return a + [b]
return a
class State(TypedDict):
x: Annotated[list, reducer]
class ConfigSchema(TypedDict):
r: float
graph = StateGraph(State, config_schema=ConfigSchema)
- meist Python-Funktionen
- erster Parameter der Funktion ist der State
- zweiter (optionaler Parameter) ist configuration
- kommunizieren über Status
- Sonderknoten START und END
def myfunc(state):
answer = state["x"][-1]
graph.add_node("agent", myfunc)
graph.add_node("chatbot", async (state: BaseMessage[]) => {
return model.invoke(state);
});
workflow.add_node("action", ToolNode(tools))
Nodes / Knoten
- Direkte verbindungen zwischen zwei Nodes
- Bedingte Verbindungen zwischen zwei Nodes
- Können parallel ausgeführt werden
graph.add_edge("step1", "step2") def should_continue(data) if isinstance(data["agent_outcome"], AgentFinish): return "end" else: return "continue" graph.add_conditional_edges("agent", should_continue, {"continue": "next_action",
"end": END}
)
Edges / Kanten
🦜🔗
06_langgraph_intro.ipynb
🦜🔗
07_checkpoints.ipynb
Context oder VectorStore?
🦜🔗
08_memory.ipynb
🦜🔗 Strukturierte Daten
Hey, schön, dass Du Dich so
über Deinen VectorStore freust.
Unsere Daten liegen trotzdem in Oracle.
🦜🔗 Existierende Datenbanken anbinden
SQLDatabaseToolkit kümmert sich um:
-
Parsen der Schemata
-
Interpretieren der Daten
-
Erzeugen der SQL-Statements
Bitte
09_agent_with_sql_toolkit.ipynb
aufrufen.
🦜🔗 Plan & Solve
🦜🔗 Plan and Execute Agent
Der Waterfall unter den Agenten:
Bitte
6_plan_and_execute.ipynb
aufrufen.
🦜🔗 BabyAGI
AGIs, das MakeMoneyFast!!!111elf der AI.
Wer hat schon mal AutoGPT, BabyAGI, DevGPT, ... genutzt?
GrundIdee: jedes Problem von der AI lösen lassen ohne selbst zu arbeiten.
🦜🔗 BabyAGI
Bitte
7_BabyAGI.ipynb
aufrufen.
🦜🔗 BabyAGI
Praxiserfahrungen:
-
es funktioniert in limitierten Domänen
-
as in: Abteilungen, Arbeitsbereichen
-
es braucht Long Term Memory
-
es braucht Interaktion
-
DRY in Richtig.
🦜🔗 Your PAL for formal stuff
Program Aided Language
Wenn eine formelle Sprache ein Problem besser lösen kann sollte sie es tun.
In Langchain:
LLMath, Bash, Python, SQL etc ...
🦜🔗 Your PAL for formal stuff
Bitte
8_CPAL.ipynb
aufrufen.
🦜🔗 CAMEL: Teamwork
-
Eigentlich als Simulation für Games etc gedacht
-
Erstaunlich kluge Ergebnisse
-
Kann alle anderen Features in Kooperation integrieren
-
Wirr aber wahr: Teamwork funktioniert auch für AI besser.
Bitte
9_camel.ipynb
aufrufen.
🦜🔗 CAMEL: Teamwork
🦜🔗 Multimodale Agenten
-
Multimodale Large Language Models: Image, Video, Audio
-
OCR, Object Recognition, Question Answering im Vorübergehen
-
"Trainierst Du noch oder bist Du schon Multimodal?"
-
Dokumentenprüfung, Extraktion, Zusammenfassung und Beantwortung
Bitte
14_agent_with_vision.ipynb
aufrufen.
🦜🔗 Multimodale Agenten
Praxis und Ausblick
-
Vieles ist noch instabil
-
Wenn man bleeding edge mag cool
-
Aber: lokal schnell große Benefits realisierbar
-
Infrastruktur drumherum entsteht erst
-
Observability (Langsmith etc)
-
Deployment
-
Automation (SuperAgent)
-
Q&A
Slides: https://slides.com/johann-peterhartmann/autonome-agenten/
Code: https://github.com/mayflower/codetalks23/
Langchain-Buch: http://hub.mayflower.de/langchain-buch
Autonome Agenten mit Langchain
By Johann-Peter Hartmann
Autonome Agenten mit Langchain
- 225