AgentMailLoader 从 AgentMail 收件箱流式传输消息为 LangChain Document文档——每条消息一个文档,纯文本正文作为 page_content, sender / subject / labels / thread / attachment metadata on metadata。对于将收件箱索引到向量存储中以便通过 RAG 处理电子邮件非常有用。
概述
| 类 | 包 |
|---|---|
AgentMailLoader | langchain-agentmail |
设置
安装包:
pip install -qU langchain-agentmail
设置您的 AgentMail API 密钥(在以下位置获取) agentmail.to):
if not os.environ.get("AGENTMAIL_API_KEY"):
os.environ["AGENTMAIL_API_KEY"] = getpass.getpass("AgentMail API key:\n")
实例化
from langchain_agentmail import AgentMailLoader
loader = AgentMailLoader(
inbox_id="ib_abc123",
labels=["inbox"], # optional — filter messages by label
limit=100, # optional — cap the number of messages loaded
)
加载
docs = loader.load()
print(docs[0].page_content[:200])
print(docs[0].metadata)
每个 Document 包含以下元数据键(如果存在):
- -
inbox_id,message_id,thread_id - -
from,to,cc,subject,labels,timestamp - -
has_attachments,attachments:列表{attachment_id, filename, content_type, size}
要下载附件字节,请将加载器与 AgentMailGetAttachmentTool 配对——它返回一个预签名下载 URL。
延迟加载
对于较大的收件箱,一次流式传输一个文档而不是实例化完整列表:
for doc in loader.lazy_load():
print(doc.metadata["subject"])
索引到向量存储
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings
docs = AgentMailLoader(inbox_id="ib_abc123", limit=200).load()
store = InMemoryVectorStore.from_documents(docs, OpenAIEmbeddings())
retriever = store.as_retriever(search_kwargs={"k": 5})
retriever.invoke("Q3 invoice from acme")