Stärkung von KI-Fähigkeiten mit Apache APISIX und der OpenAI API

Bobur Umurzokov

Bobur Umurzokov

February 7, 2023

Technology

Künstliche Intelligenz (KI) hat die Art und Weise, wie wir mit Technologie interagieren, revolutioniert und ist zu einem integralen Bestandteil moderner Anwendungen geworden. Die OpenAI API bietet Entwicklern leistungsstarke KI-Fähigkeiten, mit denen sie fortschrittliche KI-Anwendungen einfach erstellen können.

Mit der zunehmenden Nutzung von KI wächst jedoch auch der Bedarf an skalierbaren, leistungsstarken und sicheren API-Integrationen. Hier kommt Apache APISIX ins Spiel. Apache APISIX ist ein hochleistungsfähiges Open-Source-API-Gateway, das erweiterte Funktionen zur Verwaltung und Skalierung von API-Integrationen bietet.

In diesem Blogbeitrag werden wir die Vorteile der Integration von Apache APISIX mit der OpenAI API untersuchen und wie Sie Apache APISIX verwenden können, um eine skalierbarere, leistungsfähigere und sicherere KI-Integration zu erstellen. Von Proxy-Caching bis hin zu Sicherheitsfunktionen werden wir alles abdecken, was Sie wissen müssen, um mit der Integration von Apache APISIX und der OpenAI API zu beginnen. Egal, ob Sie ein KI-Entwickler oder ein DevOps-Experte sind, dieser Blogbeitrag ist Ihr umfassender Leitfaden zur Erstellung einer leistungsstarken und kosteneffizienten KI-Integration.

Lernziele

Im Laufe des Artikels werden Sie Folgendes lernen:

  • Was sind die OpenAI API und Apache APISIX?
  • Die Vorteile der Verwendung von Apache APISIX mit der OpenAI API.
  • Verschiedene Anwendungsfälle von Apache APISIX-Plugins zur Verbesserung der OpenAI API.
  • Wie man eine neue Route in APISIX für die OpenAI API erstellt.
  • Wie man den OpenAI API-Endpunkt als Upstream für die Route hinzufügt.
  • Wie man Authentifizierung, Ratenbegrenzung und Caching für die Route nach Bedarf konfiguriert.
  • Wie man die Route testet, um sicherzustellen, dass Anfragen korrekt an die OpenAI API weitergeleitet werden.

Was ist die OpenAI API?

OpenAI ist eine wegweisende Plattform zur Erstellung und Bereitstellung fortschrittlicher künstlicher Intelligenzmodelle. Diese Modelle können für eine Vielzahl von Aufgaben verwendet werden, wie z. B. natürliche Sprachverarbeitung, Bilderkennung und Sentiment-Analyse. Einer der Hauptvorteile von OpenAI ist, dass es eine API bereitstellt, die Entwickler verwenden können, um auf diese Modelle zuzugreifen und sie in ihre Anwendungen zu integrieren.

Die OpenAI API ist eine cloudbasierte Plattform, die Zugang zu OpenAIs KI-Modellen bietet, einschließlich ChatGPT. Die API ermöglicht es Entwicklern, KI-Fähigkeiten in ihre Anwendungen zu integrieren.

ChatGPT ist nur eines der KI-Modelle, die über die OpenAI API verfügbar sind, und es eignet sich besonders gut für Anwendungsfälle, die natürliche Sprachverarbeitung und Textgenerierung erfordern. Beispielsweise kann ChatGPT verwendet werden, um Textantworten in einem Chatbot zu generieren, Textvervollständigungsvorschläge zu liefern, Codevervollständigung zu ermöglichen oder Fragen in einer Konversationsschnittstelle zu beantworten.

Was ist Apache APISIX?

Apache APISIX ist eine Open-Source-Cloud-native API-Traffic-Management-Lösung, die API-Gateway-Funktionen bietet, um RESTful APIs zu erstellen, die skalierbar, sicher und hochverfügbar sind.

Durch die Verwendung eines API-Gateways mit der OpenAI API können Sie einfach skalierbare, sichere und leistungsstarke APIs erstellen und bereitstellen, die auf die OpenAI-Modelle zugreifen. Dies ermöglicht es Ihnen, die Leistungsfähigkeit von OpenAI in Ihre Anwendungen zu integrieren und Ihren Benutzern ein großartiges Erlebnis zu bieten.

Welche Vorteile bietet die Verwendung von Apache APISIX mit der OpenAI API?

Es gibt mehrere Vorteile bei der Verwendung von Apache APISIX mit der OpenAI API:

  1. Skalierbarkeit: Apache APISIX bietet eine einfache Möglichkeit, die OpenAI API zu verwalten und zu skalieren, sodass Sie erhöhten Datenverkehr und Nutzungsanforderungen bewältigen können.

  2. Leistung: Apache APISIX kann die Leistung von OpenAI API-Anfragen verbessern, indem es Antworten zwischenspeichert und die Latenz reduziert. Sicherheit: Apache APISIX bietet Sicherheitsfunktionen wie Verschlüsselung und Authentifizierung, wodurch der Zugriff auf die OpenAI API einfach gesichert werden kann.

  3. Flexibilität: Apache APISIX bietet eine flexible Möglichkeit, den Zugriff auf die OpenAI API zu verwalten und zu steuern, sodass Sie Ihre Integration nach Bedarf anpassen und konfigurieren können.

  4. Überwachung und Analysen: Apache APISIX bietet detaillierte Überwachungs- und Analysemöglichkeiten, sodass Sie die Leistung Ihrer OpenAI API-Integration verfolgen und optimieren können.

Apache APISIX-Plugins zur Verbesserung der OpenAI API

Es gibt mehrere Apache APISIX-Plugins, die verwendet werden können, um die Integration mit der OpenAI API zu verbessern. Einige der Plugins, die Sie mit der OpenAI API verwenden können, sind:

  • rate-limiting: Um die Anzahl der API-Anfragen zu begrenzen und eine Übernutzung der OpenAI API zu verhindern.
  • authentication: Um den Zugriff auf die OpenAI API zu sichern, indem Authentifizierungs- und Autorisierungsmechanismen implementiert werden.
  • traffic-control: Um den Datenverkehr der API zu steuern und eine konsistente Leistung und Stabilität der OpenAI API sicherzustellen.
  • observability: Um API-Anfragen und -Antworten zu überwachen und zu protokollieren, was Einblicke in die Nutzung und Leistung der OpenAI API bietet.
  • caching: Um API-Antworten zwischenzuspeichern und die Anzahl der API-Anfragen zu reduzieren, was die Leistung verbessert und die Kosten für die Nutzung der OpenAI API senkt.
  • transformation: Um API-Anfragen und -Antworten zu modifizieren und Daten von einem Format in ein anderes zu transformieren, z. B. von JSON zu XML.

Verwaltung von OpenAI APIs mit Apache APISIX Demo

Mit genügend theoretischem Wissen im Hinterkopf können wir nun in eine praktische Sitzung springen. In diesem Beispiel wird Apache APISIX verwendet, um ein einfaches API-Gateway zu erstellen, das auf die OpenAI API zugreift und den Datenverkehr durch die Erstellung einer Route, eines Upstreams und die Aktivierung einiger Plugins verwaltet. Wir werden mit dem OpenAI API Completion-Endpunkt interagieren, um einen Produktbeschreibungsgenerator zu erstellen, der Produktbeschreibungen effizient und genau generiert.

Eine typische Anfrage an das API-Gateway sieht beispielsweise wie folgt aus:

curl http://127.0.0.1:9080/openai/product/desc  -X POST -d
'{
   "model":"text-davinci-003",
   "prompt":"Write a brief product description for Apple 13 pro",
   "temperature":0,
   "max_tokens":256
}'

Und wir erhalten als Ausgabe:

{
   "object":"text_completion",
   "model":"text-davinci-003",
   "choices":[
      {
         "text":"\n\nThe Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine.
It features a 13-inch Retina display with True Tone technology, a powerful 8th-generation Intel Core i5 processor, 8GB of RAM, and a 256GB SSD for storage.
It also has a Touch Bar and Touch ID for added security and convenience. With up to 10 hours of battery life, you can stay productive all day long.
The Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine.",
         "index":0,
         "finish_reason":"stop"
      }
   ],
   "usage":{
      "prompt_tokens":9,
      "completion_tokens":109,
      "total_tokens":118
   }
}

Voraussetzungen

  • Sie müssen mit den grundlegenden Konzepten des OpenAI API Completion-Modells vertraut sein.
  • Erstellen Sie einen OpenAI API-Schlüssel: Um auf die OpenAI API zugreifen zu können, müssen Sie einen API-Schlüssel erstellen. Dies können Sie tun, indem Sie sich auf der OpenAI-Website anmelden und zur Seite zur Verwaltung der API-Schlüssel navigieren.
  • Docker auf Ihrem Computer installiert, um APISIX auszuführen.
  • Grundkenntnisse über einige APISIX-Kernkonzepte wie Route, Upstream und Plugin.

Projekt einrichten

Das erste, was Sie tun müssen, ist das apisix-docker-Projekt-Repo von GitHub zu klonen:

git clone https://github.com/apache/apisix-docker.git

Öffnen Sie den Projektordner in Ihrem bevorzugten Code-Editor. Das Tutorial verwendet VS Code.

Apache APISIX installieren und ausführen

Um Apache APISIX auszuführen, können Sie die folgenden Schritte befolgen:

Öffnen Sie ein neues Terminalfenster und führen Sie den Befehl docker compose up aus dem Stammverzeichnis des Projekts aus:

docker compose up -d

Der obige Befehl führt Apache APISIX und etcd zusammen mit Docker aus.

Wir haben APISIX in dieser Demo mit Docker installiert. Es gibt jedoch andere Möglichkeiten, es zu installieren, wie im Installationshandbuch beschrieben.

Einen Upstream für die OpenAI API erstellen

Sobald die Einrichtung abgeschlossen ist, erstellen wir ein Upstream-Objekt in APISIX unter Verwendung seiner Admin API. "Upstream" in APISIX bezieht sich auf die Backend-Server, die für die Bereitstellung der tatsächlichen Anfragedaten verantwortlich sind.

In unserem Fall definieren wir den Upstream-API-Server unter api.openai.com mit einem einzelnen Knoten und dem https-Schema, das bei der sicheren Kommunikation mit dem Upstream verwendet wird:

curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "name": "OpenAI API upstream",
  "desc": "Add the OpenAI API domain as the upstream",
  "type": "roundrobin",
  "scheme": "https",
  "nodes": {
    "api.openai.com:443": 1
  }
}'

Eine neue Plugin-Konfiguration erstellen

Jetzt erstellen wir eine neue Plugin-Konfiguration mit aktiviertem proxy-rewrite-Plugin.

Das Proxy-Plugin wird verwendet, um Anfragen an den OpenAI API-Completion-Endpunkt neu zu definieren. Die Konfiguration des Plugins umfasst Optionen, um die URL für den API-Endpunkt festzulegen, den OpenAI API-Schlüssel als Header zu übergeben und den Content-Type-Header auf application/json zu setzen.

curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
   "plugins":{
      "proxy-rewrite":{
         "uri":"/v1/completions",
         "host":"api.openai.com",
         "headers":{
            "Authorization":"OpenAI API Key",
            "Content-Type":"application/json"
         }
      }
   }
}'

Eine Route für den OpenAI-Completion-Endpunkt einrichten

Im nächsten Schritt richten wir eine neue Route in APISIX ein, um POST-Anfragen mit dem neuen benutzerdefinierten API-Gateway-URI-Pfad /openai/product/desc zu verarbeiten, und wir verweisen auf den zuvor erstellten Upstream und die Plugin-Konfiguration anhand ihrer eindeutigen IDs.

curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
   "name":"OpenAI API completion route",
   "desc":"Create a new route in APISIX for the OpenAI API completion endpoint",
   "methods":[
      "POST"
   ],
   "uri":"/openai/product/desc",
   "upstream_id":"1",
   "plugin_config_id":1
}'

Zusätzlich wird die Route mit Wiederholungsversuchen, einem Timeout und einem Keepalive-Timeout eingerichtet, um eine robuste und widerstandsfähige Kommunikation mit der OpenAI API sicherzustellen.

Testen mit einer Curl-Anfrage

Um die API zu testen, können Sie eine POST-Anfrage an den Endpunkt /openai/product/desc mit einem Tool wie cURL oder Postman senden. Das API-Gateway leitet die Anfrage an den OpenAI API-Completion-Endpunkt weiter und gibt die Ergebnisse erfolgreich zurück.

curl http://127.0.0.1:9080/openai/product/desc  -X POST -d
'{
   "model":"text-davinci-003",
   "prompt":"Write a brief product description for Apple 13 pro",
   "temperature":0,
   "max_tokens":256
}'

Großartig! Wir haben eine Antwort vom tatsächlichen Completion-Endpunkt erhalten:

HTTP/1.1 200 OK
Content-Type: application/json
...
{
   "object":"text_completion",
   ...
   "choices":[
      {
         "text":"\n\nThe Apple 13 Pro is the perfect laptop...",
         "index":0,
         "logprobs":null,
         "finish_reason":"stop"
      }
   ],
...
}

Einen neuen Consumer erstellen und Authentifizierung hinzufügen

Bisher ist unser API-Gateway-Produktbeschreibungsendpunkt /openai/product/desc öffentlich und für nicht autorisierte Benutzer zugänglich (obwohl die Kommunikation zwischen APISIX und der OpenAI API mit dem API-Schlüssel im Header gesichert ist). In diesem Abschnitt werden wir die Authentifizierungsfunktion aktivieren, um nicht autorisierte Anfragen an unsere API zu verhindern.

Dazu müssen wir einen neuen Consumer für unseren Endpunkt erstellen und das basic-auth-Plugin für die bestehende Plugin-Konfiguration hinzufügen, sodass nur berechtigte Benutzer darauf zugreifen können.

Der folgende Befehl erstellt unseren neuen consumer1 mit seinen Anmeldeinformationen wie username1 und password1:

curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "username": "consumer1",
    "plugins": {
        "basic-auth": {
            "username": "username1",
            "password": "password1"
        }
    }
}'

Jetzt aktualisieren wir die bestehende Plugin-Konfiguration und fügen das basic-auth-Plugin hinzu, damit APISIXs Route bei jedem Aufruf der APIs die Anfrage-Header mit den API-Consumer-Anmeldeinformationen überprüft:

curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
   "plugins":{
      "proxy-rewrite":{
         "uri":"/v1/completions",
         "host":"api.openai.com",
         "headers":{
            "Authorization":"OpenAI API Key",
            "Content-Type":"application/json"
         }
      },
      "basic-auth":{}
   }
}'

Nur wenn wir die richtigen Benutzeranmeldeinformationen in der Anfrage angeben und auf denselben Endpunkt zugreifen, erhalten wir die erwartete Antwort von der OpenAI API:

curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc  -X POST -d \
'{
   "model":"text-davinci-003",
   "prompt":"Write a brief product description for Apple 13 pro",
   "temperature":0,
   "max_tokens":256
}'

Ratenbegrenzungsrichtlinien für serverlose APIs anwenden

In diesem Abschnitt schützen wir unseren Produktbeschreibungsendpunkt vor Missbrauch, indem wir eine Drosselungsrichtlinie anwenden. Im Apache APISIX Gateway können wir eine Ratenbegrenzung anwenden, um die Anzahl der eingehenden Aufrufe zu beschränken.

Ratenbegrenzungsrichtlinie anwenden und testen

Mit der bestehenden Routenkonfiguration können wir eine Ratenbegrenzungsrichtlinie mit dem limit-count-Plugin anwenden, um unsere API vor abnormaler Nutzung zu schützen. Wir werden die Anzahl der API-Aufrufe auf 2 pro 60s pro API-Consumer begrenzen.

Um das limit-count-Plugin für die bestehende Route zu aktivieren, müssen wir das Plugin zur Plugin-Liste in unserer JSON-Plugin-Konfiguration hinzufügen:

curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
   "plugins":{
      "proxy-rewrite":{
         "uri":"/v1/completions",
         "host":"api.openai.com",
         "headers":{
            "Authorization":"OpenAI API Key",
            "Content-Type":"application/json"
         }
      },
      "basic-auth":{},
      "limit-count":{
         "count":2,
         "time_window":60,
         "rejected_code":403,
         "rejected_msg":"Requests are too frequent, please try again later.",
         "key_type":"var",
         "key":"remote_addr"
      }
   }
}'

Apache APISIX wird die ersten beiden Anfragen wie gewohnt behandeln. Eine dritte Anfrage im gleichen Zeitraum gibt jedoch einen 403 HTTP Forbidden-Code mit unserer benutzerdefinierten Fehlermeldung zurück:

curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc  -X POST -d \
'{
   "model":"text-davinci-003",
   "prompt":"Write a brief product description for Apple 13 pro",
   "temperature":0,
   "max_tokens":256
}'

# Nach dem ersten Aufruf

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 752
Connection: keep-alive
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1

# Nach dem zweiten Aufruf

HTTP/1.1 403 Forbidden

{"error_msg":"Requests are too frequent, please try again later."}

Caching für die OpenAI API-Antwort konfigurieren

Das proxy caching-Feature von Apache APISIX ermöglicht es Ihnen, API-Antworten zwischenzuspeichern und zwischengespeicherte Antworten auf nachfolgende Anfragen zu liefern. Dies kann dazu beitragen, die Anzahl der API-Anfragen zu reduzieren, was eine Reduzierung der Nutzungskosten der OpenAI API bedeutet, die Leistung Ihrer API-Integration zu verbessern und die Last auf dem API-Server zu verringern.

Apache APISIX bietet eine fein abgestimmte Kontrolle über das Caching-Verhalten, sodass Sie die Cache-Ablaufzeit, die Bedingungen für die Cache-Invalidierung und andere Caching-Richtlinien festlegen können.

In der folgenden Konfiguration definieren wir das proxy-cache-Plugin zusammen mit anderen Plugins, sodass nur erfolgreiche Produktbeschreibungsantworten von der POST-Methode des OpenAI API-Completion-Endpunkts zwischengespeichert werden.

curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
   "plugins":{
      "proxy-rewrite":{
         "uri":"/v1/completions",
         "host":"api.openai.com",
         "headers":{
            "Authorization":"OpenAI API Key",
            "Content-Type":"application/json"
         }
      },
      "basic-auth":{},
      "proxy-cache":{
         "cache_key":[
            "$uri",
            "-cache-id"
         ],
         "cache_method":[
            "POST"
         ],
         "cache_http_status":[
            200
         ],
         "hide_cache_headers":true
      }
   }
}'

Wir senden mehrere Anfragen an den Pfad /openai/product/desc und sollten jedes Mal eine HTTP 200 OK-Antwort erhalten. Allerdings zeigt der Apisix-Cache-Status in der Antwort MISS an, was bedeutet, dass die Antwort beim ersten Aufruf der Route noch nicht zwischengespeichert wurde. Wenn Sie nun eine weitere Anfrage stellen, werden Sie feststellen, dass Sie eine zwischengespeicherte Antwort mit dem Caching-Indikator HIT erhalten.

Die Antwort sieht wie folgt aus:

HTTP/1.1 200 OK
…
Apisix-Cache-Status: MISS

Wenn Sie den nächsten Aufruf des Dienstes durchführen, antwortet die Route auf die Anfrage mit einer zwischengespeicherten Antwort, da diese bereits in der vorherigen Anfrage zwischengespeichert wurde:

HTTP/1.1 200 OK
…
Apisix-Cache-Status: HIT

Zusammenfassung

Die Integration von Apache APISIX und der OpenAI API beinhaltet die Kombination der Funktionen von Apache APISIX, einem Open-Source-Hochleistungs-Microservices-API-Gateway, mit den fortschrittlichen künstlichen Intelligenz-Fähigkeiten der OpenAI API, um die Funktionalität und Leistung von Anwendungen zu verbessern. Mit dieser Integration können Entwickler die Skalierbarkeit und Leistung von Apache APISIX nutzen, um Microservices zu verwalten, während sie die wegweisenden KI-Fähigkeiten von OpenAI nutzen, um ihren Benutzern anspruchsvolle und fortschrittliche Funktionen zu bieten.

In späteren Phasen können Sie sowohl APISIX als auch den OpenAI-Runtime-Code auf einem Anwendungsserver oder einer öffentlichen Cloud bereitstellen, um sie in der Produktion verfügbar zu machen.

Im Laufe des Beitrags haben wir nur einige Beispiele für Apache APISIX-Plugins gezeigt, die mit der OpenAI API verwendet werden können. Sie können die Plugins auswählen, die Ihren Anforderungen am besten entsprechen, und Ihre Apache APISIX- und OpenAI API-Integration an die spezifischen Anforderungen Ihrer Anwendungen anpassen.

Verwandte Ressourcen

Empfohlene Inhalte

Community

🙋 Treten Sie der Apache APISIX Community bei 🐦 Folgen Sie uns auf Twitter 📝 Finden Sie uns auf Slack

Tags: