Как я разрабатываю мини-программу AI WeChat без затрат за 3 дня

Умный апплет

происхождение истории


Основываясь на своем хобби и интересе к ИИ, я самостоятельно встал на путь изучения машинного обучения. Как и всем, кто любит ИИ, мне с трудом удалось обучить модель глубокого обучения несколько раз во время одинокого пути открытий.

Один из результатов, который меня больше всего впечатлил, — это модель классификации настроений. Он может генерировать радости, печали и печали автора за ним на основе вашего текста.

Я был приятно удивлен «человечностью», продемонстрированной моделью глубокого обучения, поэтому начал думать о том, как превратить ее «человечность» в инструмент помощи людям.

Создайте приложение верхнего уровня, основанное на эмоциональной модели, и позвольте ему добавить различные фейерверки в человеческое общество.

Основываясь на различных соображениях, я, наконец, решил разработать апплет «эмоций» WeChat.

История начинается


Прежде чем разрабатывать небольшую программу, нам очень необходимо иметь полное представление о ней.

Что такое маленькая программа

Короче говоря, по сравнению с традиционными приложениями, мини-программы WeChat — это совершенно новый способ подключения пользователей и сервисов, который очень удобен для пользователей, и его можно легко приобрести и распространить в WeChat.

История развития мини-программы

На самом деле мини-программы не появились из воздуха. Когда WeChat постепенно стал популярным и стал неотъемлемым социальным инструментом почти для всех, WebView с WeChat постепенно стал крупнейшим мобильным веб-порталом. Количество посещений WebView в день даже больше, чем количество посещений всех браузеров вместе взятых. Хотя данные о ежедневной активности WeChat WebView нельзя получить через третьих лиц, этот объективный факт косвенно способствовал рождению апплета.

Фактически, до того, как апплет официально привлек внимание людей, WeChat уже имел аналогичный интерфейс вызовов js.Здесь мы показываем вам вызов WeChat.js-bridgeПример нативного компонента для просмотра изображений:

WeixinJSBridge.invoke('imagePreview', {
current: 'http://inews.com',
urls: [ // 所有图片的URL列表,数组格式
    'https://img/1.jpg',
    'https://img/2.jpg',
    'https://img/3.jpg'
]
}, function(res) {
    console.log(res.err_msg)
})

Такой интерфейс js изначально предназначался для внутреннего персонала Tencent, но был случайно обнаружен и использован многими отдельными разработчиками, что постепенно стало стандартом веб-страниц в WeChat.

В начале 2015 года WeChat официально выпустил набор инструментов для веб-разработки под названиемjs-sdk, в этом наборе инструментов открыты десятки интерфейсов, таких как оплата WeChat, запись, распознавание голоса и т. д. Это открывает новую дверь, которая никогда раньше не открывалась для всех веб-разработчиков, позволяя всем разработчикам свободно использовать нативные возможности разработки WeChat, что позволяет им выполнять некоторые задачи, которые ранее были невозможны или трудновыполнимы.

js-sdk отлично наследуетсяWeixinJSBridgeхарактеристики, и изменился с открытого только внутрь на открытый наружу. И это позволяет всем веб-разработчикам иметь больше возможностей для работы с функциями WeChat через открытый интерфейс вызовов WeChat. Однако этот режим не очень хорошо решает проблему мобильного Интернета:

  • Когда пользователь получает доступ к странице, будет процесс белого экрана, который может быть четко воспринят до отображения страницы. Ограниченная скоростью сети и производительностью различных терминалов, эта проблема будет становиться все более и более очевидной.

В результате родилась расширенная версия js-sdk, в которой появилась очень важная новая функция, которая называется:Автономное хранилище веб-ресурсов WeChat.

​Следующий текст цитируется из внутренних документов (окончательно не открытых для публики):

Автономное хранилище веб-ресурсов WeChat — это решение для веб-ускорения на базе WeChat для веб-разработчиков.

Используя автономное хранилище WeChat, веб-разработчики могут использовать возможности хранения ресурсов, предоставляемые WeChat, для прямой загрузки веб-ресурсов из WeChat локально, не извлекая их с сервера, тем самым сокращая время загрузки веб-страниц и предоставляя пользователям WeChat более удобный просмотр веб-страниц. Все веб-приложения под каждой официальной учетной записью могут в общей сложности кэшировать до 5 М ресурсов.

Я полагаю, что все ясно это видели, на самом деле это расширенная версия кэша приложений в HTML5.

Однако после многих тестов было обнаружено, что до сих пор есть проблемы, которые до конца не решены:

  • Переключение страниц более резкое;
  • Заметна задержка нажатия.

В конце концов WeChat понял, что js-sdk не может справиться с этими проблемами, для завершения которых требуется совершенно новая система, и эта система должна иметь следующие возможности:

  • быстрая загрузка

  • родной опыт

  • Простое в использовании и безопасное открытие данных WeChat

  • Принимая во внимание эффективность разработки и сложность разработки

И это происхождение маленькой программы.

история начинается


предисловие

Прежде всего, прошу меня простить, эта статья не научит вас разрабатывать небольшие программы с нуля. Если вы новичок в разработке программного обеспечения. Тогда я предлагаю вам сначала понять некоторые основысинтаксис jsи соответствующийПередовые знания.

После освоения основ фронтенда я считаю, что вОфициальная документация по интерфейсным компонентам мини-программыС помощью , любой может быстро приступить к разработке небольших программ.

Ниже я в основном поделюсь с вами двумя наиболее важными,самый экономичныйДва навыка разработки апплета:

  • Построить облачную среду разработки небольших программ;
  • Как использовать облачную разработку для вызова интерфейсов моделей ИИ.

Облачная мини-программа


Когда я впервые задумался о разработке мини-программ, как и вы, у меня было много опасений:

  • Нужно купить доменное имя и сервер?

  • Высоки ли затраты на техническое обслуживание?

С этими опасениями я осторожно открылОфициальная документация WeChat. После распределенного чтения мозга я обнаружилоблачная разработкаэто ключевое слово.

Что такое облачная разработка?


Это объясняется в официальной документации WeChat:

Разработчики могут использовать облачную разработку для разработки мини-программ и мини-игр WeChat, а также использовать облачные возможности без создания сервера.

Облачная разработка предоставляет разработчикам полную встроенную облачную поддержку и поддержку службы WeChat, ослабляет концепцию серверной части, эксплуатации и обслуживания, не требует создания сервера и использует API, предоставляемый платформой, для развития основного бизнеса, что может достичь быстрый запуск и итерация.В то же время это возможность, которая совместима, но не взаимоисключает, с уже используемыми разработчиками облачными сервисами.

Облачная разработка обеспечивает поддержку нескольких основных возможностей:

способность эффект инструкция
облачная функция Нет необходимости создавать свой собственный сервер Код, работающий в облаке, естественным образом аутентифицируется частным протоколом WeChat, и разработчикам нужно только написать собственный код бизнес-логики.
база данных Нет необходимости создавать собственную базу данных База данных JSON, которая может работать на внешнем интерфейсе апплета, а также считываться и записываться в облачной функции.
место хранения Нет необходимости в собственном хранилище и CDN Загружайте/выгружайте облачные файлы непосредственно в интерфейсе апплета и управляйте ими визуально в консоли облачной разработки.
облачный вызов Интеграция с родным сервисом WeChat Возможность использования открытого интерфейса апплета без аутентификации на основе облачных функций, в том числе возможность обращения к серверу и получения открытых данных и т. д.

Проще говоря, с облачной разработкойЯ могу разработать полноценный апплет, не покупая сервер.

Эй, да, это то, что я хочу.

Как создать облачную среду разработки для небольших программ


Итак, как построить облачную среду разработки?Основываясь на официальных документах, я обобщил набор минималистичных руководств по созданию, которые вы можете использовать в качестве справочного материала.

Четыре простых шага для создания облачной среды разработки:

在这里插入图片描述

  • Тогда нужно скачатьИнструменты разработки мини-программ;

  • Затем используйте учетную запись администратора/разработчика, чтобы войти в инструмент разработки, заполнить APPID апплета, проверить параметр облачной разработки и нажать «Создать»;

在这里插入图片描述

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

在这里插入图片描述
На данный момент создана облачная среда.

Что такое облачные функции?


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

Официальное определение выглядит следующим образом:

Облачная функция — это фрагмент кода, который выполняется в облаке. Вам не нужно управлять сервером. Вы можете запустить внутренний код, написав его в средстве разработки, а затем загрузив и развернув его одним щелчком мыши.

Проще говоря, облачные функции — это функции, которые выполняются в облаке.

Для чего нужны облачные функции?


Облачные функции очень полезны.

С ним это равносильно наличию «большого бэкенда»: всю бизнес-логику и операции с БД можно инкапсулировать и вызывать в облачных функциях, что очень удобно.

первая облачная функция


Сказав так много великих истин, пришло время для настоящей битвы.

Щелкните правой кнопкой мыши среду облачных функций (cloudfunctions | xxxxxxx) и создайте новую облачную функцию с именем test:

在这里插入图片描述

Вы можете видеть, что код облачной функции уже существует в файле по умолчанию (index.js) (получает текущий контекст пользователя WeChat и возвращает информацию о пользователе):

// 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数

exports.main = async (event, context) => {

	const wxContext = cloud.getWXContext()

	return {

		event,
		
		openid: wxContext.OPENID,
		
		appid: wxContext.APPID,
		
		unionid: wxContext.UNIONID,
	
	}

}

В это время вам нужно открыть командную строку и войти в каталог для запуска npm install для установки wx-server-sdk. (Если в каталоге нет node_modules, вам нужно сначала запустить npm init):

在这里插入图片描述

Наконец, щелкните правой кнопкой мыши облачную функцию и выберитеВключить локальную отладку облачных функцийЗатем нажмите в правом нижнем углу, чтобы вызвать:

在这里插入图片描述

Вы можете видеть, что функция была успешно выполнена и получила возвращаемое значение (например, openid...)

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

Как быстро вызвать модель ИИ в апплете


Вспышка света с утра


Я полагаю, что всем очень любопытно, как я могу назвать возможности ИИ в облачных функциях «нулевыми затратами».

На самом деле, я поначалу очень переживал по поводу этой проблемы.Даже если в апплете есть функция облачной функции, нет возможности легко вызвать модель ИИ по «нулевой стоимости».Причины следующие:

  • Облачная функция апплета в настоящее время поддерживает только node.js, а код интерфейса вызова моей модели — python;
  • Независимо от того, насколько «облако», если вы хотите запустить свою собственную модель ИИ, у вас должна быть машина с памятью более 16 ГБ (стоимость огромна);
  • Даже если у вас есть собственный сервер, вам потребуется регистрация доменного имени, что слишком хлопотно;

Но как раз в одно яркое утро, после того, как я перевернулся и встал, вдруг пришла вспышка вдохновения:

  • Можем ли мы назвать собственный интерфейс искусственного интеллекта Tencent открытым для косвенного достижения этой цели?

Больше идей, чем действий, поэтому я посетилМодуль обработки естественного языка Tencent Cloud Console.

После того, как услуга была активирована в соответствии с инструкциями, я вошел вУправление ключами APIи записал ключ API:

在这里插入图片描述

Итак, как это вызвать в апплете? Я снова погрузился в глубокие размышления...

Облачные функции вызывают модели ИИ


После долгих исследований я вернулся к командной строке в каталоге тестовых облачных функций и установил пакет вызова службы Tencent Cloud:

npm install tencentcloud-sdk-nodejs

在这里插入图片描述

Затем измените функцию тестового облака (index.js):

// 云函数入口文件

const cloud = require('wx-server-sdk')

const tencentcloud = require("tencentcloud-sdk-nodejs");

cloud.init()

// 云函数入口函数

exports.main = async (event, context) => {

	const  NlpClient = tencentcloud.nlp.v20190408.Client;
	
	const models = tencentcloud.nlp.v20190408.Models;
	
	const  Credential = tencentcloud.common.Credential;
	
	const  ClientProfile = tencentcloud.common.ClientProfile;
	
	const  HttpProfile = tencentcloud.common.HttpProfile;
	
	let cred = new  Credential(event.secretId, event.secretKey);
	
	let httpProfile = new  HttpProfile();
	
	httpProfile.endpoint = "nlp.tencentcloudapi.com";
	
	let clientProfile = new  ClientProfile();
	
	clientProfile.httpProfile = httpProfile;
	
	let client = new  NlpClient(cred, "ap-guangzhou", clientProfile);
	
	let req = new models.SentimentAnalysisRequest();
	
	let text = event.text
	
	let params = '{"Text":\"' + text + '\"}'
	
	console.log('待预测字符串: ' + text)
	
	req.from_json_string(params);
	
	client.SentimentAnalysis(req, function (errMsg, response) {
	
		if (errMsg) {
		
		console.log(errMsg)
		
		}
		
		console.log('AI 预测情绪正值: ' + response.Positive)
		
		console.log('AI 预测情绪负值: ' + response.Negative)
		
	})

}

В этом коде я подключил интерфейс прогнозирования эмоций ИИ через ключ в учетной записи Tencent Cloud и, наконец, распечатал результат прогнозирования эмоций.

Далее я открыл окно вызова локальной облачной функции и передал соответствующие параметры:

  • secretId (идентификатор ключа сервиса Tencent Cloud API)

  • secretKey (Ключ сервисного ключа Tencent Cloud API)

  • текст (строка для предсказания)

Затем нажмите на вызов и, наконец, увидите результат предсказания модели ИИ:

在这里插入图片描述
Наконец, я успешно использовал облачную функцию, чтобы вызвать открытый интерфейс бесплатного ИИ..

В этот раз у меня были слезы на глазах.Помимо того, что я был тронут, я был еще немного удовлетворен.Оказалось, что облачная разработка может еще так играть.

конец истории


Статья здесь, я считаю, что две самые важные части были поняты и освоены:

  • Создайте облачную среду разработки
  • Быстро вызывать модели ИИ

Оглядываясь назад, весь процесс разработки мини-программы занял примерно три дня и две ночи.«Хакатон»похожий.

Хакатон, также известный как день взлома, день взлома или фестиваль кодирования, — новое слово среди хакеров. Хакатон — это событие.

В этом случае программисты и другие лица, связанные с разработкой программного обеспечения, такие как графические дизайнеры, дизайнеры интерфейсов и менеджеры проектов, собираются вместе для работы над программным проектом в тесном сотрудничестве.

Суть хакатона — совместное написание программ и приложений. Хакатоны обычно длятся от нескольких дней до недели.

--Википедия

Так, после «сумасшедшей» разработки родился прототип дневникового апплета.

在这里插入图片描述
Хотя интерфейсная страница не слишком сложна, для ее разработки требуется много усилий.

Меня не волнует, использует ли кто-нибудь его на самом деле с того момента, как он закончен. Потому что я получил от него радость посвятить себя развитию.

Наконец, старое железо, чем оно тебе не нравится перед отъездом? мва

1. Поставьте мне лайк, чтобы больше людей увидели эту статью и, кстати, вдохновили меня, хи-хи.

2. Ветераны, обратите внимание на мой оригинальный паблик WeChat «Интеллектуальная разработка тестов», в котором основное внимание уделяется сочетанию написания ИИ и разработки тестов (ИИ + тестирование + разработка).

Гарантированно заставит вас что-то получить после прочтения, если вы мне не верите, ударьте меня. Ответьте «Расширенное руководство» в фоновом режиме и бесплатно отправьте вам набор расширенных руководств по тестированию и разработке.

об авторе

Автор: Всем привет, я тестер, начал с тестирования, потом перешел на разработку и наконец изучил ИИ. Понять влияние ИИ на тестирование и разработку. , поэтому я подал заявку на публичную учетную запись WeChat «Интеллектуальная разработка тестов». Тестер с нетерпением ждет вашего внимания и учится со мной. Инструкции по перепечатке: Перепечатка без разрешения запрещена.

Наконец, я желаю всем читателям, которые усердно практикуются, разработать уникальный апплет ИИ~