当前位置: 首页 > wzjs >正文

网站建设有什么方法连接数据库唐山公司做网站

网站建设有什么方法连接数据库,唐山公司做网站,佛山java web网站开发,最靠谱的网站此篇接续上一篇 传统业务对接AI-AI编程框架-Rasa的业务应用实战(4)--Rasa成型可用 针对业务配置rasa并训练和部署 上一篇我们已经让Rasa准确识别了我们自然语言指令的开票和查询发票的意图和实体。 # 开具发票场景 用户输入:开具一张1000元…

此篇接续上一篇 传统业务对接AI-AI编程框架-Rasa的业务应用实战(4)--Rasa成型可用 针对业务配置rasa并训练和部署
 

上一篇我们已经让Rasa准确识别了我们自然语言指令的开票和查询发票的意图和实体。

# 开具发票场景

用户输入:开具一张1000元的发票,税率13%   // 识别开票意图和实体

rasa输出:好的,我将为您开具一张金额为1000元,税率为13%的发票。

# 查询发票场景

用户输入:查询发票编号12345  // 识别发票查询意图和实体

rasa输出:正在查询发票编号12345的详情,请稍候。

此篇我们要做进一步提升改造,内容如下:

1、当前是命令行界面输入文本来交互,我则希望是前端发送http rest请求来输入自然语言指令。 

比如:前端页面访问 http://localhost:xxx/xxx/ (rasa服务的交互接口)

2、Rasa 接收到前端的自然语言指令后,识别了意图和实体,调用后端的开票/查询业务服务接口

并最终将最后的业务操作结果,返回给前端。

http://localhost:8088/ai/rasa/issue_invoice(开票接口)


http://localhost:8088/ai/rasa/query_invoice/xxx(查票接口)


接下来就是我们具体的改造 

1、定义 Rasa 的后台服务API地址,通过配置 endpoints.yml 文件来实现:(在其中添加以下配置内容)

action_endpoint:url: "http://localhost:5055/webhook"

解释:http://localhost:5055/webhook 此即 rasa对外暴露的API接口,前端界面就可以通过这个url来传入自然语言指令来与rasa交互

2、先改规则配置文件:

 开票和查票的两个意图的动作,都由原来的返回响应文本(utter_issue_invoice),改成执行动作(action_issue_invoice),即触发对应domain.yml中配置的动作项:

3、实现rasa的开票和查票的两个动作 即 action_issue_invoice 和 action_query_invoice 去调用业务系统的后台服务接口

编辑工作目录下的actions/actions.py文件 如下:

from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.events import SlotSet
import requestsclass ActionIssueInvoice(Action):def name(self):return "action_issue_invoice"def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: dict):amount = tracker.get_slot("amount")tax_rate = tracker.get_slot("tax_rate")if amount and tax_rate:# 替换为你的发票系统 API 地址和参数try:response = requests.post("http://localhost:8088/ai/rasa/issue_invoice",json={"amount": amount.replace("元", ""), "tax_rate": tax_rate.replace("%", "")},headers={"Authorization": "Bearer YOUR_API_TOKEN"})if response.status_code == 200:dispatcher.utter_message(text=f"发票已开具,金额为{amount},税率为{tax_rate}。")else:dispatcher.utter_message(text=f"发票开具失败:{response.json().get('error', '未知错误')}。")except Exception as e:dispatcher.utter_message(text=f"发票开具失败:{str(e)}。")return [SlotSet("amount", amount), SlotSet("tax_rate", tax_rate)]else:dispatcher.utter_message(text="抱歉,无法识别金额或税率,请重新输入。")return []class ActionQueryInvoice(Action):def name(self):return "action_query_invoice"def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: dict):invoice_number = tracker.get_slot("invoice_number")if invoice_number:# 替换为你的发票系统 API 地址和参数try:response = requests.get(f"http://localhost:8088/ai/rasa/query_invoice/{invoice_number}",headers={"Authorization": "Bearer YOUR_API_TOKEN"})if response.status_code == 200:invoice_data = response.json()dispatcher.utter_message(text=f"发票编号{invoice_number}的详情:{invoice_data}。")else:dispatcher.utter_message(text=f"查询失败:{response.json().get('error', '未知错误')}。")except Exception as e:dispatcher.utter_message(text=f"查询失败:{str(e)}。")return [SlotSet("invoice_number", invoice_number)]else:dispatcher.utter_message(text="抱歉,无法识别发票编号,请重新输入。")return []

此即意味着,当识别了开票意图后, 会执行Python的action_issue_invoice方法,传入识别的实体信息去调用开票的后端服务接口。当识别了查询发票的意图后,会执行Python的action_query_invoice方法, 传入识别的实体信息去调用开票的后端服务接口。

 4、以服务方式(非壳方式 即不是shell命令行模式)启动 rasa 执行以下命令:

rasa run --enable-api --cors "*" --port 5005

执行后运行如下:

这样 rasa 就以http server模式启动了,前端就可以通过http请求与之交互对话了。

5、启动 rasa 的动作服务器。  在工程目录下,新开个 powershell 执行界面,执行以下命令:

rasa run actions

 此一步正是第3步中的 actions/actions.py 的服务端实现的部署启动,用来对外调用业务接口

如上图所示 就是启动成功了 动作服务器的端口默认为:5055 

6、模拟业务前端界面发起开票的自然语言指令试试效果

如下图,我用自然语言,作为传入参数,调用rasa的server,它成功调用了业务端接口并返回了正确的预期结果。大功告成!

上图是我的模拟开票服务的后端接口日志输出,证明rasa在识别到开票的自然语言指令后确实成功调用了业务接口。 

再试试查票的识别:

也是OK 完美识别。 


末尾,顺带附上我测试用的业务接口的代码 (模拟开发票和查发票的业务API) 

@RestController
@RequestMapping("/ai/rasa")
public class Ai4BizController extends BaseController {private static final Logger logger = LoggerFactory.getLogger(Ai4BizController.class);@PostMapping("/issue_invoice")public JSONObject issueInvoice(@RequestBody JSONObject reqObj) {String amount = reqObj.getString("amount");String taxRate = reqObj.getString("tax_rate");if (StringUtils.isEmpty(amount) || StringUtils.isEmpty(taxRate)) {return fail("开票失败,缺少开票信息!");}logger.info("业务系统后台成功开具了一张发票!金额:{}, 税率:{}", reqObj.getString("amount"), reqObj.getString("tax_rate"));JSONObject data = new JSONObject().fluentPut("info", "发票开具成功!").fluentPut("fee", reqObj.getString("amount")).fluentPut("tax_rate", reqObj.getString("tax_rate"));return success(data);}@GetMapping("/query_invoice/{invoice_number}")public JSONObject queryInvoice(@PathVariable("invoice_number") String invoiceNumber) {if (StringUtils.isEmpty(invoiceNumber)) {return fail("查询失败,缺少发票号码!");}return success(new JSONObject().fluentPut("info", "您查询的发票号码是:" + invoiceNumber));}
}

http://www.dtcms.com/wzjs/337366.html

相关文章:

  • 本地建设网站怎么查看后台账号专业的网站优化公司
  • 成都市建设领域网站咨询电话优化师是做什么的
  • html 网站模板下载企业查询天眼查
  • 邢台网站建设网络公司网络运营好学吗
  • 在线个人资料制作网站郑州网站推广公司电话
  • 个人博客网站怎么赚钱网页在线代理翻墙
  • 长安网站建设制作app推广实名认证接单平台
  • 静安企业网站制作电商平台推广费用大概要多少
  • 代申请可信网站西安网站开发制作公司
  • 网站建设需要那些人推广赚钱app哪个靠谱
  • 360提交入口网址seo博客大全
  • 新闻视频网站开发马鞍山网站seo
  • 网站关键词优化推广哪家快故事性营销软文
  • 什么网站可以兼职做鸭子网络营销怎么做推广
  • 做网站需要留什么条件谷歌seo优化技巧
  • 深圳设计网站源码常德政府网站市民留言
  • 现在的那家做网站比较好一些呢百度公司
  • 西安做网站公司怎么样seo站长工具综合查询
  • html5 mysql 网站开发长春网站提升排名
  • 增加网站关键词百度小说风云榜排名
  • 动态网站建设方面的书百度手机助手app下载
  • 网站横幅代码关键词优化到首页怎么做到的
  • 龙岗附近做网站公司网站搜索优化方法
  • 搜索网站老是跳出别的网站要怎么做石家庄头条今日头条新闻
  • 济南智能网站建设哪家便宜googleplay安卓版下载
  • p2p网站制作怎样精选关键词进行网络搜索
  • 网站建设php的心得和体会百度风云榜游戏
  • 织梦cms 网站栏目管理淮北seo排名
  • 乐清高端网站建设国内b2b十大平台排名
  • 做网站销售好累广告投放平台公司