Pressemitteilungen
Modelle
Produkte
keyboard_arrow_down
Leser
Lesen Sie URLs und suchen Sie im Internet nach fundierteren LLMs.
Einbettungen
Multimodale und mehrsprachige Einbettungen von Weltklasse.
Reranker
Neural Retriever der Weltklasse zur Maximierung der Suchrelevanz.
DeepSearch
Suchen, lesen und überlegen, bis die beste Antwort gefunden ist.
Mehr
keyboard_arrow_down
Klassifikator
Zero-Shot- und Few-Shot-Klassifizierung für Bild und Text.
Segmentierer
Schneiden Sie langen Text in Abschnitte und führen Sie eine Tokenisierung durch.

API-Dokumente
Automatische Codegenerierung für Ihre Copilot-IDE oder LLM
open_in_new


Unternehmen
keyboard_arrow_down
Über uns
Kontaktieren Sie unseren Vertrieb
Praktikantenprogramm
Begleiten Sie uns
open_in_new
Logo herunterladen
open_in_new
Terms & amp; Bedingungen


Einloggen
login
Wozu brauche ich überhaupt einen Meta-Prompt?
Experimente mit Meta-Prompt
Experimente mit Meta-Prompt: Was haben wir herausgefunden?
Fazit
Tech-Blog
November 19, 2024

Meta-Prompt für bessere Jina API-Integration und CodeGen

Ist Meta-Prompt der neue Standard für API-Spezifikationen? Man kann ihn in LLMs einspeisen und Integrationscode generieren, der Jinas APIs zuverlässig integriert und einem den üblichen Trial-and-Error-Prozess erspart.
Alex C-G
Alex C-G • 9 Minuten gelesen

Wir haben kürzlich Meta-Prompt veröffentlicht, eine einzelne Textdatei, die alle unsere API-Spezifikationen enthält. Man kann es sich als Dokumentation für LLMs vorstellen und damit automatisch Integrationen unserer APIs einschließlich Reader, Embeddings, Reranker und mehr generieren.

0:00
/1:44

Es ist so einfach wie das Kopieren und Einfügen unseres Prompts in ChatGPT/Claude oder das Einleiten als System-Prompt in den llm Befehl, gefolgt von Ihrem eigenen Prompt, der spezifiziert, was Sie erstellen möchten (wie wir es unten zeigen). Es ist großartig, wenn Sie LLMs nutzen möchten, um schnell Apps zu erstellen, die das Web durchsuchen, mit Embeddings arbeiten oder sogar vollständige RAG-Systeme entwickeln. Und das alles mit minimalen Halluzinationen.

tagWozu brauche ich überhaupt einen Meta-Prompt?

Nehmen wir an, Sie möchten ein LLM verwenden, um Code zu generieren, der Jinas APIs nutzt. Lassen Sie uns GPT-4 genau darum bitten:

0:00
/0:27

Sieht gut aus, oder? Es hat das from jina import Client und alles.

Ein kleines Problem: Das Jina-Paket befindet sich im Wartungsmodus und ist nicht der Weg, auf unsere APIs zuzugreifen. Selbst wenn Sie das Jina-Paket installieren, wird das generierte Programm abstürzen, wenn Sie versuchen, es auszuführen:

Und was nun? Wir können GPT doch einfach bitten, im Internet nach Jina's APIs zu suchen, oder? Hier ist was wir bekommen: [Video Block beibehalten] Wenn Sie sich den Code jedoch ansehen, verwendet er nicht alle relevanten Jina APIs. Es hat offensichtlich nicht herausgefunden, dass Reader existiert, stattdessen lässt es uns BeautifulSoup für das Scraping installieren. Und selbst als es das Scraping (angeblich) mit BeautifulSoup durchführen konnte, hat es das Antwortformat für Jina Embeddings nicht korrekt geparst, was zu einem Absturz führte: [Video Block beibehalten]
0:00
/0:16

Selbst wenn ChatGPT dies durch Suchen richtig machen könnte, unterstützen viele andere LLMs (wie Claude) derzeit keine Websuche, was Ihre Optionen stark einschränkt.

Hier glänzt Meta-Prompt. Mit Meta-Prompt können Sie den gesamten Kontext und die Spezifikationen von Jinas APIs in das LLM laden. Das bedeutet, dass das LLM Code generieren kann, der Jinas APIs direkt nutzt, ohne Halluzinationen oder unnötige Workarounds, und Ihnen Code liefert, der beim ersten Mal funktioniert.

💡
Okay, normalerweise beim ersten Mal. LLMs können unvorhersehbar sein, aber wie Sie unten sehen können, liefen unsere Experimente gut.

tagExperimente mit Meta-Prompt

Um Meta-Prompt auf die Probe zu stellen, führten wir einige Experimente durch und bewerteten die Ergebnisse. Sofern nicht anders angegeben, verwendeten wir Claude-3.5-Sonnet als LLM.

Für alle Experimente haben wir relevante API-Schlüssel (wie JINA_API_KEY und ANTHROPIC_API_KEY) vor der Ausführung des generierten Codes als Umgebungsvariablen festgelegt.

tagExperiment 1: Überprüfen von Aussagen mit Meta-Prompt in ChatGPT

Wir schreiben dies kurz nach den US-Wahlen, wo mehr Desinformation als je zuvor im Umlauf war. Wie können wir in unseren Feeds das Signal vom Rauschen trennen und nur die guten Inhalte ohne Lügen bekommen?

Nehmen wir an, wir möchten überprüfen, ob ein neues britisches Gesetz auf BBC.com korrekt berichtet wird, speziell die Behauptung:

"Die britische Regierung hat ein neues Gesetz angekündigt, das von Social-Media-Unternehmen verlangt, das Alter ihrer Nutzer zu verifizieren."

Wir können den Meta-Prompt in ChatGPT kopieren und dann unseren eigenen Prompt eingeben, um den Code dafür zu generieren, etwa so:

Write the JavaScript code to check the validity
of the following statement on bbc.com: 

"The UK government has announced a new law 
that will require social media companies to 
verify the age of their users."
0:00
/0:35

Wir können das dann ausführen mit

node grounding.js (nach der Installation aller erforderlichen Pakete wie axios). Wir erhalten eine Ausgabe wie diese, die zeigt, dass die Behauptung wahr ist, zusammen mit den Quellen:

0:00
/0:04

tagExperiment 2: Visualisierung von Hacker News über die CLI

Wenn Sie eher ein Kommandozeilen-Enthusiast sind, können Sie Meta-Prompt über die CLI mittels cURL verwenden. Zuerst müssen Sie das llm Python-Paket installieren:

pip install llm

Und dann das Claude-3 Plugin:

llm install llm-claude-3

Für den letzten Schritt der Einrichtung geben Sie Ihren Anthropic API-Schlüssel an:

export ANTHROPIC_API_KEY=<your key>

Jetzt schreiben wir einen Prompt, um jeden Satz von der Hacker News Startseite zu visualisieren:

grab every sentence from hackernews frontpage and 
visualize them in a 2d umap using matplotlib

Wir können dies mit dem llm-Befehl pipen:

curl docs.jina.ai | llm -s "grab every sentence from hackernews frontpage and visualize them in a 2d umap using matplotlib" -m claude-3.5-sonnet
0:00
/0:24

Puh! Das ist eine Menge Output. Aber (wie beim Hacker News Beispiel) ist es mühsam, den Code aus diesem großen Textblock zu extrahieren und auszuführen. Natürlich gibt es kein Problem, das nicht durch noch mehr LLM-Einsatz gelöst werden kann, richtig? Also fügen wir einen weiteren Prompt hinzu, um den ursprünglichen Output zu "entblobben":

leave just the code in this file, remove all surrounding explanatory text. 
do not wrap code in backticks, just return "pure code"

Jetzt fügen wir das zu unserer Befehlspipeline hinzu und führen sie aus:

curl docs.jina.ai/v4 | llm -s "$(cat prompt.txt)" -m claude-3.5-sonnet | llm -s 'leave just the code in this file, remove all surrounding explanatory text. do not wrap code in backticks, just return "pure code"' -m claude-3.5-sonnet > app.py
💡
Da wir am Ende unseres Befehls > app.py verwenden, um die gesamte Ausgabe in eine Datei umzuleiten, gibt es im Video nichts zu zeigen.

Wir können die App dann mit python app.py ausführen und erhalten unser RAG-Programm. Wie Sie sehen können, kann es Fragen beantworten und ein Arbeitsgedächtnis aufrechterhalten:

0:00
/0:34
💡
Der erste Durchlauf dauerte etwas länger, da alle Daten segmentiert und codiert werden mussten. Bei nachfolgenden Durchläufen wurde dies aus einer JSON-Datei geladen, um Zeit und Kosten zu sparen.

tagExperiment 4: Eine App-Fabrik mit Meta-Prompt erstellen

Da wir jetzt Skripte und Apps nicht-interaktiv generieren können, können wir leicht eine "App-Fabrik" automatisieren - ein Skript, das Prompts durchläuft und Python-Skripte als Output erzeugt. Sie können das App-Fabrik-Skript vorerst in einem GitHub Gist finden:

App Factory with Jina AI Meta-Prompt
App Factory with Jina AI Meta-Prompt. GitHub Gist: instantly share code, notes, and snippets.
Gist262588213843476

Was es kurz gesagt macht:

  • Durchläuft das Verzeichnis prompts, das (Sie haben es erraten) Prompt-Dateien enthält.
  • Übergibt den Meta-Prompt und jeden Prompt-Text an Claude-3.5-Sonnet (über llm).
  • Nimmt die Ausgabe und übergibt sie ERNEUT an Claude, diesmal mit dem Prompt, nur den Code zu belassen.
  • Schreibt das in eine Datei im Verzeichnis apps.

Wir würden eine Demo zeigen, aber es gibt nicht viel zu sehen. Es protokolliert lediglich, an welchem Prompt-Dateinamen es gerade arbeitet, und arbeitet ansonsten still ohne interessante Bildschirmausgabe.

💡
Das Testen der generierten Apps ist eine andere Sache, für die ich keine sofortige Lösung parat habe. Nach unserer Erfahrung spezifizieren wir oft die Daten, die wir in unseren Prompts verwenden möchten, meist indem wir eine externe URL zum Herunterladen mit Reader übergeben. Dennoch halluziniert das LLM manchmal Mock-Daten, und das Skript läuft ohne offensichtliche Probleme – es "lügt" einfach darüber, was es tut.

Um die App-Fabrik auf die nächste Stufe zu heben, könnten Sie komplett Factorio gehen und ein weiteres Skript schreiben, das App-Ideen generiert und daraus Prompts erstellt, die in die Fabrik eingespeist werden. Das haben wir noch nicht gemacht, aber wir überlassen es Ihnen als Übung.

tagExperimente mit Meta-Prompt: Was haben wir herausgefunden?

Wir haben durch die Verwendung von Meta-Prompt viel gelernt, sowohl darüber, was wir in unsere eigenen Prompts aufnehmen sollten, als auch darüber, wie verschiedene LLMs unterschiedliche Ausgaben generieren.

tagAllgemeine Beobachtungen

  • API-Spezialisierung: Die Verwendung aufgabenspezifischer APIs (z.B. Google Books für buchbezogene Abfragen) gewährleistet konsistentere Ergebnisse als universelle Such-APIs, was den Token-Verbrauch reduzieren und die Zuverlässigkeit verbessern kann.
  • Benutzerdefinierte Prompts für Wiederverwendbarkeit: Bei nicht-interaktiven Setups ermöglicht das Speichern von Prompts als .txt-Dateien und deren Weiterleitung in die CLI eine effiziente Ausgabe von reinem Code ohne störenden erklärenden Text.
  • Strukturierte Ausgabe: Das Speichern von Ausgaben (normalerweise im JSON-Format) und das Neuladen nach Bedarf spart Token und rationalisiert Aufgaben wie die Generierung von Embeddings, bei denen der Token-Verbrauch kostspielig sein kann.

tagErkenntnisse aus der Nutzung verschiedener LLMs

GPT

  • Probleme mit der Prompt-Speicherung: GPT-4o verliert manchmal Details bei langen Anweisungen, was zu Problemen führt, wenn es wichtige Elemente während der Diskussion "vergisst". Dies führt zu viel Frustration, wenn man es an einfache Dinge erinnern muss.
  • Herausforderungen bei der API-Integration: In Fällen wie der Integration von Milvus Lite mit jina-embeddings-v3 scheitert GPT-4o vollständig und wiederholt, selbst wenn wir die Milvus Lite API-Anweisungen bereitstellen, und generiert Code, der Datenbanken erstellt, denen die gerade erzeugten Embeddings fehlen, wodurch semantische Suchanwendungen unmöglich werden.

Claude

  • Code-Ausgabe-Einschränkungen: Claude-3.5 produziert oft Skripte, die vollständig erscheinen, aber verborgene Probleme enthalten, wie fehlende Fehlerbehandlung oder die Nichtberücksichtigung fehlender API-Schlüssel. Außerdem greift es manchmal auf vordefinierte Beispiele zurück, anstatt maßgeschneiderte Antworten auf spezifische Anweisungen zu generieren.
  • Stille Ausgabe: Bei LLM-generiertem Code ist es wirklich hilfreich, ein Logging der Hintergrundprozesse zu haben, wenn man das Programm ausführt, nur um sicherzustellen, dass das Modell nichts vermasselt hat. Wenn nicht ausdrücklich angegeben, laufen mit Claude erstellte Apps oft still, ohne dass Sie eine Ahnung haben, was passiert.
  • Interaktion mit CLI: Sie müssen klar spezifizieren, dass CLI-Befehle CLI-Befehle sind. Wenn Sie Claude sagen, es kann den llm-Befehl verwenden, versucht es oft, eine Python-llm()-Funktion aufzurufen, die nicht existiert.
  • Claude 3.5-Sonnet ist der richtige Weg: Claude-3.5-Haiku schien in ersten Tests auch okay zu funktionieren, aber Opus und Sonnet-3 fassen nur die Jina API-Anweisungen zusammen, ohne den Benutzer-Prompt zu berücksichtigen.

tagFazit

Die Verwendung von Meta-Prompt bietet neue Möglichkeiten, Jinas APIs mit LLMs zu integrieren, sodass Sie Experimente durchführen und Apps erstellen können, die beim ersten Versuch funktionieren. Keine Abstürze, verpasste API-Verbindungen oder halluzinierte Funktionen mehr – Meta-Prompt stellt sicher, dass der generierte Code von Anfang an präzise und funktional ist. Ob Sie nun Aussagen überprüfen, Embeddings generieren, ein leichtgewichtiges RAG-System aufbauen oder die App-Erstellung automatisieren – Meta-Prompt verwandelt natürlichsprachliche Anweisungen in ausführbaren, korrekten Code und umgeht den typischen Hin-und-her-Dialog mit einem LLM, um funktionierende Lösungen zu erhalten.

Ob Sie Meta-Prompt in ChatGPT kopieren oder es mit einem benutzerdefinierten LLM-Befehl verwenden, es bietet einen unkomplizierten, zuverlässigen Weg, Jinas Fähigkeiten zu nutzen. Unsere Experimente und Erkenntnisse zeigen Meta-Prompt als solides Werkzeug für eine robuste Integration in Ihre Projekte.

Wenn Sie bereit sind zu erkunden, was Meta-Prompt leisten kann, besuchen Sie docs.jina.ai für die neueste Dokumentation und Ressourcen.

Kategorien:
Tech-Blog
rss_feed
Büros
location_on
Sunnyvale, Kalifornien
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, USA
location_on
Berlin, Deutschland (Hauptsitz)
Prinzessinnenstraße 19-20, 10969 Berlin, Deutschland
location_on
Peking, China
Ebene 5, Gebäude 6, Nr. 48 Haidian West St. Peking, China
location_on
Shenzhen, China
402 Etage 4, Fu'an Technology Building, Shenzhen, China
Stiftung durchsuchen
Leser
Einbettungen
Reranker
DeepSearch
Klassifikator
Segmentierer
API-Dokumentation
Jina API-Schlüssel abrufen
Ratenbegrenzung
API-Status
Unternehmen
Über uns
Kontaktieren Sie unseren Vertrieb
Pressemitteilungen
Praktikantenprogramm
Begleiten Sie uns
open_in_new
Logo herunterladen
open_in_new
Bedingungen
Sicherheit
Terms & amp; Bedingungen
Privatsphäre
Cookie-Einstellungen
email
Jina AI © 2020-2025.