AIGC相关的编程题目【初级题目】3. 简单的聊天机器人

3. 简单的聊天机器人

        利用开源的聊天机器人框架(例如Rasa或Dialogflow),创建一个能够回答预设问题的简单聊天机器人。例如,用户可以询问天气、时间或简单的数学问题,机器人应该能够理解并回答。

用Python实现一个简单的聊天机器人。可以使用Rasa开源框架来快速搭建一个基础的对话系统。

1. 安装Rasa

首先确保已经安装了Python 3.7或更高版本。然后在命令行中运行以下命令安装Rasa:

pip install rasa
2. 创建一个新的Rasa项目

运行以下命令创建一个新的Rasa项目:

rasa init

按照交互式提示,选择创建初学者项目。这将在当前目录下生成一个包含基本配置文件的Rasa项目。

3. 定义意图和实体

打开 data/nlu.yml 文件,定义你想要处理的用户意图和实体。例如:

version: "3.1"

nlu:
- intent: greet
  examples: |
    - 你好
    - 嗨
    - 早上好
    
- intent: goodbye
  examples: |
    - 再见 
    - 拜拜
    - 下次见
    
- intent: ask_weather
  examples: |
    - 今天天气怎么样
    - 明天会下雨吗
    
- intent: ask_time
  examples: |
    - 现在几点了
    - 现在是什么时间
    
- intent: ask_math
  examples: |
    - 1加1等于几
    - 5乘以6是多少

这里定义了打招呼、说再见、询问天气、询问时间、简单数学问题等几个基本意图。 

4. 编写对话流程

打开 data/stories.yml ,编写对应意图的对话流程。例如:

version: "3.1"

stories:

- story: greet path
  steps:
  - intent: greet
  - action: utter_greet

- story: goodbye path
  steps:
  - intent: goodbye
  - action: utter_goodbye
  
- story: ask weather path
  steps:
  - intent: ask_weather
  - action: action_answer_weather
  
- story: ask time path 
  steps:
  - intent: ask_time
  - action: action_answer_time

- story: ask math path
  steps:  
  - intent: ask_math
  - action: action_answer_math

对于打招呼和说再见,我们直接返回一个简单的回复。对于询问天气、时间、数学问题,我们调用自定义的action进行处理。

5. 编写自定义Action

在 actions/actions.py 文件中,实现上面用到的自定义action:

from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

class ActionAnswerWeather(Action):

    def name(self) -> Text:
        return "action_answer_weather"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        
        dispatcher.utter_message(text="对不起,我暂时无法提供天气信息。")

        return []

class ActionAnswerTime(Action):

    def name(self) -> Text:
        return "action_answer_time"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        import datetime
        now = datetime.datetime.now()
        dispatcher.utter_message(text=f"现在是{now.hour}点{now.minute}分。")

        return []  

class ActionAnswerMath(Action):

    def name(self) -> Text:
        return "action_answer_math"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        
        dispatcher.utter_message(text="对不起,我的数学还不太好,暂时回答不了你的问题。")
        
        return []

这里只是一个简单的示例实现,你可以根据需要添加更复杂的逻辑。比如调用天气API获取天气信息,使用正则表达式解析数学表达式等。

6. 定义响应模板

打开domain.yml文件,定义机器人的响应模板:

version: '3.1'
intents:
  - greet
  - goodbye
  - ask_weather
  - ask_time 
  - ask_math
responses:
  utter_greet:
  - text: "你好!有什么我可以帮助你的吗?"
  utter_goodbye:
  - text: "再见,下次见!"
actions:
  - action_answer_weather
  - action_answer_time
  - action_answer_math
7. 训练模型并运行

使用以下命令训练NLU和对话管理模型:

rasa train

训练完成后,运行下面的命令启动Rasa服务:

rasa run --enable-api
rasa run actions

现在你就可以打开另一个终端,使用curl命令来与你的聊天机器人对话了:

curl -XPOST http://localhost:5005/webhooks/rest/webhook \
  -d '{"sender": "user1", "message": "你好"}'

以上就是使用Rasa框架实现一个简单聊天机器人的主要步骤。


相关文章: 

AIGC相关的编程题目【初级题目】1. 文本生成器 2. 图像标签生成-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程日记✧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值