agent-factory: generate agent auto-parse-email-content-and-extrac

This commit is contained in:
2026-04-07 20:54:30 +00:00
parent 9ac8be2c02
commit 58e98ad062
18 changed files with 549 additions and 0 deletions

41
app/nodes/core_node.py Normal file
View File

@@ -0,0 +1,41 @@
"""
This module defines a LangGraph node function that parses raw email content
and extracts the sender's email address, the email subject, and the email body.
The function uses an LLM to perform the extraction and returns the parsed
information in a structured format.
"""
async def process(state: dict) -> dict:
from app.agent import llm
from langchain_core.messages import SystemMessage, HumanMessage
try:
email_raw = state.get("email_raw", "")
if not email_raw:
return {"error": "Missing 'email_raw' input", "phase": "failed"}
messages = [
SystemMessage(content="You are an expert in parsing email content. Extract the sender's email address, the subject, and the body from the provided raw email text."),
HumanMessage(content=email_raw),
]
response = await llm.ainvoke(messages)
# Assuming the LLM returns a structured response in the format:
# "Sender: <email>\nSubject: <subject>\nBody: <body>"
try:
lines = response.content.split("\n")
sender_email = next((line.split(": ", 1)[1] for line in lines if line.startswith("Sender:")), "").strip()
email_subject = next((line.split(": ", 1)[1] for line in lines if line.startswith("Subject:")), "").strip()
email_body = next((line.split(": ", 1)[1] for line in lines if line.startswith("Body:")), "").strip()
return {
"sender_email": sender_email,
"email_subject": email_subject,
"email_body": email_body,
"phase": "complete"
}
except Exception as parse_exc:
return {"error": f"Failed to parse LLM response: {str(parse_exc)}", "phase": "failed"}
except Exception as exc:
return {"error": str(exc), "phase": "failed"}