OpenAI’s Responses API: The Easiest Way to Build a RAG System?

LARRUZ walks through OpenAI's Responses API for building RAG systems: uploading PDFs, running semantic search, and generating answers from retrieved documents. The video covers costs, trade-offs, and an evaluation workflow using Ragas to measure retrieval and generation quality.
Chapters
Letzte Woche hat OpenAI eine Reihe neuer Entwicklertools veröffentlicht und ich starte eine neue Reihe, in der wir uns jedes einzelne Tool genauer ansehen werden. Ziel ist es, Entwicklern zu zeigen, wie sie mit diesen neuen Tools in die Entwicklung einsteigen können. In diesem ersten Video der Reihe befassen wir uns mit der Responses API und bauen darauf aufbauend ein Rack System auf. Diese neue API bietet nun die Möglichkeit, Tools zu verwenden, die sich stark von der Chart Completion API unterscheiden. Sie können sie als Alternative zur Assistance API betrachten, die Mitte 2026 eingestellt wird. Die neue Responses API verfügt über eine Reihe integrierter Tools und Sie können auch eigene Tools erstellen. Eines davon ist das Tool zur Dateisuche, mit dem Sie Dateien direkt auf den OpenAI Server hochladen können. Es erstellt einen Vektorspeicher für Sie und dann können Sie die Responses API verwenden, um Dokumente abzurufen und mit diesen Dokumenten zu chatten. Es handelt sich im Grunde genommen um Ihre eigene benutzerdefinierte Implementierung eines REC Systems. Anstatt dass Sie sich für die Chunking Strategie, die Einbettung und die Abrufpipeline entscheiden, kümmern Sie sich um alles für Sie. Sie müssen lediglich Ihre Dokumente hochladen, Ihre Suchanfrage angeben und erhalten dann Chunks, die für Ihre Suchanfrage relevant sind. Über dieselbe API können Sie diese dann an ein LLM weiterleiten, um Antworten für Ihre Nutzer zu generieren. Es gibt bereits Unternehmen, die auf der Responses API aufbauen und damit ihre eigenen Rack Pipelines erstellen. Sie benötigen keinen externen Vektorspeicher. Die Key speichert Ihre Daten und Einbettungen, aber Sie müssen auch die damit verbundenen Kosten berücksichtigen. Wenn Sie also Ihre Vektorspeicherlösung verwenden, kostet diese 10 Cent pro GB Vektorspeicher pro Tag, wobei das erste GB kostenlos ist und danach 2 Dollar und 50 Cent pro 1000 Tool Aufrufe. Das ist wahrscheinlich etwas teuer im Vergleich zu einigen anderen Lösungen oder ihrer eigenen Implementierung. In diesem Fall müssen Sie lediglich Ihre Dokumente hochladen und können sofort mit ihnen chatten. Sie müssen sich um keine Infrastruktur kümmern. In diesem Video erstellen wir mit Hilfe der Responses API eine Rack Pipeline. Wir verwenden diesen Blogbeitrag von OpenAI und ich zeige Ihnen auch, wie Sie eine Evaluierungs oder Teststrategie erstellen können, da es nicht ausreicht, einfach nur eine Rack Pipeline zu erstellen. Sie sollten sicherstellen, dass Sie über eine robuste Test oder Evaluierungsstrategie verfügen. Hier ist das Notebook, das wir für dieses Video verwenden werden. Der Link befindet sich in der Videobeschreibung. Zuerst müssen wir verschiedene Pakete installieren, die wir benötigen. Sie benötigen die neueste Version des Open IPython SDK, damit dies funktioniert, da die Referenz API das neueste Update ist. Dann importieren wir alle verschiedenen Pakete, die wir benötigen. Ich speichere meinen OpenAI API Schlüssel als Geheimnis in Google Colab. Deshalb muss ich die Benutzerdaten importieren. Wir lesen den API Schlüssel mit Hilfe des OpenAISDK aus. Zu den Ich habe den OpenAI Blogbeitrag aufgerufen, einige Ihrer neuesten Nachrichtenartikel heruntergeladen und sie in diesem Ordner namens iBlock PDFs abgelegt. Hier kommen Ihre eigenen Daten her. Wenn wir uns das ansehen, gibt es derzeit 5 oder 6 Dokumente. Eines davon ist dieses Zitat, das elongs jüngste Versuche, OpenAI zu verlangsamen, zurückweist. Dann gibt es noch einen weiteren Blogbeitrag über tiefgreifende Recherche. Ein weiterer befasst sich mit dem Erstellen von Agenten. Alle diese Dokumente sind PDF Dateien, aber diese API unterstützt mehrere verschiedene Dateitypen. Hier ist eine detaillierte Liste aller Dateitypen, die von diesen Vektorspeichern unterstützt werden. Als Nächstes erstellen wir einen Vektorspeicher auf den Servern von OpenAI und laden dann Dateien in diesen Vektorspeicher hoch. Das Erstellen eines Vektorspeichers ist nun recht einfach. Wir haben also Client Vector Stores und Sie müssen den Namen des Vektorspeichers angeben. Daraufhin erhalten Sie die ID des Vektorspeichers, den Namen, den Zeitpunkt der Erstellung und die Anzahl der Dateien im Vektorspeicher. Diese Funktion erstellt im Grunde die Vektorspeicher. Sie können nun je nach Bedarf mehrere verschiedene Vektorspeicher erstellen. Beachten Sie jedoch, dass die Gebühren auf der Gesamtzahl Ihrer Vektorspeicher und der Datenmenge in jedem Vektorspeicher basieren. Hier ist ein einfaches Ich erstelle einen Vektorspeicher mit dem Namen OpenAI Blockstore. Wir rufen diese Funktion auf. Geben Sie den Namen an. Hier ist die Vektorspeicher ID, der Name des Vektorspeichers zum Zeitpunkt der Erstellung. Derzeit befinden sich keine Dateien in diesem Vektorspeicher. Hier ist eine Hilfsfunktion, die eine einzelne Datei entgegennimmt und in den Vektorspeicher hochlädt. Sie liest die Datei. Zum Hochladen der Datei müssen Sie dann den Endpunkt Dateien erstellen verwenden. Sie müssen den Namen der Datei angeben. In diesem Fall müssen Sie die PDF Datei nicht analysieren. Wir laden die PDF Dateien direkt hoch. Dies ist also eine ziemlich praktische Funktion. Sie lädt im Grunde die Datei hoch und wir erhalten eine Antwort. Wir möchten sicherstellen, dass die Datei erfolgreich hochgeladen wurde. In diesem Code findet also eine Fehlerbehandlung statt. Das war zunächst eine einzelne Datei, aber hier ist eine Hilfsfunktion, die den Inhalt eines Ordners liest. Mit Hilfe dieser Funktion zum Hochladen einzelner Dateien versuchen wir, alle Dateien gleichzeitig hochzuladen. Dies beschleunigt die Ladezeit des Vektorspeichers für uns. OK. Jetzt verwenden wir die Funktion zum Hochladen von PDF Dateien in den Vektorspeicher. Wir geben den Namen unseres Vektorspeichers an. In diesem Fall haben wir den Pfad angegeben, unter dem die Dateien gespeichert sind. Die Funktion liest also einfach die Dateien von hier und beginnt mit dem Hochladen. Sie sehen, dass wir insgesamt 5 verschiedene Dateien hochgeladen haben. Es gab keine Fehler. Alle diese Dateien wurden also erfolgreich hochgeladen. Sobald die Dateien hochgeladen wurden, verfügt OpenAI über eine eigene benutzerdefinierte Chunking Strategie, mit der ihre Dokumente in Blöcke aufgeteilt werden. OpenAI verwendet ein eigenes Einbettungsmodell. Diese Einbettungen werden erstellt und im Vektorspeicher gespeichert. Dies ist normalerweise der wissensbasierte Erstellungsteil oder das Einfügen der Daten in den Vektorspeicher. Sie können nun direkt den Vektorspeicher verwenden, um Dokumente abzurufen, wenn Sie die endgültige Antwort vom LLM nicht möchten. OpenE bietet Ihnen also die Möglichkeit, direkt mit diesem Vektorspeicher zu interagieren. Sie müssen lediglich Ihre Abfrage angeben. In diesem Fall verwenden wir den Suchendpunkt im Vektorspeicher. Wir müssen die ID des Vektorspeichers angeben, den wir gerade erstellt haben. Dann geben wir die Benutzerabfrage an und das Ergebnis ist die Liste der Dokumente, die er für am relevantesten hält. Hier sehen Sie, dass diese Dokumente in Bezug auf die Anzahl der Blöcke ziemlich gleichmäßig verteilt sind, da es sich um relativ kleine Dokumente handelt. Wir haben nun eine Abfrage bezüglich der Tiefenrecherche gestellt und Sie können sehen, dass alle Antworten aus diesem Blogbeitrag von OpenE stammen, in dem wir Tiefenrecherche vorstellen. Sie erhalten auch eine Relevanzbewertung. Sie verfügen über einen benutzerdefinierten Re Anker der jedem Dokument, das basierend auf der Benutzerabfrage zurückgegeben wird, eine Relevanzbewertung zuweist. In diesem Fall sind alle Details ausgeblendet, sodass wir nicht wissen, wie es funktioniert. Oder was ist dieser Reanker oder die benutzerdefinierte Strategie. Sie abstrahieren das alles einfach, damit die Entwickler diese Anwendungen schnell erstellen können. Jetzt können wir uns tatsächlich den ersten zurückgegebenen Blog ansehen. Das ist also im Grunde der Titel dieses Blogbeitrags. Das war jetzt eine relativ einfache und unkomplizierte Frage, weil dieses Schlüsselwort Deep Research in diesem bestimmten Block häufig vorkommt, aber das sollte Ihnen nur ein Beispiel Verarbeitung Ihres Dokuments in Bezug auf die Anzahl der Zeichen. Es scheint sich also insgesamt um etwa 3000 Zeichen zu handeln, was wahrscheinlich etwa 800 bis 0 0 Token entspricht. OK, ich habe also denselben Vektorspeicher verwendet. Ich habe gefragt, was das Gericht zu Elons Fall gesagt hat. In diesem Fall können Sie sehen, dass die ersten drei Dokumente aus dieser Datei stammen. Das Gericht lehnt Elons jüngsten Versuch ab, OpenAI zu verlangsamen, und die Relevanz ist ziemlich hoch. Für diese gibt es jedoch noch einige andere Blöcke, die aus der Deep Research Datei oder der OpenIGPT 4.5 Systemkarte stammen. Die Relevanz ist für diese jedoch sehr gering, so dass der Reanker in diesem speziellen Fall zu funktionieren scheint. Manchmal möchten Sie nur die Dokumente, nicht aber den Generierungssteil. Aus diesem Grund ermöglichen Sie es dem Benutzer, nur die Dokumente abzurufen. Möglicherweise verfügen Sie über eine eigene benutzerdefinierte Pipeline, die auf der Grundlage dieser Dokumente Maßnahmen ergreift. Wenn Sie jedoch auch eine Antwort vom LLM erhalten möchten, wird dies äußerst einfach In einem einzigen API Aufruf können Sie also die Antwort erhalten, die im Grunde genommen den End to End Abruf und Generierungsschritt umfasst. In diesem Fall verwenden wir den Response Endpunkt. Sie geben Ihre Benutzerabfrage als Eingabe an und dann das Modell, das Sie verwenden möchten. Im Moment verwenden wir GPD mini und jetzt teilen wir ihm mit, welches Tool verwendet werden soll. Die Response API kann also ein Tool anhand der Benutzerfrage oder Abfrage auswählen. Im Moment geben wir ihm nur ein einziges Tool, nämlich die Dateisuche, und innerhalb der Dateisuche stellen wir diesen einzelnen Vektorspeicher bereit. Sie können mehrere Vektorspeicher bereitstellen, falls vorhanden. Derzeit hat dieser API-Endpunkt jedoch Zugriff auf ein einzelnes Dateisuchtool. OK, Dann extrahieren wir verschiedene Segmente aus der Antwort. Sie sehen, dass diese Deep Search Datei betrachtet wird. Sie können diese jedoch verwenden und die endgültige Antwort generieren, mit Hilfe desselben API Endpunkts. Betrachten wir nun die endgültige Antwort. Und hier ist Die endgültige Antwort. Deep Research ist eine Neu Eingeführ Funktion von OpenAI, mit der Benutzer komplexe, mehrstufige Rechercheaufgaben im Internet durchführen können. Richtig. Dies ist im Grunde die Beschreibung dessen, was Deep Research basierend auf dem bereitgestellten Kontext tut. Ich habe das Ganze also in eine Funktion gepackt und dann die beiden Abfragen kombiniert, die ich zuvor hatte. Es ist tatsächlich intelligent genug, dass die Dateien, die es verwendet, von denen sich die erste auf Elongs Fall bezieht, während sich die zweite auf Deep Research bezieht. Obwohl die beiden verschiedenen Teile der Frage über zwei verschiedene Dinge sprechen, kann es dennoch für beide Antworten generieren, was ziemlich interessant ist. Okay, noch eine Sache. Sie können hier auch mehrere Tools kombinieren. Im Moment verwenden wir nur das Tool zur Dateisuche, aber es gibt auch andere Tools, die Sie kombinieren können, beispielsweise das Tool zur Websuche, das normalerweise sehr hilfreich ist, wenn Sie möchten, dass das System auf die Websuche zurückgreift, wenn es in Ihren Dokumenten keine Informationen finden kann. Ich werde ein weiteres Video erstellen, in dem wir uns das Agent SDK ansehen, um ein Multi Agent System zu erhalten, das verschiedene Tools verwendet. Wenn Sie daran interessiert sind, abonnieren Sie unbedingt den Kanal. Dies war also ein sehr einfaches Beispiel für den Einstieg. Es erleichtert Ihnen die Erstellung Ihres Vektorspeichers und der gesamten Pipeline enorm. Wenn Sie jedoch nach anderen Lösungen suchen, vergleichen Sie diese Preise unbedingt mit Ihrer benutzerdefinierten Implementierung oder anderen Lösungen. Der zweite Teil dieses Videos befasst sich mit der Bewertung. Wenn Sie eine Rack Pipeline erstellen und unabhängig davon, ob Sie eine benutzerdefinierte Implementierung haben oder etwas mit der Responses API erstellen, sollten Sie messen, wie gut die Antworten sind. Dies ist eine Dummy Implementierung, die jedoch die meisten wichtigen Dinge abdeckt, die Sie benötigen. Das erste, was wir benötigen, ist ein Bewertungsdatensatz. Wir benötigen eine Reihe von Fragen und Antworten, mit denen wir messen können, wie gut unsere Rack Pipeline ist. Wenn Sie eine Bewertungspipeline für Rack erstellen, möchten Sie diese im Allgemeinen sowohl beim Abruf als auch beim Generierungsschritt messen. Sie möchten also feststellen, ob die vom LLM oder von der auf dem Vektorspeicher basierenden semantischen Suche zurückgegebenen Dokumente tatsächlich für die Frage relevant sind oder nicht. Das ist der erste Schritt. Im zweiten Schritt möchten Sie anhand dieser Dokumente feststellen, ob Ihr LLM die Antworten generieren kann, nach denen der Nutzer sucht. Es gibt verschiedene Bibliotheken oder Pakete. Ragus ist eines, das den Rückruf, die Genauigkeit und die Richtigkeit der Antworten misst. Wenn Sie also eine weiterführende Behandlung benötigen, können Sie sich etwas wie Ragas ansehen, das Ihnen einen sehr guten Einstieg in die Bewertung bietet. Zunächst müssen wir jedoch einen Datensatz erstellen. Daher verwenden wir ein LLM, um diesen Datensatz für uns zu generieren. Das funktioniert folgendermass Wir stellen das Dokument einem LLM zur Verfügung und bitten das LLM, eine Frage für uns zu generieren. Hier ist eine sehr einfache Eingabeaufforderung. Kannst du eine Frage generieren, die nur mit Hilfe dieses Dokuments beantwortet werden kann? Dann stellen wir den Text oder einen einzelnen Abschnitt bereit und verwenden GPT-40 um eine Frage. Zu generieren. Hier ist nur ein Beispiel. Wie lautete das Ergebnis von Elon Musks Antrag auf eine Einstweilige Verfügung gegen OpenAI, wie im Dokument erwähnt. In diesem Fall war das Eingabedokument ein Blogbeitrag von OpenAI, in dem eLongs einstweilige Verfügung gegen OpenAI erörtert wird. Du kannst jedoch alle PDF Dateien durchgehen und fragen generieren. Hier sind also einige Fragen, die vom Modell generiert wurden. Zuerst haben wir das Quelldokument, dann die entsprechende Frage. Die zweite Frage, die auf eingehender Forschung basiert, lautet Welche prozentuale Genauigkeit hat das Modell, das die eingehende Forschung antreibt, bei der letzten Prüfung der Menschheit erreicht. LLMs können diese Datensätze nun in großem Umfang generieren. Es ist jedoch sehr wichtig, tatsächlich einen Menschen mit einzubeziehen, der sich diese Fragen ansehen und feststellen kann, ob sie sinnvoll sind oder nicht. Es gibt ein sehr interessantes Paper, das ich gerade lese, in dem die Validatoren validiert werden, die die LLM gestützte Bewertung von Gliedmassenausgaben mit menschlichen Präferenzen abgleichen. Dies befasst sich im Wesentlichen mit dem Problem, LLM als Beurteilungsinstanz zu verwenden. Sowohl bei der Erstellung der Datensätze als auch bei der Validierung der Antworten. Ich werde wahrscheinlich ein ausführliches Video zu diesem Paper und einigen der Einschränkungen bei der Verwendung von LLM als Beurteilungsinstanz erstellen. Das ist also ein sehr wichtiger Aspekt, den es zu berücksichtigen gilt. Sobald wir diese Fragen haben, müssen wir nur noch jede dieser Fragen nehmen und unseren Vektorspeicher durchlaufen, um herauszufinden, ob er das gesuchte Dokument abrufen kann. In diesem Fall besteht die Idee darin, dass wir das abgerufene Dokument anhand des abgerufenen Dokuments mit dem Originaldokument vergleichen, aus dem die Frage stammt, Wenn es sich um dasselbe Dokument handelt, werten wir es als bestanden, Andernfalls wird es ein Fehlschlag sein. Dann verwenden wir diese Informationen, um her herauszufinden, wie hoch die Recall Präzision bei K ist. Ich habe nun anhand von fünf sehr einfachen Fragen getestet. Deshalb erhalten wir 100 Prozent Ergebnisse. Die Idee wäre jedoch, dass Sie über einen viel größeren Datensatz verfügen, bei dem Sie einen Schwellenwert festlegen können, bei dem Sie messen möchten, ob das Dokument in ihren Top 5 Dokumenten oder Top 10 Dokumenten angezeigt werden soll. Richtig, das sind die Schwellenwerte, die von Ihrer spezifischen Anwendung abhängen. Dies war eine sehr einfache Strategie für fortgeschrittenere Bewertungsmetriken. Ich empfehle dringend, sich Ragas anzusehen. Außerdem haben wir nur die Abrufgenauigkeit aus dem Vektorspeicher betrachtet, nicht die Generierungsgenauigkeit oder die Qualität der Antworten, die GBT Mini basierend auf dem bereitgestellten Kontext generiert. Dazu sollten Sie sich Metriken wie die Relevanz der Antworten oder die Treue ansehen. Ich hoffe, Sie fanden dieses Video hilfreich. Danke fürs Zuschauen und wie immer bis zum nächsten Mal.










