[⭐Веселая игра] Как быстро создать чат-бота

искусственный интеллект робот

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

Введение в ЮНИТ

Baidu запустила интеллектуальную платформу настройки диалогов


С появлением технологий и концепций искусственного интеллекта многие продукты надеются использовать метод диалогового взаимодействия человека с компьютером. Однако разработка диалоговых систем — очень сложная работа для большинства разработчиков, требующая высоких технологий и данных. С этой целью Baidu откроет свою технологию понимания и взаимодействия на естественном языке, накопленную за многие годы, и запустит интеллектуальную платформу настройки диалогов и обслуживания UNIT (технология понимания и взаимодействия), которая экспортирует свои ведущие в отрасли технические возможности в огромное количество разработчиков с целью снижения диалоговой системы порога развития. На основе UNIT разработчики могут эффективно и недорого построить диалоговую систему, чтобы предоставлять пользователям такие услуги, как консультации по обслуживанию и ведение бизнеса в таких сценариях, как интеллектуальное обслуживание клиентов и умный дом.

уведомление об использовании


Среда R&D — это среда, которую UNIT предоставляет разработчикам для тестирования диалоговой системы (UNIT по умолчанию предоставляет разработчикам 8 бесплатных сред исследований и разработок, из которых 5 сред исследований и разработок можно использовать для навыков диалога, навыков часто задаваемых вопросов и навыков работы с таблицами, а 3 среды исследований и разработок используются для навыков вопросов и ответов по документам.), который можно использовать для определения пользовательского навыка, аннотирования обучающих данных, обучения навыкам и тестирования диалогов. Модель навыков, развернутая в среде исследований и разработок, может быть интегрирована и вызвана бизнес-системой через API-интерфейс диалога навыков, проводить совместные отладочные тесты и дополнительно оптимизировать эффект модели в соответствии с оценкой эффекта.При использовании Среда НИОКР:

а. В среде исследований и разработок можно развернуть только один навык, и можно сохранить только 5 исторических версий текущей модели навыков.Если есть 5 исторических версий, вам необходимо удалить историческую версию перед повторным обучением модели в текущей среде исследований и разработок. .

б. Среда исследований и разработок обеспечивает только 1 QPS и 500 вызовов в день.Если спрос не может быть удовлетворен, рекомендуется приобрести и использовать производственную среду.

Готов к работе

  • Перейти на Байдуai.baidu.com/Подать заявку на квалификацию Unit development

  • Найдите платформу разработки — Платформа настройки интеллектуальной диалоговой системы — используйте ее немедленно [Подготовьте свою учетную запись Baidu и заполните основную информацию]

  • Введите ЕДИНИЦУ - нажмите创建机器人 
  • Управление диалоговым потоком разделено на TaskFlow и распределение навыков, просто выберите один, вы можете увидеть документ для деталей

  • После завершения создания нажмите на робота, чтобы перейти на страницу разработки.

  • Выберите «Мои навыки» -> «Добавить готовые навыки (чат)» -> «Приобрести навыки».
  • Здесь выбирается расширенная версия (обычная версия - один раунд, а расширенная версия - несколько раундов). Вы также можете выбрать другие навыки, но код может быть другим. Вы можете изменить параметры кода, ознакомившись с документацией.

  • Вернуться на домашнюю страницу разработки моего бота — выбрать управление навыками — добавить навык — многосторонний чат
  • Добавьте ботам навыки светской беседы

⭐⭐⭐Робот с функцией чата завершен, после чего необходимо подать заявку на интерфейс API

Подать заявку на API роботов

  • Нажмите, чтобы создать приложение - после завершения создания вернитесь к списку приложений, вы можете увидетьAPI Key иSecret Key 

Код развертывания диалогового окна

  • Первым делом, конечно же, нужно направить пакет и заполнитьkey 
import json
import random
import requests
# 填写自己的API Key 和 Secret Key
clinet_id = 'your API Key'
clinet_secret = 'your Secret Key'
  • Второй шаг — получить access_token и ess_token, а получение acce_token жестко закодировано.

  • Еще одна вещь, которую следует отметить, это post_data, вам нужно передать свои собственные параметры, подробности см. Ниже.

  • Получив json ответа диалога, вы можете обработать его самостоятельно, в частности, вschemaJSON в нем был помещен сзади

def unit_chat(chat_input,user_id='8888'):
    '''
    description:调用百度UNIT接口,回复聊天内容
    '''
    # 设置默认回复内容,一旦出现异常,回复该内容
    chat_reply = '不好意思,俺正在学习中,随后回复你'
    # 根据 clinet_id 与 clinet_secret 获取access_token
    # 获取access_token是写死的,参考https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
    url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(clinet_id,clinet_secret)
    res = requests.get(url)
    access_token = eval(res.text)['access_token']
    # ess_token 写死 获取聊天机器人接口数据
    unit_chatbot_url = 'https://aip.baidubce.com/rpc/2.0/unit/service/chat?access_token=' + access_token
    # 定死的 参考https://ai.baidu.com/ai-doc/UNIT/Zk38h1vl4#requestuser_id
    # 对话API调用并实现 文档 https://ai.baidu.com/forum/topic/show/944007
    post_data = {
        "bot_session": "",
        "log_id":str(random.random()),
        "service_id":"your robot id", # 你的机器人的id
        "session_id":"",
        "request":{
            "query":chat_input,
            "query_info": {
                "asr_candidates": [],
                "source": "KEYBOARD",
                "type": "TEXT"
            },
            "updates": "",
            "user_id":user_id,
        },
        "bot_id":"your skill id", # 机器人的技能的id
        "version":"2.0",
        "dialog_state":{
            "contexts":{
                "SYS_REMEMBERED_SKILLS":[
                    ""
                ]
            }
        }
    }
    # 将封装好的数据作为请求内容,发送给Unit料件机器人接口,并得到返回结果
    res = requests.post(url=unit_chatbot_url,json=post_data)
    
    # 获取聊天接口返回数据
    unit_chat_obj = json.loads(res.content)
    # 判断聊天接口返回数据是否出错
    if unit_chat_obj['error_code'] != 0:
        return chat_reply
    # 找到返回文本内容 result -> response_list
    unit_chat_obj_result = unit_chat_obj['result']
    unit_chat_response_list = unit_chat_obj_result['response_list']
    # 定位 schema -> intent_confidence(置信度) 如果大于0.0得到响应结果
    unit_chat_response_obj = random.choice(
        [unit_chat_response for unit_chat_response in unit_chat_response_list if unit_chat_response["schema"]["intent_confidence"]>0.0]
    )
    # 获取回复内容(共有三个,通过random随机输出一个),访问 action_list -> 选择启动一个 -> say -> 得到响应结果
    unit_chat_response_action_list = unit_chat_response_obj["action_list"]
    # 随机选择一个回答进行回复
    # unit_chat_response_action_obj = random.choice(unit_chat_response_action_list)
    # 选择置信度最大值的回答进行回复
    confidence_list = [unit_chat_response_confidence["confidence"] for unit_chat_response_confidence in unit_chat_response_action_list]
    confidence_max_index = confidence_list.index(max(confidence_list ))
    unit_chat_response_action_obj = unit_chat_response_action_list[confidence_max_index]
    unit_chat_response_say = unit_chat_response_action_obj["say"]
    return unit_chat_response_say 

конкретный код, пожалуйста, обратите вниманиеpost_dataЕсть два параметра, которые нужно заменить на параметры робота, которые вы применили для себя:

  • service_id: идентификатор вашего бота
  • bot_id: идентификатор вашего навыка

Итак, где вы можете найти его? Откройте платформу UNIT, и вы увидите ее в моем роботе, как показано ниже:

  • Третий шаг — написать основную функцию, запустить и начать общаться.
if __name__=='__main__':
    while True:
        user_id='Armor'
        chat_input = input("{}输入:".format(user_id))
        res_say = unit_chat(chat_input,user_id=user_id)
        print("AI回复:",res_say)
        print("-.-"*20)
        if chat_input =='Q' or chat_input =='q': # 按q退出
            break

Посмотреть эффект

Спереди все в порядке, но последние несколько быков не в порядке.

список возвращаемых параметров json

возвращениеschemaФормат следующий:

'schema': {
    'intent_confidence': 1.0, 
    'slots': [], 
    'domain_confidence': 0.0, 
    'slu_tags': [], 
    'intent': 'BUILT_CHAT'
}, 
'action_list': [
    {'refine_detail': {'option_list': [], 'interact': '', 'clarify_reason': ''}, 
     'action_id': 'chat_satisfy', 
     'confidence': -1.1745927334, 
     'custom_reply': '', 
     'say': '你好,有什么可以帮到你的吗?', 
     'type': 'chat'
    }, {'refine_detail': {'option_list': [], 'interact': '', 'clarify_reason': ''}, 
        'action_id': 'chat_satisfy', 
        'confidence': -1.6890048981, 
        'custom_reply': '', 
        'say': '嗯,很晚了还不睡么?', 
        'type': 'chat'
       }, {'refine_detail': {'option_list': [], 'interact': '', 'clarify_reason': ''}, 
           'action_id': 'chat_satisfy', 
           'confidence': -1.7524920702, 
           'custom_reply': '', 
           'say': '你好,请问怎么称呼', 
           'type': 'chat'}
],

Остальное можете исследовать сами, там много интересного~