传统业务对接AI-AI编程框架-Rasa的业务应用实战(1)--项目背景即学习初衷

article/2025/6/7 23:03:06

我的初衷:我想学习AI。具体的方向是这样的:原本传统的平台业务去对接智能体。比如发票业务,发票的开具、审核、计税、回款等。根据用户在业务系统前台界面输入若干提示词 或者 语音输入简短语音信息,可以通过智能体给出需要处理的逻辑或者要调用的接口或服务来对接系统内置的各种服务和接口。

学习背景:

希望通过学习AI,特别是智能体(Agent)的开发,将传统平台业务(如发票开具、审核、计税、回款等)与智能交互结合,通过用户输入提示词或语音,自动触发相应的业务逻辑、接口或服务。这是一个非常有前景的方向,结合了自然语言处理(NLP)、智能体架构和系统集成。以下是一个系统化的学习和实施建议,尽量简洁且实用,涵盖技术栈、学习路径和实现思路。

1. 明确核心技术方向

我的需求主要涉及以下AI和相关技术领域:

  • 自然语言处理(NLP):理解用户输入的提示词或语音,解析意图。

  • 语音识别(ASR)与语音合成(TTS):处理语音输入和可能的语音反馈。

  • 智能体(Agent)开发:构建能够根据用户意图调用业务逻辑或接口的智能体。

  • 系统集成:将智能体与现有业务系统的服务、接口对接。

  • 业务流程自动化(RPA+AI):将AI与规则引擎结合,处理发票相关业务逻辑。

2、短期目标:搭建一个简单的意图识别模型

短期目标:用Hugging Face的BERT或Rasa搭建一个简单的意图识别模型,通过一个针对发票业务场景的例子说明它的具体效果。清晰展示意图识别模型的作用、效果,并提供简化的实现思路。

如图示,经斟酌,选用Rasa。

  • 意图识别模型的作用

意图识别模型的目的是从用户输入的自然语言(文本或转录后的语音)中,识别出用户的意图(Intent)和关键信息(Entities),从而触发相应的业务逻辑或API调用。在你的发票业务场景中,模型需要:

  • 识别意图:例如,用户想“开具发票”“查询回款”还是“审核发票”。

  • 提取实体:例如,金额、税率、发票类型、收款方等关键信息。

  • 效果:将用户的模糊输入转化为结构化的指令,供后续系统处理。

预期效果:

  • 用户输入:“开一张1000元的发票,税率13%。”

  • 模型输出:

    • 意图:create_invoice(开具发票)

    • 实体:amount=1000, tax_rate=13%

  • 后续:系统根据输出调用开票API,完成业务操作。

基本步骤

  • 安装和初始化 Rasa 项目:设置开发环境,创建 Rasa 项目。

  • 配置意图和训练数据:定义“开票”和“查询”意图,添加训练数据。

  • 训练 Rasa 模型:训练意图识别模型,测试效果。

  • 添加自定义动作:实现模拟 API 调用,处理“开票”和“查询”逻辑。

  • 测试端到端流程:用 Rasa Shell 测试输入和 API 调用。

  • (可选)扩展功能:支持多轮对话或语音输入。

  • 意图识别模型和智能体的区别

Rasa 与 LangChain 或 LlamaIndex 的相关定义与区别,调研如下:

核心定义与功能

  • Rasa:

    • 定义:一个开源的对话系统框架,专注于构建基于意图识别和对话管理的智能体,支持多轮对话和业务逻辑集成。

    • 核心功能:

      • 意图识别与实体提取:解析用户输入(如“开1000元发票,税率13%” → 意图:create_invoice,实体:{amount: 1000, tax_rate: 0.13})。

      • 对话管理:通过领域文件(domain.yml)和故事(stories.yml)处理多轮对话。

      • 动作执行:支持自定义动作(如调用API、查询数据库)。

      • 技术栈:内置轻量级NLP模型(DIET)或可集成BERT等,支持Python开发。

    • 特点:

      • 专注于对话系统,适合快速搭建端到端的交互式智能体。

      • 自带意图识别和对话管理,开箱即用。

      • 需手动配置训练数据(如nlu.yml)和对话逻辑。

  • LangChain:

    • 定义:一个开源的大模型应用开发框架,用于构建基于大型语言模型(LLM)的智能体,强调与外部工具、记忆和数据源的集成。

    • 核心功能:

      • LLM集成:连接大模型(如Grok、LLaMA、OpenAI)处理复杂语言任务。

      • 工具调用:支持调用API、数据库、搜索引擎等(如调用发票API)。

      • 记忆管理:维护对话上下文,适合多轮交互。

      • 链式工作流:通过“链”(Chains)或“代理”(Agents)组合语言理解和动作。

    • 特点:

      • 高度灵活,适合与大模型结合,处理复杂任务。

      • 依赖外部LLM,需API密钥或本地模型。

      • 更通用,不局限于对话系统,可用于文档分析、知识库查询等。

  • LlamaIndex:

    • 定义:一个开源的数据索引与查询框架,专注于将大模型与外部数据(如文档、数据库)结合,适合知识密集型任务。

    • 核心功能:

      • 数据索引:将业务数据(如发票规则、税率表)索引为向量,供LLM高效查询。

      • 查询引擎:基于用户输入,从索引数据中检索答案或触发动作。

      • LLM集成:类似LangChain,连接大模型处理语言任务。

    • 特点:

      • 专注于数据增强生成(RAG,Retrieval-Augmented Generation),适合需要查询业务数据的场景。

      • 对话功能较弱,主要用于单轮查询或知识提取。

      • 需与LLM结合,依赖外部模型。

 

LangChain 的本质

  • LangChain 是什么:

    • LangChain 是一个 Python/JavaScript 框架,旨在简化基于 LLM 的应用开发。

    • 核心功能:

      • 连接 LLM:通过 API 或本地模型调用大模型(如 Grok、LLaMA、GPT-4)处理语言任务。

      • 工具集成:支持调用外部工具(如 API、数据库、搜索引擎)。

      • 记忆管理:维护对话上下文,支持多轮交互。

      • 工作流管理:通过“链”(Chains)或“代理”(Agents)组织复杂的任务流程。

    • 关键点:LangChain 本身不包含语言处理能力,依赖外部 LLM 提供语言理解和生成能力。

  • 是否需要对接大模型 API:

    • 是的,LangChain 的核心语言处理功能依赖外部大模型。你需要:

      • 通过 API 调用:例如,连接 OpenAI 的 GPT-4 API、xAI 的 Grok API(需 API 密钥)或 Google 的 Gemini API。

      • 本地部署模型:运行开源模型(如 LLaMA、Mistral)在本地服务器,但需要较高算力(GPU)。

    • 如果不配置 LLM,LangChain 无法独立处理语言任务(如解析“开1000元发票,税率13%”)。

 

2. “小模型AI”(Rasa) vs “大模型AI” (LangChain)的理解

  • Rasa(小模型AI):

    • Rasa 的默认模型(DIET)是轻量级,适合资源有限的环境或快速开发。

    • 但它可以集成大模型(如 BERT 或 Grok),所以不完全局限于“小模型”。

    • 优点:训练快、部署简单、数据需求低,适合你的短期目标(快速搭建意图识别原型)。

    • 局限:对复杂、模糊输入的处理能力不如大模型,需较多标注数据优化。

  • LangChain(大模型AI):

    • LangChain 通常依赖大模型(如 Grok),这些模型有更强的语言理解能力和泛化能力。

    • 优点:能处理非结构化输入、支持复杂逻辑、集成多种工具,适合你的中期目标(构建复杂智能体)。

    • 局限:依赖外部 LLM,计算成本高,配置复杂,初期上手门槛较高。

类比:

  • Rasa 像一个“轻量级机器人”,擅长处理特定任务(意图识别、对话管理),用小模型快速完成标准化工作。

  • LangChain 像一个“全能助手”,借助大模型处理复杂、灵活的任务,但需要更多资源和配置。

3、中期目标:明确初阶的学习及操作路径

  • 识别意图:处理用户输入,如“开具一张1000元的发票,税率13%”(意图:create_invoice)和“查询发票编号12345”(意图:query_invoice)。

  • 提取实体:如金额(amount)、税率(tax_rate)、发票编号(invoice_number)。

  • 调用API:通过自定义动作对接模拟API,完成开票或查询。

  • 后续扩展:支持语音输入(集成语音识别API,如讯飞)。


http://www.hkcw.cn/article/VNAGneBihU.shtml

相关文章

【八股消消乐】索引失效与优化方法总结

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…

Java面试八股--06-Linux篇

目录 一、Git 1、工作中git开发使用流程(命令版本描述) 2.Reset与Rebase,Pull与Fetch的区别 3、git merge和git rebase的区别 4、git如何解决代码冲突 5、项目开发时git分支情况 二、Linux 1、Linux常用的命令 2、如何查看测试项目的…

动态规划-647.回文子串-力扣(LeetCode)

一、题目解析 这里的子字符串是连续的,与之前的子序列不同,这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题,如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1),马拉车算法(具有局限性) 时间复杂…

条形进度条

组件 <template><view class"pk-detail-con"><i class"lightning" :style"{ left: line % }"></i><i class"acimgs" :style"{ left: line % }"></i><view class"progress&quo…

大模型赋能:金融智能革命中的特征工程新纪元

一、AI进化论&#xff1a;从“判别”到“生成”的金融新战场 1.1 判别式AI的“痛点”与大模型的“破局” 想象这样一幅画面&#xff1a;银行风控模型像老式收音机&#xff0c;需要人工反复调试参数才能捕捉风险信号&#xff1b;而大模型则是智能调音台&#xff0c;能自动“听…

HA: Wordy靶场

HA: Wordy 来自 <HA: Wordy ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.128&#xff0c;靶场IP192.168.23.130 3&#xff0c;对靶机进行端口服务探…

技巧小结:外部总线访问FPGA寄存器

概述 需求&#xff1a;stm32的fsmc总线挂载fpga&#xff0c;stm32需要访问fpga内部寄存器 1、分散加载文件将变量存放到指定地址即FPGA寄存器地址 sct文件指定变量存储地址&#xff0c;从而可以直接访问外设&#xff0c;&#xff08;28335也可以&#xff0c;不过用的是cmd文件…

深入理解 x86 汇编中的重复前缀:REP、REPZ/REPE、REPNZ/REPNE(进阶详解版)

一、重复前缀&#xff1a;串操作的 “循环加速器” 如果你写过汇编代码&#xff0c;一定遇到过需要重复处理大量数据的场景&#xff1a; 复制 1000 字节的内存块比较两个长达 200 字符的字符串在缓冲区中搜索特定的特征值 手动用loop指令编写循环&#xff1f;代码冗长不说&a…

【PCB设计】STM32开发板——原理图设计(电源部分)

一、PCB设计流程 二、准备工作 1.点击文件新建工程并命名 2.新建图页 在绘制较为复杂的原理图时&#xff0c;可以建立多个图页&#xff0c;使得原理图更加清晰。 右击原理图→新建图页 右击→重命名 3.设计规则相关配置 取消勾选第22个 4.调整页面大小 5.放置“电源树”图片…

C++仿RabbitMQ实现消息队列

前言 本项目将使用 C 在 Linux&#xff08;CentOS 7.6&#xff09; 环境下开发一个仿 RabbitMQ 的简易消息队列。 开发和调试环境如下&#xff1a; 操作系统&#xff1a;Linux (CentOS 7.6) 编辑器&#xff1a;Visual Studio Code / Vim 编译器&#xff1a;g&#xff08;GNU…

离散数学_数理逻辑(二):命题逻辑的推理

前言 每一件事都存在现象和本质.现象是表面,本质是内在.数学可以说是自然科学之母,是一切自然现象的本质.对于编程,表面上是在写代码,实际上是在用离散数学理解问题和解决问题. 引入 命题逻辑的推理部分. "推理"在思考中占了很大比重.笔者曾经把学习方法分了两种:一…

KITTI数据集(计算机视觉和自动驾驶领域)

KITTI&#xff08;Karlsruhe Institute of Technology and Toyota Technological Institute at Chicago&#xff09;数据集是计算机视觉和自动驾驶领域中最广泛使用的基准数据集之一。它由德国卡尔斯鲁厄理工学院和美国芝加哥丰田技术研究所联合发布&#xff0c;旨在推动自动驾…

力扣4.寻找两个正序数组的中位数

文章目录 题目介绍题解 题目介绍 题解 题解链接&#xff1a;题解 核心思路&#xff1a;通过二分查找的确定分割点使左右两部分元素数量相等。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int n1 nums1.length;int n2 nums2.length…

Windows下将Nginx设置注册安装为服务方法!

一、需求背景 每次启动 Nginx 都要去到 Nginx 安装目录下寻找 nginx.exe 文件点击&#xff0c;很是麻烦。 并且远程登录桌面&#xff0c;有时注销用户&#xff0c;会把在当前用户打开的nginx关闭了。 于是考虑可不可以跟其它服务一样能够开机自启&#xff1f;显然是可以的。…

web第九次课后作业--SpringBoot基于mybatis实现对数据库的操作

前言 在前面我们学习MySQL数据库时&#xff0c;都是利用图形化客户端工具(如&#xff1a;idea、datagrip)&#xff0c;来操作数据库的。 在客户端工具中&#xff0c;编写增删改查的SQL语句&#xff0c;发给MySQL数据库管理系统&#xff0c;由数据库管理系统执行SQL语句并返回执…

SpringBoot+XXL-JOB:高效定时任务管理

一、前言 在现代应用程序中&#xff0c;定时任务是不可或缺的一部分。Spring Boot 和 XXL-Job 为你提供了一个强大的工具组合&#xff0c;以简化任务调度和管理。本文将带领你探索如何将这两者集成在一起&#xff0c;实现高效的定时任务管理。无论你是初学者还是有经验的开发者…

java-spring

入门案例 通过bean创建对象 先通过spring的ClassPathXmlApplicationContext读取xml文件 ,然后通过getbean()函数获取对象&#xff0c;进行操作通过反射机制&#xff0c;吸纳Class的函数forName(class属性)创建对象&#xff0c;然后clazz.getDeclaredConstructor().newinstanc…

springboot @value

#springboot value value 可以读取 yaml 中 的数据

简单爬虫框架实现

1. 框架功能概述 (1) HttpSession 类&#xff1a;请求管理 功能&#xff1a;封装 requests 库&#xff0c;实现带重试机制的 HTTP 请求&#xff08;GET/POST&#xff09;。关键特性&#xff1a; 自动处理 429&#xff08;请求过多&#xff09;、5xx&#xff08;服务器错误&am…

欢乐熊大话蓝牙知识14:用 STM32 或 EFR32 实现 BLE 通信模块:从0到蓝牙,你也能搞!

&#x1f680; 用 STM32 或 EFR32 实现 BLE 通信模块&#xff1a;从0到蓝牙&#xff0c;你也能搞&#xff01; “我能不能自己用 STM32 或 EFR32 实现一个 BLE 模块&#xff1f;” 答案当然是&#xff1a;能&#xff01;还能很帅&#xff01; &#x1f468;‍&#x1f3ed; 前…