Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Введение в ЮНИТ
Baidu запустила интеллектуальную платформу настройки диалогов
С появлением технологий и концепций искусственного интеллекта многие продукты надеются использовать метод диалогового взаимодействия человека с компьютером. Однако разработка диалоговых систем — очень сложная работа для большинства разработчиков, требующая высоких технологий и данных. С этой целью Baidu откроет свою технологию понимания и взаимодействия на естественном языке, накопленную за многие годы, и запустит интеллектуальную платформу настройки диалогов и обслуживания UNIT (технология понимания и взаимодействия), которая экспортирует свои ведущие в отрасли технические возможности в огромное количество разработчиков с целью снижения диалоговой системы порога развития. На основе UNIT разработчики могут эффективно и недорого построить диалоговую систему, чтобы предоставлять пользователям такие услуги, как консультации по обслуживанию и ведение бизнеса в таких сценариях, как интеллектуальное обслуживание клиентов и умный дом.
уведомление об использовании
Среда R&D — это среда, которую UNIT предоставляет разработчикам для тестирования диалоговой системы (UNIT по умолчанию предоставляет разработчикам 8 бесплатных сред исследований и разработок, из которых 5 сред исследований и разработок можно использовать для навыков диалога, навыков часто задаваемых вопросов и навыков работы с таблицами, а 3 среды исследований и разработок используются для навыков вопросов и ответов по документам.), который можно использовать для определения пользовательского навыка, аннотирования обучающих данных, обучения навыкам и тестирования диалогов. Модель навыков, развернутая в среде исследований и разработок, может быть интегрирована и вызвана бизнес-системой через API-интерфейс диалога навыков, проводить совместные отладочные тесты и дополнительно оптимизировать эффект модели в соответствии с оценкой эффекта.При использовании Среда НИОКР:
а. В среде исследований и разработок можно развернуть только один навык, и можно сохранить только 5 исторических версий текущей модели навыков.Если есть 5 исторических версий, вам необходимо удалить историческую версию перед повторным обучением модели в текущей среде исследований и разработок. .
б. Среда исследований и разработок обеспечивает только 1 QPS и 500 вызовов в день.Если спрос не может быть удовлетворен, рекомендуется приобрести и использовать производственную среду.
Готов к работе
- Перейти на Байдуai.baidu.com/Подать заявку на квалификацию Unit development
- Найдите платформу разработки — Платформа настройки интеллектуальной диалоговой системы — используйте ее немедленно [Подготовьте свою учетную запись Baidu и заполните основную информацию]
- Введите ЕДИНИЦУ - нажмите
创建机器人
- Управление диалоговым потоком разделено на TaskFlow и распределение навыков, просто выберите один, вы можете увидеть документ для деталей
- Поток задач:Love.Baidu.com/forum/topic…Процесс DIY, высокая гибкость.
- Распределение навыков:Love.Baidu.com/forum/topic…Операция дурак поставляется с различными навыками.
- После завершения создания нажмите на робота, чтобы перейти на страницу разработки.
- Выберите «Мои навыки» -> «Добавить готовые навыки (чат)» -> «Приобрести навыки».
- Здесь выбирается расширенная версия (обычная версия - один раунд, а расширенная версия - несколько раундов). Вы также можете выбрать другие навыки, но код может быть другим. Вы можете изменить параметры кода, ознакомившись с документацией.
- Вернуться на домашнюю страницу разработки моего бота — выбрать управление навыками — добавить навык — многосторонний чат
- Добавьте ботам навыки светской беседы
⭐⭐⭐Робот с функцией чата завершен, после чего необходимо подать заявку на интерфейс 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 ответа диалога, вы можете обработать его самостоятельно, в частности, в
schema
JSON в нем был помещен сзади
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'}
],
Остальное можете исследовать сами, там много интересного~