文章目录

  • 问题描述
  • 初始化项目
  • 仅解析意图
  • 连续对话
  • 简单例子
  • 对话流程
  • HTML形式
  • 常用命令
  • 遇到的坑
  • 参考文献

问题描述

Rasa启用API后可以调用,但官方文档 HTTP API只给出了curl的方法

如何通过Python调用API像rasa x一样进行完整对话?

初始化项目

  1. 初始化项目:rasa init
  2. 启动Rasa API:rasa run --enable-api
  3. 访问http://localhost:5005/检验是否启动成功

PS:若有自定义动作,需要定义endpoints和启动自定义动作

endpoints.yml

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

启动自定义动作:rasa run actions

仅解析意图

A.py(千万别命名为test.py)

import json
import requestsurl = "http://localhost:5005/model/parse"
data = {"text": "hello"}
data = json.dumps(data, ensure_ascii=False)
data = data.encode(encoding="utf-8")
r = requests.post(url=url, data=data)
print(json.loads(r.text))

结果

{'intent': {'name': 'greet', 'confidence': 0.9930983185768127}, 'entities': [], 'intent_ranking': [{'name': 'greet', 'confidence': 0.9930983185768127}, {'name': 'mood_unhappy', 'confidence': 0.0036425672005861998}, {'name': 'bot_challenge', 'confidence': 0.002293727360665798}, {'name': 'mood_great', 'confidence': 0.00035825479426421225}, {'name': 'goodbye', 'confidence': 0.00032570294570177794}, {'name': 'affirm', 'confidence': 0.00022301387798506767}, {'name': 'deny', 'confidence': 5.849302760907449e-05}], 'text': 'hello'}

连续对话

import json
import secrets
import requestsdef post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rsender = secrets.token_urlsafe(16)
url = "http://localhost:5005/webhooks/rest/webhook"
while True:message = input("Your input ->  ")data = {"sender": sender,"message": message}print(post(url, data))

以下内容是更精细的操作,建议忽略

简单例子

如何进行一轮对话?主要分三步——发送消息、预测下一步动作、执行动作

import json
import requestsdef post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rif __name__ == "__main__":# 会话id,此处简单设为0conversation_id = 0# 1. 发送消息url = "http://localhost:5005/conversations/{}/messages".format(conversation_id)data = {"text": "Hi","sender": "user"}result = post(url, data)print(result)# 2. 预测下一步动作url = "http://localhost:5005/conversations/{}/predict".format(conversation_id)result = post(url)print(result)# 3. 执行动作url = "http://localhost:5005/conversations/{}/execute".format(conversation_id)data = {"name": result["scores"][0]["action"]  # 取置信度最高的动作}result = post(url, data)print(result)print(result["messages"])  # 获取对话信息# [{'recipient_id': '1', 'text': 'Hey! How are you?'}]

对话流程

简单例子无法连续对话,如何连续对话呢?

Created with Raphaël 2.2.0开始等待输入?发送消息预测下一步动作执行动作yesno
import json
import secrets
import requestsdef post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rif __name__ == "__main__":conversation_id = secrets.token_urlsafe(16)  # 随机生成会话idmessages_url = "http://localhost:5005/conversations/{}/messages".format(conversation_id)  # 发送消息predict_url = "http://localhost:5005/conversations/{}/predict".format(conversation_id)  # 预测下一步动作execute_url = "http://localhost:5005/conversations/{}/execute".format(conversation_id)  # 执行动作action = "action_listen"  # 动作初始化为等待输入while True:if action in ["action_listen", "action_default_fallback", "action_restart"]:# 等待输入text = input("Your input ->  ")post(messages_url, data={"text": text, "sender": "user"})  # 发送消息response = post(predict_url)  # 预测下一步动作action = response["scores"][0]["action"]  # 取出置信度最高的下一步动作response = post(execute_url, data={"name": action})  # 执行动作messages = response["messages"]  # 取出对话信息if messages:print(messages)

domain.yml中的utter_great可添加buttons

responses:utter_greet:- text: Hey! How are you?buttons:- payload: '/mood_great'title: 'great'- payload: '/mood_unhappy'title: 'sad'

HTML形式

下载本人的开源界面

  1. 启动Rasa API(允许跨域)
rasa run --enable-api --cors "*"
  1. 直接打开页面index.html

常用命令

  1. 查看5005端口是否被占用 netstat -aon | findstr 5005
  2. 启动Rasa API服务(跨域)rasa run --enable-api --cors "*"
  3. 启动Rasa API服务(保存日志)rasa run --enable-api --log-file out.log
  4. 启动Rasa API服务(指定模型)rasa run --enable-api -m models

遇到的坑

  1. 若遇到死循环,一般是遇到默认动作没有退出,查看默认动作

参考文献

  1. Configuring the HTTP API
  2. Rasa HTTP API
  3. windows系统安装curl
  4. Windows查看某个端口被占用的解决方法
  5. python - How to send POST request?
  6. NLU server - ParsingError · Issue #4024
  7. rasa - http api测试
  8. Bootstrap v3中文文档

Python调用Rasa API服务进行连续对话相关推荐

  1. python调用lib_基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  2. pycharm构建虚拟环境_10分钟,带你用Python构建RESTful API 服务

    1. 前言 上一篇文章,介绍了使用 Java + Spring Boot + MyBatis 构建 RESTful API 的详细步骤:很多小伙伴表示,更愿意用 Python 编写 RESTful A ...

  3. 用Python调用OpenAI API做有趣的事

    获取 API KEY 首先需要 可以开全局的梯子,选择日本或韩国节点,可以通过 ipinfo 检查当前 IP 地址是否为日本或韩国地区,然后访问 OpenAI 网站注册账号并完成认证. 如果自己完成账 ...

  4. 新浪微博OAuth2.0授权及使用python调用微博API

    通过调用新浪微博API获取数据时数组采集中一个很好的方法,为了获取较新的资讯数据内容,本文主要介绍新浪微博OAuth2.0授权机制.微博开发者平台的使用.python调用微博API等内容,文末提供测试 ...

  5. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  6. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

  7. 如何调用华为云api_如何部署模型到ModelArts并远程调用 (五):如何调用在线API服务...

    如何调用在线API服务 首先需要将导入的模型部署成一个在线API服务,然后根据调用指南中的API信息和指导文档,使用HTTPS请求进行调用. 部署模型为在线服务 参考此文档.并且可以参考此案例中的模型 ...

  8. python电脑怎么打开任务管理器_利用Python调用Windows API,实现任务管理器功能

    任务管理器具体功能有: 1. 列出系统当前所有进程. 2. 列出隶属于该进程的所有线程. 3. 如果进程有窗口,可以显示和隐藏窗口. 4. 强行结束指定进程. 通过Python调用Windows AP ...

  9. 用Python调用OpenAI API进行文本创作

    文章目录 一.前言 二.使用教程 2.1获取API密钥 2.2 连接API 2.3 文本生成 三.创作示例 3.1 诗歌创作 3.2 推荐书单 3.3 超级百度 四.总结 一.前言 本文将教大家用py ...

最新文章

  1. 论坛报名 | 数理基础:人工智能的重大理论挑战和最新成果
  2. python代码示例图形-使用Python统计函数绘制复杂图形matplotlib
  3. DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略
  4. [Ubuntu] Ubuntu系统环境变量详解
  5. 十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
  6. AJAX 大数据量处理
  7. 妙用TurboMail企业通讯平台,重要邮件不再躲猫猫
  8. 我的时时在线电脑(千脑)
  9. 中科院计算所在可信大数据软件技术方面的研究工作【DOC+PPT下载】
  10. NSX-T业务转发04—— 多层Tier0Tier1路由
  11. javascript中对this的理解
  12. Base64解码文件下载
  13. 网站SEO过程中的死链处理
  14. 什么是“决策表”?什么是“决策树”?
  15. 某女28天断食全记录,120—84
  16. 今日科技联播:美团今日上市估值超小米京东;阿里巴巴获杭州第一张自动驾驶牌照...
  17. ipad iphone开发_如何从iPhone或iPad连接到Windows远程桌面
  18. Linux系统和Windows系统的区别
  19. redis设置密码并修改查看的几种方式
  20. matlab结果输出到文本的方法

热门文章

  1. 系统集成项目管理工程师(中级)
  2. 【数据分析与挖掘】基于Apriori算法的中医证型的关联规则挖掘(有数据集和代码)
  3. Redis有效时间设置及时间过期处理
  4. 实战生成对抗网络[1]:简介
  5. 一级计算机windows考试试题,2001年4月全国计算机等级考试一级笔试试题Windows
  6. MySQL (四)------DML操作表记录-增删改【重点】DQL操作表记录-查询【重点】
  7. 无法引用Microsoft.Office.Interop.Excel的解决
  8. 郝斌c语言视频错误的在哪里,根据郝斌C语言视频学的解简单一元二次方程的代码总是敲错,求大神帮忙看看...
  9. CTF/CTF练习平台-welcome to bugkuctf【php://filter及php://input】
  10. 超快速!10分钟入门Keras指南