E-mail versturen vanuit Pydantic AI
Type-veilige Python-agents met automatische validatie — stuur e-mail via Wesender als gevalideerde tool.
Vereisten
- Python 3.11+ geïnstalleerd
- Wesender-account met API-sleutel
- pip install "pydantic-ai[openai]" wesender
- Omgevingsvariabelen: WESENDER_API_KEY en OPENAI_API_KEY
Stap 1: Installeer Pydantic AI en de Wesender Python SDK
Voeg de benodigde packages toe. Pydantic AI ondersteunt meerdere model-providers via een uniforme interface.
pip install "pydantic-ai[openai]" wesender Stap 2: Definieer de send_email-tool met type-annotaties
Pydantic AI gebruikt Python-functies met type-annotaties voor automatische validatie van toolparameters. Decoreer de functie met @agent.tool_plain om hem als tool te registreren.
from pydantic_ai import Agent
from wesender import Wesender
import os
client = Wesender(api_key=os.environ["WESENDER_API_KEY"])
agent = Agent(
model="openai:gpt-4o",
system_prompt="Je bent een assistent die e-mails verstuurt via Wesender.",
)
@agent.tool_plain
async def send_email(to: str, subject: str, html: str) -> str:
"""Verstuur een e-mail via Wesender."""
result = client.emails.send(
from_="noreply@jouwdomein.nl",
to=to,
subject=subject,
html=html,
)
return f"E-mail verzonden. ID: {result.id}" Stap 3: Roep de agent aan
De agent herkent automatisch wanneer send_email moet worden aangeroepen op basis van de gebruikersvraag. Pydantic AI valideert alle parameters vóór uitvoering.
import asyncio
async def main():
response = await agent.run(
"Stuur een welkomstmail naar jan@voorbeeld.nl "
"met onderwerp 'Welkom bij ons platform'."
)
print(response.data)
asyncio.run(main()) Stap 4: Verwerk het resultaat
De agent geeft het resultaat van de tool terug als string. Sla het e-mail-ID op voor bezorgingscontrole via Wesender-webhooks.
response = await agent.run(
"Stuur een bevestigingsmail naar klant@voorbeeld.nl."
)
# response.data bevat het tekstantwoord van de agent
# bijv: "E-mail verzonden. ID: em_abc123"
print(response.data) Volledig voorbeeld
Hier is de volledige implementatie in pydantic_ai_email.py:
import asyncio
import os
from pydantic_ai import Agent
from wesender import Wesender
client = Wesender(api_key=os.environ["WESENDER_API_KEY"])
agent = Agent(
model="openai:gpt-4o",
system_prompt="Je bent een assistent die e-mails verstuurt via Wesender.",
)
@agent.tool_plain
async def send_email(to: str, subject: str, html: str) -> str:
"""Verstuur een e-mail via Wesender."""
result = client.emails.send(
from_="noreply@jouwdomein.nl",
to=to,
subject=subject,
html=html,
)
return f"E-mail verzonden. ID: {result.id}"
async def main():
response = await agent.run(
"Stuur een welkomstmail naar jan@voorbeeld.nl "
"met als onderwerp 'Welkom bij ons platform' "
"en als inhoud een vriendelijke HTML-begroeting."
)
print(response.data)
if __name__ == "__main__":
asyncio.run(main()) Bezorgstatussen via webhooks
Pydantic AI kan bezorg-, bounce- en klachtsignalen ontvangen via webhooks. Configureer een webhook-endpoint in je Pydantic AI-workflow dat POST-verzoeken van Wesender accepteert. Zie Webhooks instellen voor de volledige configuratiestappen en het payload-formaat.
Veelgestelde vragen
Welke model-providers werken met Pydantic AI?
Pydantic AI ondersteunt OpenAI, Anthropic, Google Gemini, Groq en Mistral via een uniforme interface. Je wisselt van provider door de model-parameter aan te passen, bijv. van 'openai:gpt-4o' naar 'anthropic:claude-sonnet-4-5'.
Hoe valideer ik e-mailadressen vóór het versturen?
Gebruik Pydantic-modellen als toolparameters. Vervang losse string-annotaties door een dataclass met EmailStr uit pydantic[email]. Pydantic AI valideert de invoer automatisch voordat de tool wordt aangeroepen.
Kan ik meerdere e-mails in één agent-run versturen?
Ja. De agent roept send_email herhaaldelijk aan als de instructie dat vereist. Elke aanroep retourneert een uniek e-mail-ID. Je kunt ook een batchfunctie definiëren die een lijst adressen accepteert.