微信扫码
和创始人交个朋友
我要投稿
探索国产AI框架的创新实践,深入了解DeepSeekers如何助力企业与个人高效应用AI技术。 核心内容: 1. DeepSeekers框架轻量级设计及其全面支持DeepSeek系列模型 2. 实例驱动开发过程与面向业务逻辑的场景设计 3. 邮件助手、数据分析、项目空间三大场景的AI应用与挑战
轻量级、全面支持 deepseek 系列模型,其中包括 deepseek-chat 和 deepseek-r1 的 AI Agent 框架。面向个人和中小企业实际应用场景。
开发过程以实例来驱动 AI Agent 框架的开发,这个也是复合目标。
在现阶段,应用主要初步完成了 Agent 和 Task 的实现,Task 是由若干 Step 组成的,Step 是最小执行的单元,Task 和 Step 都是面向实际业务逻辑场景来设计的,如果你了解或接触过 langchain ,这里的 Task 可能有点类似 langGraph ,是用于有效组织 Step 的单元,而组成 Task 的 Step 有点类似于 langgraph 中 node。相对于 Task 和 Step 偏向于业务,Agent 则更偏向于 LLM,对于 LLM 进行包裹和装饰,通过 Agent LLM 可以更容易和流畅与外界交互,使用工具和结构化输出。
第一个阶段主要围绕 3 个落地场景进行展开
选择这个场景的一个主要原因,就是我个人实际接触过这样的需求,这是一个实实在在存在的客户需求,所以相对来说具有一定经验。还有就是这个场景是一个发生在工作中的高频的场景,特别客户是来自于海外情况下,更为常见。
非结构化数据提取,例如邮件中出现图片理解,音频或者超链接。提取多媒体内容然后形成结构化数据来供下一个流程。
import emailfrom bs4 import BeautifulSoupfrom PIL import Imageimport pydub
可以通过以上库来提取图片上信息,然后统一形成结构化数据
class EmailMetaData(BaseModel): sender:str = Field(title="sender",description="邮件发送人") reciever:str = Field(title="reciever",description="邮件介绍送人") email_cc:List[str] = Field(title="cc",description="邮件抄送") email_attech:List[Union[str,Path]] = Field(title="cc",description="邮件附件") email_image:List[Dict[str,Any]] = Field(title="email images",description="邮件中显出的图")
from urllib.parse import urlparsedef classify_link(url): ...
首先需要超链接判断是否处于白名单,白名单是可以配置的,然后需要判断超链接类型,然后不同超链接类型做出相应的动作。
urllib.parse.urlparse()
函数用于解析 URL。
parsed_url.scheme
属性表示 URL 的协议。
parsed_url.path
属性表示 URL 的路径。
def content_chunking_step(agent,context,use_cache): """chunking"""def retrieve_step(agent,context,use_cache): """retrieve"""def create_local_relation_graph(agent,context,use_cache): """创建邮件内部关系图"
收集项目以外更丰富的信息
针对面临挑战中出现各个问题一一给出解决方案
对于邮件出现图片和视频理解,可以通过 OCR 来提取图像文本,然后交给 LLM 来理解
首先是
对于智能邮件场景,内建了一个邮件处理模板任务,可以适合一些比较通过场景
class AutoEmailTask(Task): def __init__(self, name, description, agent, verbose = False): super().__init__(name, description, agent, verbose) def run(self, query, conf): return super().run(query, conf)
因为在邮件中,除了文本通常还会包含图片、表格,超链接等这些非结构化的多媒体的重要信息,那么这些可能需要通过 Agent 对其理解进一步形成结构化数据。
提取信息形成结构化的数据,例如从邮件头部信息提取邮件的发件人、收件人、主题、发送时间等。从正文内容中提取邮件的文本内容,可能包含纯文本、HTML、图片等。
class EmailMetaData(BaseModel): sender:str = Field(title="sender",description="邮件发送人") reciever:str = Field(title="reciever",description="邮件介绍送人") email_cc:List[str] = Field(title="cc",description="邮件抄送") email_attech:List[Union[str,Path]] = Field(title="cc",description="邮件附件") ...
对于邮件数据结构设计,然后将邮件抽象为一个 Documentory 这样数据结构,
class Documentory: @staticmethod def from_image(self,image:Union[Path,str]): ....
参考下面 OCR 技术具体实现
在结构化信息的基础上,进行信息抽象,然后再去创建一些特定的事件。例如邮件出现的关于交付、和会议这样就有一定时间有效性事件,会创建对应事件发送或通知用户。整个过程是通过对于内容进行实体识别,提取时间、地点和人名等关键的实体名词,然后基于这些关键实体名词来理解创建
class MeetingEvent: passclass DeliveryEvent: pass
class MeetingEvent: def __init__(self, meeting_memer, time, location): self.meeting_memer = meeting_memer # 参会人员列表 self.time = time # 会议时间 self.location = location # 会议地点 def __str__(self): return f"会议时间:{self.time},地点:{self.location},参会人员:{self.meeting_memer}"
def trigger(self): # ... (事件触发逻辑) if self.callback: self.callback(self) # 执行回调函数
email 库
smtplib: 这个库也属于 Python 标准库,主要用于与 SMTP(Simple Mail Transfer Protocol)服务器进行交互,发送电子邮件。通常会与 email 库结合使用,email 库负责构建邮件内容,smtplib 负责发送邮件。
通过 API 或者检索数据库以及浏览网页来获取更多的关于项目的数据信息,这部分内容类似 Rag 除此之外还会搜索知识图谱,以及检索召回关联邮件以及历史对话
邮件内容格式多样,包含纯文本、HTML、富文本等,需要统一解析。
结构化非结构化数据
提取邮件概要
def image_ocr_step(agent,context,use_cache): """对于图像""" from paddleocr import PaddleOCR, draw_ocr ocr = PaddleOCR(use_angle_cls=True, lang='ch') res = [] if context['email']: email_data:EmailDocument = context['email'] if email_data.meta_data.email_image: for img_path in email_data.meta_data.email_image: result = ocr.ocr(img_path, cls=True) # 返回的是 List[ImageResult]
使用情感分析技术,判断邮件情感极性(积极、消极、中性)。这个部分内容随后展开。
from transformers import pipeline# 创建情感分析pipelineclassifier = pipeline("sentiment-analysis")
基于自然语言处理和图来构建邮件中出现实例和知识库中实体之间关系。基于实体以及他们之间关系来构建关系图
import spacyimport networkx as nx# 加载spaCy模型nlp = spacy.load("zh_core_web_sm")def build_email_graph(email_content): # 处理邮件内容 doc = nlp(email_content) # 创建图 graph = nx.Graph() # 添加实体为节点 for entity in doc.ents: graph.add_node(entity.text, type=entity.label_) # 添加关系为边 for token in doc:
基于注意力机制生成邮件
对于传入的邮件内容,Agent 理解将用户感兴趣的内容生成 Query 然后会给予对于理解 Query
class EmailQuery(BaseModel): query:str reply:strclass EmailMessage: role:str content:str extra:Any
计算每一个 Query 和 EmailMessage 的相似性从而形成注意力机制应用到 Query 所以对于每一个 Query 的 reply 生成都是从 EmailMessage 获取信息的加权线性组合。
使用脱敏技术,如替换、遮蔽、加密等,对敏感信息进行处理。
def content_chunking_step(agent,context,use_cache): """chunking"""def retrieve_step(agent,context,use_cache): """retrieve"""def create_local_relation_graph(agent,context,use_cache): """创建邮件内部关系图"""def email_style_rewrite(agent,context,use_cache): """按照风格对于邮件进行rewrite"""def write_email_base_on_attention(agent,context,use_cache): """生成邮件"""def email_review(agent,context,use_cache): """对于邮件脱敏加密和复核"""
根据用户风格,调整AI Agent的回复风格,提高用户体验,可以通过 example 借助 prompt 。主要是一个通过 example 提示 Agent
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-22
手把手教你使用Qwen-Agent开发智能体应用实战教程
2025-02-19
LangMem 发布:任何人都能轻松构建智能体记忆!
2025-02-19
深入探究Langchain v0.3:全面解读
2025-02-18
走进Langchain:全面解析
2025-02-17
基于LangChain爬虫增强RAG应用
2025-02-13
LangChat实战DeepSeek-R1模型
2025-02-05
揭秘LangGraph!如何一步一步构建动态订单管理系统?
2025-01-22
LangChain实战 | OutputParser:让大模型输出从 “鸡肋” 变 “瑰宝” 的关键!
2024-10-10
2024-04-08
2024-06-03
2024-09-04
2024-08-18
2024-07-13
2024-04-08
2024-06-24
2024-07-10
2024-04-17
2025-02-05
2024-12-02
2024-11-25
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04