เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบฑเบเบชเบฐเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบชเปเบฒเบฅเบฑเบš Alice เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Yandex.Cloud เปเบฅเบฐ Python

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ‚เปˆเบฒเบง. เบกเบทเป‰เบงเบฒเบ™เบ™เบตเป‰ Yandex.Cloud เป„เบ”เป‰เบ›เบฐเบเบฒเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบšเปเบฅเบดเบเบฒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบŸเบฑเบ‡เบŠเบฑเบ™ Yandex Cloud. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ: เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบซเบผเบท chatbot), เปเบฅเบฐ Cloud เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบชเป‰เบฒเบ‡เปเบฅเบฐเบฎเบฑเบเบชเบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบ—เบตเปˆเบกเบฑเบ™เปเบฅเปˆเบ™, เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡ replicates เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เป‚เบซเบผเบ”เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เบ—เปˆเบฒเบ™เบšเปเปˆ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบดเบ”เป€เบฅเบตเบ, เบกเบฑเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบ. เปเบฅเบฐเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เป„เบ›เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบšเบฒเบ‡เบ„เบปเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบˆเปˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ เบ—เบฑเบเบชเบฐเบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡ Alice, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, chatbots เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบกเบฑเบ™. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™, เป‚เบฎเบ”เปเบฅเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบฑเบเบชเบฐเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐเบˆเบฒเบเบกเบทเป‰เบ™เบตเป‰เบ—เบฑเบเบชเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš - เบžเบฝเบ‡เปเบ•เปˆเบญเบฑเบšเป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบชเปˆเบ„เบฅเบฒเบงเปƒเบ™เบฎเบนเบšเปเบšเบš. เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบŠเบตเบŸเป€เบงเบตเบ”เบฝเบงเบเบฑเบ™.

เปเบ•เปˆเบกเบตเบชเบญเบ‡เบชเบฒเบก nuances. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบฅเบฐเบซเบฑเบ”เบชเบฑเบ”เบฅเป‰เบฝเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบšเบฒเบ‡เบขเปˆเบฒเบ‡, เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบˆเบฐเบฅเบฒเบเบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Cloud. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, chatbot เบ›เบปเบเบเบฐเบ•เบดเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡ (เบชเบฐเบ™เบฑเป‰เบ™เบฅเบฑเบ”); เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ serverless เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”? เบญเบฑเบ™เบ—เบตเบชเบฒเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ—เบฑเบเบชเบฐเบ—เบตเปˆเป„เบงเปเบฅเบฐเป€เบ›เบทเป‰เบญเบ™เบชเปเบฒเบฅเบฑเบš Alice เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ bot เบ—เบตเปˆเบกเบตเปเบœเบ™เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบนเบ™? เบเปˆเบฝเบงเบเบฑเบš nuances เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบšเบปเบ”เบ„เบงเบฒเบก.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบฑเบเบชเบฐเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบชเปเบฒเบฅเบฑเบš Alice เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Yandex.Cloud เปเบฅเบฐ Python

เบเบฒเบ™โ€‹เบเบฐโ€‹เบเบฝเบกโ€‹เบชเบดเบ™โ€‹เบ—เปเบฒโ€‹

เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบญเบปเบ”เบ—เบปเบ™: เบ‚เป‰เบญเบเป€เบเบฑเบšเบเปเบฒเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ”เป‰เบงเบ makefile เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบ—เบดเบ‡เป€เบกเบ„, เบ‚เป‰เบญเบเป€เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเปƒเบ™ Yandex Object Storage (เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ API S3), เปเบฅเบฐเบ‚เป‰เบญเบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบญเบ‡เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบš. tgalice. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™ turns เบญเบญเบ เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบง เบ—เบฑเบเบชเบฐเบเบฒเบ™เบชเบฒเบ—เบดเบ”. เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบ‚เปเปƒเบซเป‰เบงเบดเป€เบ„เบฒเบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบ.

เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบญเบปเบ”เบ—เบปเบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ‚เป‰เบญเบเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‡เปˆเบฒเบเป†. เบ„เบท, เบชเป‰เบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ echobot เป„เบŸเบฅเปŒเบ”เบฝเบง, เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ console developer Dialog; เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ” - เปƒเบ™ Blog Dialogues ะธ เป€เบญเบเบฐเบชเบฒเบ™เบ„เบฅเบฒเบง. เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบขเบฒเบเบฎเบนเป‰เบ—เบฑเบ™เบ—เบตเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เบ•เปเปˆเบชเบนเป‰เป€เบžเบทเปˆเบญเบซเบเบฑเบ‡, เปƒเบซเป‰เบ–เบฒเบก Alice 'เป€เบ›เบตเบ”เบ—เบฑเบเบชเบฐ "เป„เบญเบ—เบต horoscope"'. เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ„เบงเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™:

Alice: เบชเบฐเบšเบฒเบเบ”เบต! เป€เบˆเบปเป‰เบฒเบขเบนเปˆเปƒเบ™เบ—เบฑเบเบชเบฐ "เป„เบญเบ—เบต horoscope". เป€เบงเบปเป‰เบฒเบงเปˆเบฒ "เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™" เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบฒเบงเบชเบฑเบ™เบเบฒเบเบฑเบšเบ—เปˆเบฒเบ™.
เบœเบนเป‰เปƒเบŠเป‰: เป€เบฅเบตเปˆเบก
A: เบเบฐเบฅเบธเบ™เบฒเบฅเบฐเบšเบธเบŠเบทเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ.
Yu: Vasisualy
A: เบ•เบญเบ™เบ™เบตเป‰เบšเบญเบเบ‚เป‰เบญเบเบ›เบตเป€เบเบตเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เบžเบฝเบ‡เปเบ•เปˆเบชเบตเปˆเบ•เบปเบงเป€เบฅเบ, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบซเบผเบฒเบ.
Yu: เบ—เบตเบชเบญเบ‡
A: เบเบฐเบฅเบธเบ™เบฒเบฅเบญเบ‡เบญเบตเบเบ„เบฑเป‰เบ‡. เบšเบญเบเบ›เบตเป€เบเบตเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ - เบชเบตเปˆเบ•เบปเบงเป€เบฅเบ.
Yu: 2002
A: เบเบดเปˆเบ‡เปƒเบซเบเปˆ! เบ•เบญเบ™เบ™เบตเป‰เบ•เบฑเป‰เบ‡เบŠเบทเปˆเป€เบ”เบทเบญเบ™เป€เบเบตเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ.
Yu: เป€เบ”เบทเบญเบ™เบเบธเบกเบžเบฒ
A: เบเบดเปˆเบ‡เปƒเบซเบเปˆ! เบชเบธเบ”เบ—เป‰เบฒเบ, เบšเบญเบเบ‚เป‰เบญเบเบงเบฑเบ™เป€เบ”เบทเบญเบ™เบ›เบตเป€เบเบตเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ - เบžเบฝเบ‡เปเบ•เปˆเบ•เบปเบงเป€เบฅเบ, เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบญเบ‡เบ•เบปเบงเป€เบฅเบ.
Yu: 18
A: เบ‚เบญเบšเปƒเบˆ, Vasisual! เบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒ: เป€เบˆเบปเป‰เบฒเบกเบตเบญเบฒเบเบธ 17 เบ›เบตเปเบฅเบฐเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™ Aquarius. เบ™เบตเป‰, เปเบ™เปˆเบ™เบญเบ™, เป€เบˆเบปเป‰เบฒเป‚เบŠเบเบ”เบต! เบ”เบฒเบงเบšเบญเบเป€เบˆเบปเป‰เบฒ ะฐ ั‡ั‚ะพ ะณะพะฒะพั€ัั‚ ะทะฒั‘ะทะดั‹, ะฒั‹ ัƒะทะฝะฐะตั‚ะต, ะทะฐะฟัƒัั‚ะธะฒ ะฝะฐะฒั‹ะบ.

เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบŠเบทเปˆเปเบฅเบฐเบงเบฑเบ™เป€เบ”เบทเบญเบ™เบ›เบตเป€เบเบตเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เปเบฅเบฐเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบŠเบตเบŸเป€เบงเบต, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบšเปเบฅเบดเบšเบปเบ”เปƒเบ™ RAM เบซเบผเบทเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเปƒเบ™เปเบœเปˆเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ Yandex.Cloud เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบซเบผเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบชเบฐเบซเบผเบฑเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เป‚เบ”เบ arbitrarily. เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”. Object Storage เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบฅเบฒเบ„เบฒเบ–เบทเบ เปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเป‚เบ”เบเบเบปเบ‡เปƒเบ™ Yandex.Cloud (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบญเบฒเบ”เบˆเบฐเป„เบง). เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบŸเบฃเบต, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบฐเบเบฒเบเบฒเบก, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบดเป‰เบ™เบŸเบฃเบต เบกเบตเป€เบกเบเปเบญเบ เบšเปˆเบญเบ™โ€‹เปƒเบ”โ€‹เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบซเปˆเบฒเบ‡โ€‹เป„เบโ€‹. เบ—เบฑเบ‡ Object Storage (เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš S3) เปเบฅเบฐ Mongo เบกเบต wrappers Python เบ—เบตเปˆเบชเบฐเบ”เบงเบ.

เบšเบฑเบ™เบซเบฒเบญเบตเบเบ›เบฐเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบžเบทเปˆเบญเป„เบ›เบ—เบตเปˆ Object Storage, MongoDB, เปเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบทเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบžเบฒเบเบ™เบญเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเบฑเบšเป‚เบซเบฅเบ”เป„เบ›เบเบฑเบ‡ Yandex Functions เบžเป‰เบญเบกเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เปเบฅเบฐเบ‚เป‰เบญเบเบขเบฒเบเป€เบฎเบฑเบ”เบกเบฑเบ™เบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบ. เบกเบฑเบ™เบชเบฐเบ”เบงเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (เบ„เบทเบเบฑเบš heroku), เบญเบฐเบ™เบดเบˆเบฒ, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™เบชเบฐเบ„เบดเบšเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก (เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ).

เบงเบดเบ—เบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบฑเบเบชเบฐ horoscope

  1. เบเบฝเบกเบžเป‰เบญเบก: เป„เบ›เบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเบกเบต Linux. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Windows เบ„เบทเบเบฑเบ™, เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡ conjure เบเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง makefile. เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบกเบต Python เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ 3.6.
  2. Clone เบˆเบฒเบ github เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ—เบฑเบเบชเบฐ horoscope.
  3. เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™ Ya.Cloud: https://cloud.yandex.ru
  4. เบชเป‰เบฒเบ‡เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เบชเบญเบ‡เบ„เบธเปƒเบ™ เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบงเบฑเบ”เบ–เบธ, เป‚เบ—เบซเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ”เป‰เบงเบเบŠเบทเปˆเปƒเบ”เบเปเปˆเบ•เบฒเบก {BUCKET NAME} ะธ tgalice-test-cold-storage (เบŠเบทเปˆเบเบฒเบ‡เบ™เบตเป‰เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™ hardcoded เป€เบ›เบฑเบ™ main.py เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบ). เบ–เบฑเบ‡เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡ - เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบš.
  5. เบชเป‰เบฒเบ‡ เบšเบฑเบ™เบŠเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เปƒเบซเป‰เป€เบ‚เบปเบฒเบกเบตเบšเบปเบ”เบšเบฒเบ” editor, เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™ {KEY ID} ะธ {KEY VALUE} - เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒ. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบˆเบฒเบ Ya.Cloud เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบˆเบฒเบ Ya.Cloud. เบกเบทเป‰เบซเบ™เบถเปˆเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒ, เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ - เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™.
  6. (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ) เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ yc. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ•เปŒ, เปเบ•เปˆ CLI เปเบกเปˆเบ™เบ”เบตเป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ”เบดเบ”เบชเป‰เบฒเบ‡เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบกเบฑเบ™เป„เบงเบ‚เบถเป‰เบ™.
  7. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบเบฐเบเบฝเบกเบเบฒเบ™เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ dependencies: เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฒเบเป‚เบŸเบ™เป€เบ”เบตเบ—เบตเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบฑเบเบชเบฐ. make all. เบŠเปเปˆเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” (เบชเปˆเบงเบ™เบซเบผเบฒเบ, เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด, เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™) เบˆเบฐเบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต dist.
  8. เบ•เบทเปˆเบกเปƒเบชเปˆเบ›เบฒเบเบเบฒเปƒเบชเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบงเบฑเบ”เบ–เบธ (เปƒเบชเปˆเบ–เบฑเบ‡ {BUCKET NAME}) เบฎเบงเบšเบฎเบงเบกเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ dist.zip. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เป„เบ”เป‰เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ AWS CLI.
  9. เบชเป‰เบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเบœเปˆเบฒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เป€เบงเบฑเบš เบซเบผเบทเปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ” yc. เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”, เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

yc serverless function version create
    --function-name=horoscope
    --environment=AWS_ACCESS_KEY_ID={KEY ID},AWS_SECRET_ACCESS_KEY={KEY VALUE}
    --runtime=python37
    --package-bucket-name={BUCKET NAME}
    --package-object-name=dist.zip
    --entrypoint=main.alice_handler
    --memory=128M
    --execution-timeout=3s

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบ•เบทเปˆเบกเปƒเบชเปˆเปƒเบ™เปเบšเบšเบ”เบฝเบงเบเบฑเบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ—เบปเบ”เบชเบญเบšเบœเปˆเบฒเบ™ developer console, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบธเบ”เบ—เป‰เบฒเบเปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเบ—เบฑเบเบชเบฐ.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบฑเบเบชเบฐเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบชเปเบฒเบฅเบฑเบš Alice เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Yandex.Cloud เปเบฅเบฐ Python

เบชเบดเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰ hood เป„เบ”เป‰

เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง makefile เบกเบตเบชเบฐเบ„เบดเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบžเปเบชเบปเบกเบ„เบงเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ dependencies เปเบฅเบฐเป€เบญเบปเบฒเปƒเบชเปˆเปƒเบ™เบฎเบงเบšเบฎเบงเบก. dist.zip, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

mkdir -p dist/
pip3 install -r requirements.txt --target dist/ 
cp main.py dist/main.py
cp form.yaml dist/form.yaml
cd dist && zip --exclude '*.pyc' -r ../dist.zip ./*

เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ‡เปˆเบฒเบเป†เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบซเปเปˆเบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” tgalice. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบœเบนเป‰เปƒเบŠเป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบ config form.yaml:

form_name: 'horoscope_form'
start:
  regexp: 'ัั‚ะฐั€ั‚|ะฝะฐั‡(ะฐั‚ัŒ|ะฝะธ)'
  suggests:
    - ะกั‚ะฐั€ั‚
fields:
  - name: 'name'
    question: ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฝะฐะทะพะฒะธั‚ะต ัะฒะพั‘ ะธะผั.
  - name: 'year'
    question: ะขะตะฟะตั€ัŒ ัะบะฐะถะธั‚ะต ะผะฝะต ะณะพะด ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั. ะขะพะปัŒะบะพ ั‡ะตั‚ั‹ั€ะต ั†ะธั„ั€ั‹, ะฝะธั‡ะตะณะพ ะปะธัˆะฝะตะณะพ.
    validate_regexp: '^[0-9]{4}$'
    validate_message: ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฟะพะฟั€ะพะฑัƒะนั‚ะต ะตั‰ั‘ ั€ะฐะท. ะะฐะทะพะฒะธั‚ะต ะณะพะด ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั - ั‡ะตั‚ั‹ั€ะต ั†ะธั„ั€ั‹.
  - name: 'month'
    question: ะ—ะฐะผะตั‡ะฐั‚ะตะปัŒะฝะพ! ะขะตะฟะตั€ัŒ ะฝะฐะทะพะฒะธั‚ะต ะผะตััั† ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั.
    options:
      - ัะฝะฒะฐั€ัŒ
     ...
      - ะดะตะบะฐะฑั€ัŒ
    validate_message: ะขะพ, ั‡ั‚ะพ ะฒั‹ ะฝะฐะทะฒะฐะปะธ, ะฝะต ะฟะพั…ะพะถะต ะฝะฐ ะผะตััั†. ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฝะฐะทะพะฒะธั‚ะต ะผะตััั† ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั, ะฑะตะท ะดั€ัƒะณะธั… ัะปะพะฒ.
  - name: 'day'
    question: ะžั‚ะปะธั‡ะฝะพ! ะะฐะบะพะฝะตั†, ะฝะฐะทะพะฒะธั‚ะต ะผะฝะต ะดะฐั‚ัƒ ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั - ั‚ะพะปัŒะบะพ ั‡ะธัะปะพ, ะฒัะตะณะพ ะพะดะฝะฐ ะธะปะธ ะดะฒะต ั†ะธั„ั€ั‹.
    validate_regexp: '[0123]?d$'
    validate_message: ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฟะพะฟั€ะพะฑัƒะนั‚ะต ะตั‰ั‘ ั€ะฐะท. ะ’ะฐะผ ะฝัƒะถะฝะพ ะฝะฐะทะฒะฐั‚ัŒ ั‡ะธัะปะพ ัะฒะพะตะณะพ ั€ะพะถะดะตะฝะธั (ะฝะฐะฟั€ะธะผะตั€, ะดะฒะฐะดั†ะฐั‚ะพะต); ัั‚ะพ ะพะดะฝะฐ ะธะปะธ ะดะฒะต ั†ะธั„ั€ั‹.

เบซเป‰เบญเบ‡เบฎเบฝเบ™ python เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ parsing config เบ™เบตเป‰เปเบฅเบฐเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบธเบ”เบ—เป‰เบฒเบ

class CheckableFormFiller(tgalice.dialog_manager.form_filling.FormFillingDialogManager):
    SIGNS = {
        'ัะฝะฒะฐั€ัŒ': 'ะšะพะทะตั€ะพะณ',
        ...
    }

    def handle_completed_form(self, form, user_object, ctx):
        response = tgalice.dialog_manager.base.Response(
            text='ะกะฟะฐัะธะฑะพ, {}! ะขะตะฟะตั€ัŒ ะผั‹ ะทะฝะฐะตะผ: ะฒะฐะผ {} ะปะตั‚, ะธ ะฒั‹ {}. n'
                 'ะ’ะพั‚ ัั‚ะพ ะฒะฐะผ, ะบะพะฝะตั‡ะฝะพ, ะฟะพะฒะตะทะปะพ! ะ—ะฒั‘ะทะดั‹ ะณะพะฒะพั€ัั‚ ะฒะฐะผ: {}'.format(
                form['fields']['name'],
                2019 - int(form['fields']['year']),
                self.SIGNS[form['fields']['month']],
                random.choice(FORECASTS),
            ),
            user_object=user_object,
        )
        return response

เบซเบผเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ FormFillingDialogManager เปเบกเปˆเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบ•เบทเปˆเบก "เปเบšเบšเบŸเบญเบก", เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เป€เบ”เบฑเบเบ™เป‰เบญเบ handle_completed_form เบšเบญเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เป€เบกเบทเปˆเบญเบ™เบฒเบ‡เบเบฝเบกเบžเป‰เบญเบก.

เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ•เบปเป‰เบ™เบ•เปเบ™เบตเป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบกเบฑเบ™เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบŠเบปเบกเป€เบŠเบตเบเบœเบนเป‰เปƒเบŠเป‰, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบšเบฑเบ™เบซเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "เบŠเปˆเบงเบเป€เบซเบผเบทเบญ" เปเบฅเบฐเบ›เปˆเบญเบเบญเบญเบเบˆเบฒเบเบ—เบฑเบเบชเบฐเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "เบญเบญเบ". เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เปƒเบ™ tgalice เบเบฑเบ‡เบกเบตเปเบกเปˆเปเบšเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ•เปˆเบญเบ™:

dm = tgalice.dialog_manager.CascadeDialogManager(
    tgalice.dialog_manager.GreetAndHelpDialogManager(
        greeting_message=DEFAULT_MESSAGE,
        help_message=DEFAULT_MESSAGE,
        exit_message='ะ”ะพ ัะฒะธะดะฐะฝะธั, ะฟั€ะธั…ะพะดะธั‚ะต ะฒ ะฝะฐะฒั‹ะบ "ะะนั‚ะธัˆะฝั‹ะน ะณะพั€ะพัะบะพะฟ" ะตั‰ั‘!'
    ),
    CheckableFormFiller(`form.yaml`, default_message=DEFAULT_MESSAGE)
)

CascadeDialogManager เป€เบฎเบฑเบ”เบงเบฝเบเบ‡เปˆเบฒเบเป†: เบกเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ—เบธเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบกเบฑเบ™เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เปเบฅเบฐเป€เบฅเบทเบญเบเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡.

เป€เบ›เบฑเบ™เบเบฒเบ™เบ•เบญเบšเบเบฑเบšเปเบ•เปˆเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบก, เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบˆเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบงเบฑเบ”เบ–เบธ python Response, เป€เบŠเบดเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เปเบฒเบกเบฐเบ”เบฒ, เบซเบผเบทเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™ Alice เบซเบผเบท Telegram - เบ‚เบถเป‰เบ™เบเบฑเบšเบšเปˆเบญเบ™เบ—เบตเปˆ bot เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™; เบกเบฑเบ™เบเบฑเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ. เป€เบฎเบทเบญเบ™เบ„เบปเบงเบ—เบฑเบ‡ เปเบปเบ” เบ™เบตเป‰เปเบกเปˆเบ™เบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบเบŠเบฑเป‰เบ™เบญเบทเปˆเบ™, DialogConnector, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบฐเบ„เบดเบšเป‚เบ”เบเบเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบฑเบเบชเบฐเปƒเบ™ Yandex Functions เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

...
session = boto3.session.Session()
s3 = session.client(
    service_name='s3',
    endpoint_url='https://storage.yandexcloud.net',
    aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
    region_name='ru-central1',
)
storage = tgalice.session_storage.S3BasedStorage(s3_client=s3, bucket_name='tgalice-test-cold-storage')
connector = tgalice.dialog_connector.DialogConnector(dialog_manager=dm, storage=storage)
alice_handler = connector.serverless_alice_handler

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡ Object Storage S3. เบงเบดเบ—เบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบเบปเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰ เปƒเบ™เบฅเบฐเบซเบฑเบ” tgalice.
เป€เบชเบฑเป‰เบ™เบชเบธเบ”เบ—เป‰เบฒเบเบชเป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ alice_handler - เบญเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฑเปˆเบ‡เปƒเบซเป‰เบ”เบถเบ‡ Yandex.Cloud เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต --entrypoint=main.alice_handler.

เบงเปˆเบฒ, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. Makefiles เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, S3 เบ„เป‰เบฒเบเบ„เบท Object Storage เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบšเปเบฅเบดเบšเบปเบ”, เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” python tgalice. เบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเป€เบŠเบตเบŸเป€เบงเบตเปเบฅเบฐเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ‚เบญเบ‡ python, เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบฑเบเบชเบฐเบ‚เบญเบ‡เบ„เบปเบ™เบ—เบตเปˆเบกเบตเบชเบธเบ‚เบฐเบžเบฒเบšเบ”เบต.

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ–เบฒเบกเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡ tgalice? เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบšเบทเปˆเบญเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป‚เบญเบ™ JSON เบˆเบฒเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบฅเบฐเบˆเบฒเบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบ›เบซเบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบกเบฑเบ™. เบเบฑเบ‡เบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบปเบเบเบฐเบ•เบด, เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒ "เป€เบ”เบทเบญเบ™เบเบธเบกเบžเบฒ" เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš "เป€เบ”เบทเบญเบ™เบเบธเบกเบžเบฒ", เปเบฅเบฐ NLU เบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบธเบเบเบฒเบ. เบญเบตเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบžเบฝเบ‡เบžเปเปเบฅเป‰เบงเบ—เบตเปˆเบˆเบฐเบชเบฒเบกเบฒเบ”เปเบ•เป‰เบกเบ•เบปเบงเปเบšเบšเบ—เบฑเบเบชเบฐเปƒเบ™เป„เบŸเบฅเปŒ yaml เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบฅเบปเบšเบเบงเบ™เบเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ NLU เบ—เบตเปˆเบฎเบธเบ™เปเบฎเบ‡เบเบงเปˆเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” screw เบกเบฑเบ™เบเบฑเบšเบ—เบฑเบเบชเบฐเบ‚เบญเบ‡เบ—เปˆเบฒเบ™ เบฃเบฒเบŠเบฒ เบซเบผเบท DeepPavlov, เปเบ•เปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบžเบงเบเบกเบฑเบ™เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ•เบฑเป‰เบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบกเบต tambourine, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™ serverless. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบฎเบนเป‰โ€‹เบชเบถเบโ€‹เบขเบฒเบโ€‹เบ‚เบฝเบ™โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹, เบ—เปˆเบฒเบ™โ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เปƒเบŠเป‰โ€‹เบ•เบปเบงโ€‹เบชเป‰เบฒเบ‡โ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบžเบฒเบšโ€‹ Aimylogic. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡ tgalice, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ‡เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”. เปƒเบซเป‰เป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™.

เปเบฅเป‰เบง, เบ•เบญเบ™เบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก เบชเบปเบ™เบ—เบฐเบ™เบฒเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบฑเบเบชเบฐ Aliy, เบญเปˆเบฒเบ™ เป€เบญเบเบฐเบชเบฒเบ™เปเบฅเบฐเบชเป‰เบฒเบ‡เปƒเบซเป‰เบ›เบฐเบฅเบฒเบ”เปƒเบˆ เบ—เบฑเบเบชเบฐ!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™