12 Nap (9. nap) - Automatikus Nyugta Feldolgozás a 's Gradient Platform segítségével
🎄 9. nap: Kulcsos nyugták részleteinek kinyerése a DigitalOcean Gradient segítségével 🎁
Üdvözöljük a 9. napon a DigitalOcean 12 napján! Az elmúlt néhány napban egy e-mail alapú nyugtafeldolgozó szolgáltatást építettünk. A cél egyszerű: lehetővé tenni a felhasználók számára, hogy továbbítsák a nyugtáikat vagy számláikat egy dedikált e-mail címre, kinyerjék az olyan fontos részleteket, mint a dátum, összeg, valuta és szolgáltató, és tárolják azokat egy adatbázisban vagy egy táblázatban a későbbi könnyű áttekintés érdekében.
Hasznosnak tűnik, igaz? Most képzeld el, hogy ezt kézzel csinálod—áthívogatva az emailjeidet, részleteket másolva egyesével, és beillesztve őket egy táblázatba. Ez ismétlődő, hibára hajlamos, és valljuk be, időpocsékolás. Itt jön a képbe a mesterséges intelligencia.
Ahelyett, hogy minden egyes nyugtaformátumhoz írnál egy elemzőt, a DigitalOcean Gradient Platformját fogod használni ennek dinamikus kezelésére. A tutorial végére egy Flask alkalmazásod lesz, amely zűrzavaros nyugta e-maileket fogad, AI segítségével feldolgozza őket, és tiszta, strukturált JSON formátumra alakítja át.
🤔 Miért használjunk Gradient Agentet ehhez?
Az e-mailek nincsenek standardizálva. Minden szolgáltató másképp formázza a számlákat, és nem praktikus az összes változathoz egyedi elemzőt írni. Az AI tökéletes az ilyen jellegű problémákra. Kiválóan képes azonosítani a mintákat a strukturálatlan szövegben és kinyerni a releváns információkat.
A DigitalOcean Gradient Platform-nál hozzáférést kapsz a Meta, Mistral és Anthropic előképzett modelljeihez. Ezek a modellek erősek és rugalmasak, és ha szükséges, akár finomhangolhatod őket specifikus feladatokhoz. Ebben a tutorialban egy előképzett modellt fogunk használni, hogy a dolgokat egyszerűen tartsuk.
✨ Amit tanulni fogsz
- Hogyan lehet létrehozni és konfigurálni egy Gradient ügynököt a DigitalOcean-on.
- Hogyan teszteljük az ügynökünket, hogy biztosak lehessünk benne, hogy a megfelelő részleteket vonja ki.
- Hogyan lehet integrálni az ügynököt egy már telepített Flask alkalmazással.
- Hogyan lehet tesztelni az egész folyamatot, az e-mailtől a JSON kimenetig.
🛠 Mire lesz szükséged
A tutorial maximális kihasználása érdekében feltételezzük a következőket:
- Már telepített Flask alkalmazás a DigitalOceanon: Ha még nem telepítetted a Flask alkalmazást, követheted a Day 7 - Az e-mail alapú nyugtafeldolgozó létrehozása és telepítése utasításait.
- Postmark konfigurálva az e-mail teszteléshez: Az e-mail és a nyugta feldolgozó csővezeték teszteléséhez be kell állítania a Postmarkot, hogy továbbítja az e-maileket a Flask alkalmazásának. Nézze meg a 8. nap - A Postmark csatlakoztatása a Flask alkalmazásához című útmutatót lépésről lépésre.
Megjegyzés: Még ha ezek be is állítva nincsenek, akkor is megtanulod, hogyan kell:
- Állítson be egy Gradient ügynököt a DigitalOceanon.
- Interakció az ügynökkel programozott módon a feladatok elvégzéséhez az OpenAI Python SDK használatával.
🧑🍳 Lépésről lépésre útmutató
1. lépés: Hozzon létre egy Gradiens Ügynököt
Kezdjük azzal, hogy létrehozzuk ennek a rendszernek a fő összetevőjét: egy Gradiense ügynököt.
Jelentkezz be a DigitalOcean fiókodba, és navigálj a Gradient Platformhoz.
Kattints a Ügynök létrehozása gombra, és adj egy nevet az ügynöködnek, mint például
számla-feldolgozó-ügynök.Addja hozzá a következő utasításokat az ügynök feladatának leírásához:
Extract the following details from emails:
- Date of transaction
- Amount
- Currency
- Vendor name
Ensure the output is in the following JSON format:
{
"date": "<date>",
"amount": "<amount>",
"currency": "<currency>",
"vendor": "<vendor>"
}
-
Válassz egy modellt: Ehhez a bemutatóhoz válaszd a Llama 3.1 Instruct (8B)-t. Kiválóan alkalmas általános célú utasítássorán követendő feladatokhoz.
Pro Tip: A modelokat később is frissítheted, még az ügynök létrehozása után is. A modelleket a Model Playground-ban is értékelheted, mielőtt kiválasztanál egyet. Az támogatott modellek teljes listájáért lásd a DigitalOcean dokumentációt.
{}
Opcionális: Tudásbázis hozzáadása Fokozhatja az ügynökét egy tudásbázis hozzáadásával. Ez lehetővé teszi, hogy a konkrét dokumentumokból vagy adatbázisokból tanuljon, amelyeket megad. Az egyszerűség kedvéért ezt a lépést kihagyjuk ebben a bemutatóban.
Ügynök létrehozása: Görgess le és kattints a Ügynök létrehozása gombra a beállítás befejezéséhez.
2. lépés: Teszteld az ügynöködet
Mielőtt az ügynököt egy alkalmazásba integrálnánk, győződjünk meg róla, hogy működik. Menjünk az ügynök beállításainál a Playground fülre. Ez egy tesztelési terület, ahol interakcióba léphetünk az ügynökkel, és láthatjuk, hogyan reagál.
- Illessze be ezt a “minta email” szöveget a Játékterbe:
Thank you for your purchase! Your order #12345 has been processed. Total: $35.99. Date: December 29, 2024. Thank you for shopping at Amazon.com
- Az ügynöknek vissza kell térnie:
{
"date": "Dec 29, 2024",
"amount": "35.99",
"currency": "USD",
"vendor": "Amazon"
}
-
Ha nem így van, módosítsd az utasításokat, és teszteld újra. Ez a lépés arról szól, hogy biztosítsd, hogy az ügynök megérti, mit akarsz.
3. lépés: Szerezze meg az végpontot és a hozzáférési kulcsot
- Miután az ügynököd működik, itt az ideje, hogy összekapcsold az alkalmazásoddal. Lépj a Végpont fülre az ügynök beállításaiban, és másold ki az URL-t. Valahogy így kell kinéznie:
https://agent-1234abcd5678efgh1234-abcde.ondigitalocean.app
- Ezután lépj a Beállítások fülre és hozz létre egy hozzáférési kulcsot. Ez a kulcs lehetővé teszi, hogy az alkalmazásod biztonságosan kommunikáljon az ügynökkel. Mentsd el a kulcsot egy biztonságos helyen – hamarosan szükséged lesz rá.
4. lépés: Biztosítsa az környezeti változókat biztonságosan a DigitalOcean-ben
Most, hogy megvan az ügynök végpont és a biztonságos ügynök kulcs, ezeket biztonságosan kell tárolnunk, hogy hozzáférhetőek legyenek a Flask alkalmazásunk számára.
Menj az alkalmazás beállításaihoz: Navigálj az alkalmazásodhoz a DigitalOcean vezérlőpulton és kattints a Beállítások gombra.
Keresse meg a környezeti változókat: Görgessen le az Alkalmazás szintű környezeti változók szakaszig.
Adja hozzá a következő változókat:
AGENT_BASE_URL: Illessze be a Gradient ügynök alap URL-jét, pl.:https://agent-1234abcd5678efgh1234-abcde.ondigitalocean.app.
SECURE_AGENT_KEY: Illeszd be a Gradient beállításokban generált biztonságos ügynök kulcsot.Mentés és újraépítés: Mentse el a változtatásokat, és a DigitalOcean automatikusan újraépíti az alkalmazását az új környezeti változókkal.
5. lépés: Frissítse Flask alkalmazását az OpenAI SDK-val
Most frissítjük a Flask alkalmazásunkat, hogy kommunikáljon a Gradient ügynökkel az OpenAI SDK segítségével. Íme, hogyan közelítjük meg ezt:
Szükséges könyvtárak telepítése: Futtassa ezt a parancsot, hogy biztosítsa, hogy rendelkezik a szükséges könyvtárakkal:
pip install openai flask python-dotenvFagyasztási követelmények: Hozzon létre egy
requirements.txtfájlt a függőségek nyomon követésére:pip freeze > requirements.txtAz OpenAI SDK Beállítása: Az alkalmazásban inicializáljuk az OpenAI SDK-t és konfiguráljuk, hogy a DigitalOcean Gradient végpontot használja. Ez kezeli a kommunikációt a korábban létrehozott ügynökkel.
from openai import OpenAI import os from dotenv import load_dotenv Load environment variables load_dotenv() Secure agent key and endpoint SECURE_AGENT_KEY = os.getenv("SECURE_AGENT_KEY") AGENT_BASE_URL = os.getenv("AGENT_BASE_URL") AGENT_ENDPOINT = f"{AGENT_BASE_URL}/api/v1/" Initialize the OpenAI client client = OpenAI( base_url=AGENT_ENDPOINT, api_key=SECURE_AGENT_KEY )Függvény hozzáadása az e-mail tartalom feldolgozásához: Most egy függvényt adunk hozzá, hogy elküldjük az e-mail tartalmat a Gradient ügynöknek, feldolgozzuk egy prompt segítségével, és visszaadjuk az eredményt. Íme, hogyan működik:
def process_with_ai(email_content): """ Process email content with GenAI. """ prompt = ( "Extract the following details from the email:\n" "- Date of transaction\n" "- Amount\n" "- Currency\n" "- Vendor name\n\n" f"Email content:\n{email_content}\n\n" "Ensure the output is in JSON format with keys: date, amount, currency, vendor." ) response = client.chat.completions.create( model="your-model-id", # Replace with your GenAI model ID messages=[{"role": "user", "content": prompt}] ) return response.choices[0].message.contentFrissítse a Flask végpontot: Végül ezt a funkciót összekapcsoljuk a Flask alkalmazás
/inboundútvonalával, hogy kezelje a bejövő e-maileket. Itt van a frissített végpont:@app.route('/inbound', methods=['POST']) def handle_inbound_email(): """ Process inbound emails and return extracted JSON. """ email_content = request.json.get("TextBody", "") if not email_content: return jsonify({"error": "No email content provided"}), 400 extracted_data = process_with_ai(email_content) return jsonify({"extracted_data": extracted_data})
Teljes Flask alkalmazás gráf integrációval
app.py
from flask import Flask, request, jsonify
import os
from dotenv import load_dotenv
from openai import OpenAI
import logging
Load environment variables
load_dotenv()
Initialize Flask app
app = Flask(__name__)
Configure logging
logging.basicConfig(level=logging.INFO)
Secure agent key and endpoint
SECURE_AGENT_KEY = os.getenv("SECURE_AGENT_KEY")
AGENT_BASE_URL = os.getenv("AGENT_BASE_URL")
AGENT_ENDPOINT = f"{AGENT_BASE_URL}/api/v1/"
Initialize the OpenAI client for GenAI
client = OpenAI(
base_url=AGENT_ENDPOINT,
api_key=SECURE_AGENT_KEY
)
def process_with_ai(email_content):
"""
Process email content with GenAI.
"""
prompt = (
"Extract the following details from the email:\n"
"- Date of transaction\n"
"- Amount\n"
"- Currency\n"
"- Vendor name\n\n"
f"Email content:\n{email_content}\n\n"
"Ensure the output is in JSON format with keys: date, amount, currency, vendor."
)
response = client.chat.completions.create(
model="your-model-id", # Replace with your GenAI model ID
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
@app.route('/inbound', methods=['POST'])
def handle_inbound_email():
"""
Process inbound emails and return extracted JSON.
"""
email_content = request.json.get("TextBody", "")
if not email_content:
logging.error("No email content provided.")
return jsonify({"error": "No email content provided"}), 400
extracted_data = process_with_ai(email_content)
logging.info("Extracted Data: %s", extracted_data) # Log the extracted data
return jsonify({"extracted_data": extracted_data})
if __name__ == "__main__":
app.run(port=5000)
6. lépés: Telepítés a DigitalOcean-ra
A frissített Flask alkalmazás telepítéséhez kövesse a 7. napi lépéseket. Íme egy rövid összefoglaló:
- Pushold az Új Kódodat a GitHub-ra: Miután elvégezted a szükséges módosításokat a Flask alkalmazásodon, kötelezd el és pushold az új kódot a GitHub-ra. Ez automatikus telepítést indít el a DigitalOcean App Platformján.
git add .
git commit -m "Add GenAI integration for receipt processing"
git push origin main
2.Monitor bevezetés: Nyomon követheti a fejlődést az alkalmazásának vezérlőpultjának Bevezetések részében.
3.Az Ön Telepítésének Ellenőrzése: Miután a telepítés befejeződött, navigáljon az alkalmazás nyilvános URL-jére, és tesztelje annak működését. Az időjárási naplókat is ellenőrizheti a műszerfalon, hogy megerősítse, hogy az alkalmazás sikeresen elindult.
7. lépés: Tesztelje az egész pipát
Küldjön egy Minta E-mailt: Továbbítsa a minta nyugtát tartalmazó e-mailt a Postmark címre, amelyet a 8. napon konfigurált.
Postmark Tevékenység Figyelése: Jelentkezz be a Postmark-ba, és erősítsd meg, hogy az email át lett küldve az alkalmazásodhoz. Hivatkozz a 8. napi útmutatóra.
Futtatási naplók ellenőrzése: A DigitalOcean App Platform vezérlőpultján tekintse meg az alkalmazás futási naplóit. Látnia kell a Flask alkalmazás JSON kimenetét.
Várt eredmény:
2024-12-31 12:34:56,789 INFO Extracted Data: { "date": "Dec 29, 2024", "amount": "35.99", "currency": "USD", "vendor": "Amazon" }
🎁 Összegzés
Itt van, amit ma elértünk:
- Létrehoztam és konfiguráltam egy Gradient ügynököt a DigitalOcean-on, hogy feldolgozza a számlákat tartalmazó e-maileket.
- Interaktívan és programozottan teszteltük az ügynököt, hogy biztosak legyünk benne, hogy a megfelelő részleteket kiemelte.
- Frissítettem a Flask alkalmazást, hogy integrálódjon a Gradient ügynökkel az OpenAI SDK segítségével.
- Frissített alkalmazást telepítettünk a DigitalOceanra.
- Teszteltük az egész folyamatot, az e-mail küldésétől kezdve a kivont JSON naplóban való megtekintéséig.
Íme a sorozat korábbi oktatóanyaga a 8. napon: A Postmark csatlakoztatása a Flask alkalmazásodhoz.
Következő: A következő oktatóanyagban befejezed a folyamatot azáltal, hogy a kinyert JSON adatokat egy adatbázisban tárolod. Ez készen áll az Email- alapú Nyugta Feldolgozó Szolgáltatás valós világbeli használatára. Maradj velünk - A 10. nap mind arról szól, hogyan kössük össze mindezt! 🚀



















