Heim >Technologie-Peripheriegeräte >KI >Bauen Sie LLM-Anträge auf Produktionsstörungen mit Pydanticai-Anwendungen
In der sich schnell entwickelnden Landschaft der Softwareentwicklung hat die Schnittstelle künstlicher Intelligenz, Datenvalidierung und Datenbankmanagement beispiellose Möglichkeiten eröffnet. In diesem Blog-Beitrag wird in einem innovativen Ansatz zur Erläuterung von SQL-Code-Generation und SQL-Code unter Verwendung des neuesten Pydanticai-Frameworks und des Gemini-1.5-Modells von Google untersucht.
Für Entwickler, Datenwissenschaftler und Datenanalysten bietet diese Exploration einen Einblick in die Zukunft der intelligenten Codegenerierung aus der Verarbeitung natürlicher Sprache, bei der komplexe Datenbankabfragen mit Leichtigkeit und Genauigkeit erstellt werden können.
Dieser Artikel wurde als Teil des Data Science -Blogathons veröffentlicht.
Pydanticai ist eine leistungsstarke Python -Bibliothek, die die Datenvalidierung und Typprüfung revolutioniert. Es bietet einen deklarativen Ansatz zur Definition von Datenmodellen und erleichtert es, komplexe Datenstrukturen zu erstellen und zu validieren.
Wichtige Merkmale von Pydantic sind:
Anpassung
Flexibilität
Ermöglicht die Steuerung der Datenvalidierung Strenge:
Serialisierung
Leistung
Ökosystem
Pydanticai vereinfacht die Datenvalidierung und die Typ-Überprüfung in Python und macht es zu einem leistungsstarken Tool zum Erstellen robuster Datenmodelle. Lassen Sie uns einige praktische Beispiele untersuchen, die seine Fähigkeiten zeigen.
vom pydantischen Import -Basemodel Klassenbenutzer (Basemodel): Name: str Alter: int # Gültige Daten user = user (name = "alice", Alter = 30) Druck (Benutzer) print ("===================================")) # Ungültige Daten (Alter ist eine Zeichenfolge) versuchen: user = user (name = "alice", ay "dreißig") außer Ausnahme als E: Druck (e)
Der obige Code definiert ein Benutzermodell unter Verwendung von Pydantics Basemodel und setzt den Namen als Zeichenfolge und Alter als Ganzzahl durch. Es validiert korrekte Daten, erhöht jedoch einen Validierungsfehler, wenn ungültige Daten (eine Zeichenfolge für das Alter) bereitgestellt werden.
Ausgabe:
vom pydantischen Import -Basemodel Klassenprodukt (Basemodel): Preis: Float Menge: int # Daten mit nicht übereinstimmenden Typen Produkt = Produkt (Preis = "19,99", Quantity = "5") Druck (Produkt) print (type (product.price)) print (type (product.quantity))
Hier das Produktmodell mit Preis als Schwimmer und Menge als Ganzzahl. Pydantic zweckt automatisch die String -Eingänge („19,99“ und „5“) in die richtigen Typen (Float und INT) und demonstrieren seine Art Conversion -Funktion.
Ausgabe:
vom pydantischen Import -Basemodel Klassenadresse (Basemodel): Straße: str Stadt: str Klassenbenutzer (Basemodel): Name: str Adresse: Adresse # Gültige Daten user = user (name = "bob", adress = {"street": "123 main st", "Stadt": "Wunderland"}) Druck (Benutzer) # Zugriff verschachtelte Attribute print (user.address.city)
Hier definieren wir ein verschachteltes Benutzermodell , das ein Adressmodell enthält. Pydantic ermöglicht eine verschachtelte Validierung und automatische Wörterbücher in Modelle. Gültige Daten initialisiert ein Benutzerobjekt und Sie können direkt auf verschriebene Attribute wie ' user.address.city' zugreifen.
Ausgabe:
vom pydantischen Import -Basemodel, Feld, Field_validator Klassenbenutzer (Basemodel): Name: str Alter: int = field (..., gt = 0, Beschreibung = "Alter muss größer als Null sein") @field_validator ("Name") Def name_must_be_non_empty (cls, Wert): wenn nicht value.strip (): ValueError erhöhen ("Name kann nicht leer sein") Rückgabewert # Gültige Daten user = user (name = "charlie", Alter = 25) Druck (Benutzer) # Ungültige Daten versuchen: user = user (name = "", Alter = -5) außer Ausnahme als E: Druck (e)
Hier definieren wir ein Benutzermodell mit einer Validierungsregel, das Alter muss größer als 0 sein, und der Name kann nicht leer sein (über die Methode name_must_be_non_empy validiert). Gültige Daten erstellen eine Benutzerinstanz , während ungültige Daten (leerer Name oder negatives Alter) detaillierte Validierungsfehler hervorrufen und die Validierungsfunktionen von Pydantic demonstrieren.
Ausgabe:
Dies sind einige der zentralen Beispiele für Pydantic. Ich hoffe, sie helfen Ihnen, das Grundprinzip der Datenvalidierung zu verstehen.
KI -Agenten sind intelligente Systeme, die autonom auf Aufgaben ausführen, Entscheidungen treffen und mit ihrer Umgebung interagieren, um spezifische Ziele zu erreichen. Diese Agenten sind nicht neu, aber die jüngste schnelle Entwicklung in der generativen KI, und die Kombination mit Agenten macht die Agentensoftwareentwicklung in der neuen Ära. Jetzt können Agenten Eingaben verarbeiten, Aktionen ausführen und sich dynamisch anpassen. Ihr Verhalten ahmt das menschliche Problemlösung nach und ermöglicht es ihnen, in verschiedenen Bereichen mit minimaler menschlicher Intervention zu funktionieren.
Ein agierischer Workflow bezieht sich auf die Strukturen, zielgerichtete Abfolge von Aufgaben, die von einem oder mehreren KI-Agenten verwaltet und ausgeführt werden. Unline-starres traditioneller Workflow, Agenten-Workflow zeigt Anpassungsfähigkeit, Autonomie und Kontextbewusstsein. KI -Agenten in diesen Workflows können unabhängig voneinander Entscheidungen treffen, Unteraufgaben delegieren und aus Feedback lernen, was zu effizienten und optimierten Ergebnissen führt.
Die Integration von AI-Agenten und Agenten-Workflows hat die Branche revolutioniert, indem komplexe Aufgaben automatisiert, die Entscheidungsfindung verbessert und die Effizienz vorgestellt werden. Diese intelligenten Systeme passen sich dynamisch an und ermöglichen in verschiedenen Bereichen intelligentere Lösungen.
AI -Agenten automatisieren sich wiederholende Aufgaben wie den Kundensupport über Chatbots, E -Mail -Management und Verkaufspipeline -Optimierung. Sie verbessern die Produktivität, indem sie die Humanressourcen aus höherwertigen Aufgaben befreien.
AI-betriebene Wirkstoffe beschleunigen die Software-Lebenszyklen, indem sie Code generieren, testen und debuggen, wodurch die Entwicklungszeit und das menschliche Fehler verkürzt werden.
KI -Agenten unterstützen die medizinische Diagnose, die Überwachung der Patienten und die Personalisierung der Behandlung, die Verbesserung der Gesundheitsversorgung und die betriebliche Effizienz.
Agenten-Arbeitsabläufe in Finanzsystemen automatisieren Betrugserkennung, Risikobewertungen und Investitionsanalysen und ermöglichen eine schnellere und zuverlässigere Entscheidungsfindung.
Intelligenzagenturen verbessern die Personalisierung in Einkaufserlebnissen, optimieren Produktempfehlungen und den Kundendienst.
Der Aufstieg von AI -Agenten und Agenten -Workflows bedeutet eine Verschiebung zu hoch autonomen Systemen, die komplexe Prozesse verwalten können. Ihre Anpassungsfähigkeit und Lernfähigkeiten machen sie für moderne Branchen, die Innovationen, Skalierbarkeit und Effizienz in allen Bereichen vorantreiben, unverzichtbar. Während sich die KI weiterentwickelt, werden sich KI -Agenten weiter in unsere täglichen Workflows integrieren und die Art und Weise verändern, wie Aufgaben verwaltet und ausgeführt werden.
Pydanticai ist ein Python-Agent-Framework, das vom Schöpfer von Pydantic entwickelt wurde, Fastapi, um die Konstruktion von Anwendungen für Produktionsqualität unter Verwendung generativer KI zu optimieren.
Die wichtigsten Merkmale Pydanticai umfassen:
Hier ist ein minimales Beispiel für Pydanticai:
OS importieren vom Pydantic_ai Importagenten von pydantic_ai.models.gemini Import Geminimodel aus dotenv import load_dotenv load_dotenv () gemini_api_key = os.getenv ("<google_api_key>") Modell = Geminimodel ( "Gemini-1.5-Flash", api_key = gemini_api_key, ) Agent = Agent ( Modell = Modell, System_prompt = "Sei präzise, antworte mit einem Satz.", ) result = Agent.run_sync ('Woher kommt "Hallo Welt"?') drucken (Ergebnis.Data)</google_api_key>
Ausgabe:
Jetzt ist es Zeit, echte Sachen zu machen. Wir werden eine Postgres -SQL -Abfragegenerierung mit dem Pydanticai Agent Framework erstellen.
Legen Sie die Grundlage für Ihr Projekt mit einer Schritt-für-Schritt-Anleitung zum Einrichten der wichtigsten Tools und der Umgebung.
Wir werden eine Conda -Umgebung für das Projekt schaffen.
#create eine env $ conda create -name sql_gen python = 3.12 # Aktivieren Sie die Env $ conda aktivieren sql_gen
Erstellen Sie nun einen Projektordner
# Erstellen Sie einen Ordner $ mkdir SQL_CODE_GEN # In den Ordner wechseln $ CD SQL_CODE_GEN
Um die Postgres, PSQL-Command-Tools und PGADMIN-4 zu installieren, laden Sie Ihr Installationsprogramm für Ihre Systeme für Ihre Systeme und installieren Sie alle Tools auf einmal.
Laden Sie nun die DVDRental -Datenbank von Hereand herunter, um sie in Postgres zu laden. Befolgen Sie diese Schritte
psql -u postgres # Es wird nach einem Passwort gefragt
# In der postgres =## Datenbank erstellen DVDrental;
Beenden Sie nun den Befehl PSQL und geben Sie dann das Terminal ein
pg_restore -U postgres -d dvdrental d: /sampledb/postgres/dvdrental.tar
Stellen Sie nun eine Verbindung zum PSQL her und überprüfen Sie, ob Ihre Datenbank geladen ist oder nicht.
psql -u postgres # Verbinden Sie sich mit DVDrental \ c dvdrental # Lassen Sie uns die Tische sehen \ dt
Ausgabe:
Wenn Sie die oben genannten Tabellen sehen, sind Sie in Ordnung. Wir sind bereit, unser Hauptprojekt zu starten.
Installieren Sie nun die erforderlichen Python -Bibliotheken in der SQL_Gen Conda Env.
conda aktivieren sql_gen # Bibliotheken installieren PIP Installation Pydantic Asyncpg Asyncio Pydantic-Ai PIP Installieren Sie Python-dotenv fastapi Google-Generativeai PIP Installieren Sie Devtools Annotated-Typ-Typ-Ausdehnungen
Unser Projekt enthält 4 Dateien, nämlich Haupt-, Modelle, Service und Schema.
sql_query_gen/ | |--main.py |-models.py |--schema.py |-service.py |-.v | --__ init__.py |-. Gitignore
Tauchen Sie in die detaillierten Schritte und praktischen Techniken ein, um Ihr Projekt mit diesem umfassenden Implementierungshandbuch vom Konzept zur Realität zu bringen.
Wir werden zunächst Datenmodelle in der Datei models.py erstellen
aus DataClasses importieren Sie DataClass Aus dem Annotierten der Einfuhr des Imports asyncpg importieren aus Annotatatated_types import minlen aus pydantischem Import -Basemodel, Feld @dataclass Klassen -DEPs: Conn: Asyncpg.Connection Klassenerfolg (Basemodel): SQL_Query: Annotated [STR, Minlen (1)] Erläuterung: STR = Field ("", Beschreibung = "Erläuterung der SQL -Abfrage als Markdown") Klasse InvalyRequest (Basemodel): ERROR_MESSAGE: STR
Im obigen Code,
Dieser Code legte die Grundlage für die Datenbankverbindungsverwaltung, die Eingabevalidierung, die strukturierte Reaktionsbearbeitung und die Fehlerbehandlung fest.
Jetzt werden wir die Pydanticai -Dienste für die SQL -Generation im Servicemodul implementieren.
Bibliothek und Konfiguration importieren
OS importieren Aus der Typisierung von Import Gewerkschaft aus dotenv import load_dotenv asyncpg importieren Aus typing_extensions importieren typealias von Pydantic_ai Importagenten, ModellRetry, Runcontext von pydantic_ai.models.gemini Import Geminimodel Aus dem Schema importieren DB_SCHEMA aus Modellen importieren DEPs, Erfolg, InvalidRequest
Um zu konfigurieren, erstellen Sie eine .env -Datei im Projektroot und geben Sie dort Ihren Gemini -API -Schlüssel ein
# .env Gemini_api_key = "asgfhkdhjy457gthjhajbsd"
Dann in der Datei service.py:
load_dotenv () gemini_api_key = os.getenv ("google_api_key")
Es wird die Google -API -Taste aus dem `geladen. Env `Datei.
Antwort: typealias = Union [Erfolg, InvalyRequest] Modell = Geminimodel ( "Gemini-1.5-Flash", api_key = gemini_api_key, ) Agent = Agent ( Modell, result_type = Antwort, # Typ: Ignorieren DEPS_TYPE = DEPS, )
Jetzt definieren wir die Systemaufforderung für unsere SQL -Abfragegenerierung.
@Agent.System_prompt Async def system_prompt () -> str: kehren Sie f "" \ zurück Angesichts der folgenden PostgreSQL -Tabelle der Datensätze ist Ihre Aufgabe zu Schreiben Sie eine SQL -Abfrage, die zur Anfrage des Benutzers passt. Datenbankschema: {Db_schema} Beispiel Anfrage: Finden Sie alle Filme mit einem Mietpreis von mehr als 4,00 USD und einer Bewertung von 'PG' Antwort: Wählen Sie Titel, Rent_rate aus Aus dem Film Wobei Rental_Rate> 4.00 und Bewertung = 'pg'; Beispiel Anfrage: Finden Sie die Filme mit der längsten Länge Antwort: Wählen Sie Titel, Länge aus Aus dem Film Wobei Länge = (maximal (Länge) aus dem Film auswählen); Beispiel Anfrage: Finden Sie die durchschnittliche Mietdauer für Filme in jeder Kategorie Antwort: Wählen Sie C.Name, AVG (f.rental_duration) als durchschnitt_rental_duration Aus Kategorie c Schließen Sie Film_Category FC unter category_id = fc.category_id bei Treten Sie Film F auf fc.film_id = f.film_id bei Gruppe von C.Name Bestellung nach durchschnittlich_rental_duration desc; "" "
Hier definieren wir den Basiskontext für das KI -Modell und geben Beispiele an, um die Antworten des Modells zu leiten. Wir nehmen auch die Datenbankschema -Informationen in das Modell ein, damit das Modell das Schema analysieren und eine bessere Antwort generieren kann.
Um die Antwort aus dem KI-Modell fehlerfrei und bis zu den Projektanforderungen zu vermitteln, validieren wir nur die Antworten.
@Agent.Result_validator Async def validate_result (CTX: RunContext [DEPS], Ergebnis: Antwort) -> Antwort: Wenn is inviert (Ergebnis, InvalyRequest): Rückgabeergebnis # Gemini fügt SQL oft Extraneos -Gegenreaktionen hinzu result.sql_query = result.sql_query.replace ("\\", "") wenn nicht result.sql_query.upper (). startswith ("select"): ModellRetry erhöhen ("Bitte erstellen Sie eine Auswahlabfrage") versuchen: Warten Sie ctx.deps.conn.execute (f "Erklären {result.sql_query}") Außer asyncpg.exceptions.postgresError als e: modelRetry (f "ungültig SQL: {e}") aus e anders: Rückgabeergebnis
Hier validieren und verarbeiten wir die generierten SQL -Abfragen
Schlüsselvalidierungsschritte:
Um Ihr Datenbankschema zu erhalten, öffnen Sie die von Ihnen während des Postgres-Setups installierte PGADMIN4, wenden Sie sich zur Datenbank " DVDRENTULAL" , klicken Sie mit der rechten Maustaste darauf und klicken Sie auf " ERD für Datenbank ".
Sie erhalten das folgende ERD -Diagramm und erzeugen jetzt SQL aus dem ERD (siehe runde schwarze Markierung auf dem Bild).
Kopieren Sie das Schema in das Schema.py -Modul:
# schema.py Db_schema = "" "" BEGINNEN; Erstellen Sie eine Tabelle, wenn nicht öffentlich.Actor existiert ( Actor_id Serial nicht null, First_Name -Zeichen variiert (45) sammeln pg_catalog. "Standard" nicht null, Last_name -Zeichen variiert (45) sammeln pg_catalog. "Standard" nicht null, Last_update Timestamp ohne Zeitzone nicht null Standard (), Einschränkung Actor_Pkey Primärschlüssel (Actor_id) ); . . . . . . "" "
Der obige Codeblock ist stark abgeschnitten , um den vollständigen Code zu erhalten. Bitte besuchen Sie das Projektrepo.
Nun, da alle notwendigen Module abgeschlossen wurden, Zeit für die Implementierung der Hauptmethode und des Tests.
Wir werden die Hauptfunktionsdefinition und die schnelle Handhabung durchführen.
Asyncio importieren OS importieren Importsystem Aus der Typisierung von Import Gewerkschaft aus dotenv import load_dotenv asyncpg importieren aus Devtools Import Debugug Aus typing_extensions importieren typealias vom Pydantic_ai Importagenten von pydantic_ai.models.gemini Import Geminimodel aus Modellen importieren DEPs, Erfolg, InvalidRequest load_dotenv () gemini_api_key = os.getenv ("google_api_key") Antwort: typealias = Union [Erfolg, InvalyRequest] Modell = Geminimodel ( "Gemini-1.5-Flash", api_key = gemini_api_key, ) Agent = Agent ( Modell, result_type = Antwort, # Typ: Ignorieren DEPS_TYPE = DEPS, ) Async def Main (): Wenn Len (sys.argv) == 1: fordert = "Bitte eine Auswahlabfrage erstellen" anders: Eingabeaufforderung = sys.argv [1] # Verbindung zur Datenbank conn = erwarten asyncpg.connect ( user = "postgres", Passwort = "Avizyt", Host = "localhost", Port = 5432, Database = "DVDRENTAL", ) versuchen: DEPs = DEPs (conn) result = act Agent.run (Eingabeaufforderung, DEPS = DEPS) result = debug (result.data) print ("========== Ihre Abfrage ========")) print (debug (result.sql_query)) print ("========== Erläuterung ========")) print (debug (result.explanation)) Endlich: warten conn.close () Wenn __name__ == "__main__": asyncio.run (main ())
Definieren Sie hier zunächst eine asynchrone Hauptfunktion und überprüfen Sie das Befehlszeilenargument für Client-Abfrage. Wenn keine Argumente bereitgestellt werden, verwenden Sie die Standardaufforderung.
Anschließend setzen wir die Postgres -Verbindungsparameter für eine Verbindung mit dem DVDRENTION -Datenbankdienst.
Erstellen Sie im Try -Block eine DEPS -Instanz mit einer Datenbankverbindung, führen Sie die AI -Agenten mit der Eingabeaufforderung aus und verarbeiten die Ergebnisse mithilfe der Debug -Funktion ( PIP -Installation Devtools ). Druckt dann die formatierte Ausgabe einschließlich der generierten SQL -Abfrage und Erläuterung der Abfrage. Danach haben wir schließlich die Datenbankverbindung geschlossen.
Führen Sie nun das Hauptmodul wie unten aus:
# im Terminal Python main.py "Holen Sie sich die Gesamtzahl der Vermietungen für jeden Kunden"
Ausgabe:
Nach dem Testen der SQL -Abfrage im Pgadmin4:
Wow! Es funktioniert wie wir wollen. Testen Sie weitere Fragen wie diese und genießen Sie das Lernen.
Dieses Projekt stellt einen wesentlichen Schritt weiter, um Datenbankinteraktionen intuitiver und zugänglicher zu gestalten. Durch die Kombination der Kraft von KI mit robusten Software-Engineering-Prinzipien haben wir ein Tool erstellt, das nicht nur SQL-Abfragen generiert, sondern dies auf eine sichere, lehrreiche und praktische Verwendung für die reale Verwendung ist.
Der Erfolg dieser Implementierung zeigt das Potenzial für KI, herkömmliche Datenbankvorgänge zu verbessern, anstatt ersetzt und ein wertvolles Instrument sowohl für Lernen als auch für die Produktivität bietet.
Project Repo - Alle in diesem Projekt verwendeten Code finden Sie hier.
A. Pydanticai bietet Typ-Safe, validierte Codegenerierung mit integrierter Fehlerprüfung und kontextbezogenem Verständnis.
Q 2. Wie trägt Gemini-1.5-Flash zum Projekt bei?A. Gemini -Modell bietet eine erweiterte Verarbeitung natürlicher Sprache und übersetzt komplexe menschliche Abfragen in präzise SQL -Anweisungen.
F 3. Kann dieses Projekt auf andere AI -Anwendungen ausgedehnt werden?A. Absolut! Die Architektur kann für die Codegenerierung, die Datenumwandlung und die intelligente Automatisierung in verschiedenen Bereichen angepasst werden.
Die in diesem Artikel gezeigten Medien sind nicht im Besitz von Analytics Vidhya und werden nach Ermessen des Autors verwendet.
Das obige ist der detaillierte Inhalt vonBauen Sie LLM-Anträge auf Produktionsstörungen mit Pydanticai-Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!