1 项目介绍

随着人工智能技术的快速发展,智能化客户服务与业务辅助工具已成为企业数字化转型的核心组件。传统的CRM系统主要依赖人工操作和数据录入,效率低下且难以满足日益增长的个性化服务需求,本项目——AI-CRM智能助手,是一款基于大语言模型(LLM)和检索增强生成(RAG)技术构建的智能化辅助系统,旨在通过自然语言交互的方式,为用户提供天气查询、法律条文检索、数据库业务数据管理等一站式服务

该项目采用现代化的Agent架构设计,将复杂的人工智能能力封装为独立可复用的工具组件,通过意图识别机制实现用户请求的智能路由与工具自动选择。用户无需了解底层技术细节,只需使用自然语言描述需求,系统即可自动理解意图、调用相应工具、返回结构化结果,这种设计理念极大地降低了使用门槛,提升了用户体验,真正实现了对话即服务的智能化目标

2 技术栈概览

本项目采用现代化的Python技术栈构建,各层技术选型经过深思熟虑,兼顾性能、易用性与可维护性:

核心框架:使用LangGraph作为Agent编排框架,提供状态图可视化编排能力,支持条件路由、并行执行、错误恢复等高级特性。LangGraph基于LangChain构建,继承了其丰富的工具生态,同时引入了更灵活的图状态管理机制

大语言模型:集成DeepSeek Chat模型作为核心智能引擎。DeepSeek是国内领先的AI公司提供的大语言模型服务,在中文理解、代码生成、逻辑推理等方面表现优异。模型调用通过OpenAI兼容接口实现,便于后续切换至其他LLM供应商

向量数据库:采用Chroma作为向量存储解决方案,这是一个轻量级、高性能的嵌入向量数据库,支持持久化存储、相似度检索、过滤查询等功能。配合BGE(Beijing General Embedding)中文embedding模型,实现高质量的中文语义向量化

Web界面:使用Streamlit框架构建用户界面。Streamlit是专为机器学习和数据科学应用设计的Web框架,支持快速开发、实时预览、组件丰富等特点,能够在短时间内构建出专业的数据应用

数据持久:使用SQLite作为轻量级数据库解决方案。SQLite无需独立服务器进程,文件级存储便于部署和维护,非常适合中小规模的CRM应用场景

3.1 意图识别系统

意图识别是智能助手的核心能力之一,决定了系统能否准确理解用户需求并选择正确的工具进行处理。本项目的意图识别系统采用“规则匹配优先、LLM兜底”的混合策略,在保证响应速度的同时兼顾识别准确率

规则匹配层:系统预定义了各工具的关键词库,当用户输入包含特定关键词时,直接匹配至对应工具。例如,包含“天气”“气温”“下雨”等词汇的输入会触发天气查询工具;包含“法律”“法条”“劳动法”等词汇的输入会触发法律检索工具。这种基于规则的方法响应速度快、可解释性强,对于明确的需求场景效果良好

关键词配置:意图识别器的关键词配置集中在config.py文件的AgentConfig类中,采用字典结构定义。每个工具对应一个关键词列表,支持扩展和定制。以下是当前配置的意图关键词:

天气查询:天气、气温、下雨、晴天、多云、温度、台风、气象等

法律检索:法律、法条、规定、条文、劳动法、刑法、民法典、合同法、加班费、赔偿、劳动合同等

数据库查询:数据库、查询、用户、产品、表、数据、统计、数量、多少、列表、库存等

可扩展设计:意图识别系统采用模块化设计,支持后续接入更复杂的识别策略。例如,可以引入基于LLM的零样本分类器,处理关键词未覆盖的边缘场景;也可以引入对话上下文分析,提升多轮对话中的意图追踪能力

3.2 天气查询工具

天气查询工具为用户提供城市天气信息的实时查询服务,数据来源于和风天气(QWeather)开放平台。该工具能够提取用户输入中的城市名称,调用天气API获取数据,并以友好的格式呈现查询结果

功能特性:工具支持查询实时天气、空气质量、未来预报等多维度信息。当用户输入如“北京天气怎么样”“上海明天天气如何”等自然语言问题时,系统会自动提取城市名称,转换为城市代码,调用API获取数据,并格式化输出

API集成:工具使用和风天气V7版本API,支持以下主要接口:城市ID查询接口(Geo API)、实时天气查询接口(Weather Now)、空气质量查询接口(Air Now)、三天预报接口(Weather 3D)。各接口均支持HTTPS访问,返回JSON格式数据

容错机制:当API调用失败或未配置API密钥时,工具会自动切换至模拟数据模式,返回预设的随机天气信息,确保系统不会因外部服务不可用而崩溃。这种降级策略保证了系统的可用性

输出格式:天气查询结果包含温度、体感温度、天气状况、湿度、风力风向、更新时间等核心信息。若查询到空气质量数据,还会显示AQI指数、污染等级、PM2.5浓度等指标。未来三天预报以列表形式展示,便于用户安排出行计划

3.3 法律检索工具

法律检索工具是本项目的核心功能之一,基于RAG(检索增强生成)架构实现。用户可以通过自然语言查询相关法律条文,系统会在法律条文库中进行语义检索,返回最匹配的内容。

RAG架构:工具采用典型的RAG流程设计。首先,系统将法律条文文档(law.txt)加载到内存,使用RecursiveCharacterTextSplitter进行文本分块;然后,将分块后的文本通过BGE embedding模型转换为向量,存储到Chroma向量数据库;最后,用户查询时,将查询文本同样转换为向量,在向量数据库中进行相似度检索,返回top-k个最相关的文本片段

Embedding模型:工具使用BAAI发布的BGE系列中文embedding模型。BGE-large-zh-v1.5是当前效果最好的中文embedding模型之一,在MTEB中文基准测试上表现优异。考虑到性能和资源消耗,也可选择BGE-base-zh-v1.5或BGE-small-zh-v1.5模型

向量检索:Chroma向量数据库支持余弦相似度(cosine)、欧氏距离(euclidean)、点积(dotproduct)等多种相似度计算方式。工具默认使用余弦相似度,能够更好地处理文本长度差异较大的场景。检索时设置top-k参数为3,返回最相关的3个文本片段

法律信息提取:检索返回的原始文本可能包含多条法律条文,工具通过正则表达式进行智能解析,提取法律名称、条文编号、具体内容等结构化信息。提取结果使用预设模板格式化输出,便于用户阅读理解

自动建库:系统首次启动时,若检测到向量数据库目录为空或不存在,会自动创建向量存储。系统会检查law.txt文件是否存在,若不存在则创建包含示例法律条文的基础版本,确保系统能够立即使用

3.4 数据库查询工具

数据库查询工具允许用户使用自然语言查询SQLite数据库中的业务数据。该工具将用户的自然语言问题转换为SQL查询语句,执行查询并返回格式化结果。这种设计使得不懂SQL的业务人员也能方便地查询数据

NL2SQL能力:工具使用DeepSeek LLM进行自然语言到SQL的转换。系统首先获取当前数据库的表结构信息(表名、字段名、字段类型),将这些信息组织成提示词模板,连同用户问题一起发送给LLM。LLM根据表结构和问题内容生成相应的SQL语句

SQL执行与结果处理:生成的SQL语句经过简单的格式化处理后,调用SQLite执行。工具支持SELECT查询的数据展示,以及INSERT、UPDATE、DELETE等写操作的执行确认。对于查询操作,结果以表格形式组织,包含列名和数据行

安全考虑:当前实现中,LLM生成的SQL直接执行,未进行严格的SQL注入防护。在生产环境中,建议增加SQL审核机制,限制执行权限,防止恶意查询或破坏性操作

示例数据:系统初始化时会在数据库中创建users(用户)表和products(产品)表,并插入示例数据。users表包含id、name、age、email字段;products表包含id、name、price、stock字段。用户可以通过“查询所有用户”“产品库存有多少”等问题进行测试

3.5 响应生成系统

响应生成系统是Agent流程的最后一个环节,负责将工具执行结果转换为用户友好的自然语言响应。该系统会根据是否有工具执行结果,采用不同的响应策略

有工具结果时:系统遍历所有工具执行结果,提取成功执行的内容,使用配置中的输出模板格式化后,拼接为最终响应。对于执行失败的工具,返回错误信息和改进建议

无工具结果时:当意图识别失败或无需执行工具时,系统列出所有可用工具及其描述,作为帮助信息返回给用户。这种设计使得用户能够快速了解系统能力,无需额外帮助文档

模板配置:工具输出模板在config.pyPromptConfig类中定义,支持为不同工具类型定制输出格式。模板使用占位符语法,如{law_name}{article_number}等,运行时替换为实际数据

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐