Autonome Agenten
mit
LangChain
Und Ihr so?
-
ChatGPT-Nutzer? CoPilot?
-
Python-Entwickler?
-
Son büschen, wenigstens?
-
Kennt AutoGPT, AgentVerse, BabyAGI, MetaGPT etc?
-
Schon mit LangChain gearbeitet?

Und das braucht Ihr dazu:
-
einen OpenAI Key
(sorry dafür, is aber so) -
einen SerpAPI-Key
-
ein Jupyter-Env
-
Docker wird mitgeliefert
-
-
Internet
-
Bekommt Ihr alles unter der URL gleich, und ich erzähl was, solange Ihr einrichtet.
https://tinyurl.com/codetalks23

Was sind Agenten?
-
fast so alt wie ich (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 langfristig aus Beobachtungen und Entscheidungen

https://tinyurl.com/codetalks23
Was sind Agenten?


https://tinyurl.com/codetalks23
... und sie sind schuld daran.


https://tinyurl.com/codetalks23
Das wusste
OpenAI.



https://tinyurl.com/codetalks23
Wer sich umorientieren möchte ..


https://tinyurl.com/codetalks23

WTF ...
Agenten gibt es doch schon lange, Sprachmodelle auch.
Warum jetzt auf einmal
so einen Wirbel machen?


https://tinyurl.com/codetalks23
Language Models
Gibt es seit den 80ern.
-
Können:
-
Zusammenfassung
-
Text Generation
-
Lücken füllen
-
Entities erkennen
...
-
-
Das statistisch Wahrscheinliche auf Basis von Model & Input

https://tinyurl.com/codetalks23

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 | ? |

https://tinyurl.com/codetalks23
Language Models
Text-Generation: Sag mir statistisch das nächste Wort voraus ...

LARGE Language Models
-
Generative Pretrained Transformer
-
Du bist zu arm dafür:
GPT-4 100.000.000 $ -
Europa auch
-
UAE nicht:
Falcon 180B 7.000.000 GPU Hours.

https://tinyurl.com/codetalks23
-
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

https://tinyurl.com/codetalks23
Finetuning
Du, die richtige Fortsetzung von
"Zähl mal von 1 bis 12"
ist
"1,2,3,4,5,6,7,8,9,10,11,12"

https://tinyurl.com/codetalks23
Wie man aus Text Generation
Instruction Following macht

FLAN-Palm Finetuning

https://tinyurl.com/codetalks23
Und was tuned man so fein?
Größere Modelle, besseres Finetuning


https://tinyurl.com/codetalks23
Ende 2022...


https://tinyurl.com/codetalks23
... und seitdem sind alle hibbelig.





https://tinyurl.com/codetalks23
- Generate Texts
- Summarization
- Classification
- Question Answering
Planned ...
- Follow Instructions
- Reasoning
- Decision making
- Evaluate Results
Emergent...

https://tinyurl.com/codetalks23
-
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
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

Warum Agenten jetzt funktionieren

Warum LLMs doof für Software sind ...
-
Der LLM-Fuckup: 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, llama Index
-
-
Langchain Community
-
Features, Doku, Entwickler
-
viel Forks, viele Comitter
-
Häufige compability breaks
-
-
Gegenargumente
-
Zu gross, zu schnell, zu viel
-
-
Wird noch eine Weile populär bleiben.
🦜🔗 LangChain
🦜🔗 HandsOn
Bei wem läuft denn schon?
Wenn nein: macht nix, geht auch später und kommt auch hier vorne.
Noch mal sorry für die Keys, aber ohne funktionieren Agenten (noch) nicht.

🦜🔗 LangChain vs LLM
HandsOn 1: LangChain vs LLM.
Jupyter läuft?
OPENAI_API_KEY steht in .env?
Super!
Bitte
1_langchain_basics.ipynb
aufrufen.

🦜🔗 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


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

🦜🔗 ReAct Example
HandsOn 2: ReAct mit LangChain
Bitte
2_react.ipynb
aufrufen.

🦜🔗 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

🦜🔗 Stand da gerade Shell?
Kommt Ihr noch klar?
Ich soll allen Ernstes OpenAI auf meinem Rechner was ausführen lassen?
Bitte
3_react_with_humantool.ipynb
aufrufen.
Wer neugierig ist: unter
https://github.com/mayflower/cloudbot
ist ein kubernetes/aws-bot.

🦜🔗 Long Term Memory
Natürliche Sprache != Strukturierte Daten
! 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."

-
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
🦜🔗 Vectorstores in Agenten verwenden
Bitte
4_react_with_docstore.ipynb
aufrufen.

🦜🔗 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
5_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

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
By Johann-Peter Hartmann
Autonome Agenten
- 533