
Flwyddyn yn ôl, daeth ein hadran AD annwyl atom gyda chais: i ysgrifennu chatbot a fyddai'n helpu gyda chyflwyniad newydd-ddyfodiaid i'r cwmni.
Gadewch i ni egluro nad ydym yn datblygu ein cynhyrchion ein hunain, ond rydym yn cynnig ystod lawn o wasanaethau datblygu i'n cleientiaid. Mae'r stori hon yn ymwneud â'n prosiect mewnol, lle nad cwmni trydydd parti yw'r cleient, ond ein hadran Adnoddau Dynol ein hunain. Y prif nod, o ystyried y bobl, yr adnoddau a'r amser cyfyngedig sydd ar gael, yw cwblhau'r prosiect ar amser a rhyddhau'r cynnyrch.
Yn gyntaf, gadewch i ni ddisgrifio'r tasgau yr oedd angen eu datrys.
Mae datblygwyr yn fewnblyg gan mwyaf ac nid ydyn nhw'n hoffi siarad, felly mae'n llawer haws ysgrifennu eich cwestiwn mewn sgwrs e-bost. Gyda bot, does dim rhaid i chi boeni am bwy i ofyn, pwy i ffonio, ble i fynd, neu hyd yn oed ble i chwilio am wybodaeth, neu a yw'n gyfredol.
Yr ail broblem yw gwybodaeth - mae llawer ohoni, mae'n dod o wahanol ffynonellau, nid yw ar gael bob amser ac mae angen ei hategu a'i diweddaru'n gyson.
Mae gan y cwmni bron i 500 o weithwyr, wedi'u lleoli mewn gwahanol swyddfeydd, parthau amser, dinasoedd ledled Rwsia a hyd yn oed dramor. Fel arfer mae yna lawer o gwestiynau, felly her arall yw lleihau'r llwyth gwaith ar staff AD sy'n gysylltiedig â'r cwestiynau a ofynnir amlaf.
Roedd hefyd angen awtomeiddio'r prosesau canlynol: cyflwyno gweithwyr newydd, anfon negeseuon at reolwyr a mentoriaid gweithwyr newydd, ac anfon atgofion awtomatig am gyrsiau a phrofion y mae'n rhaid i weithwyr newydd eu cwblhau er mwyn addasu'n llwyddiannus.
Yn seiliedig ar ofynion y busnes, ffurfiwyd gofynion technegol.
Dylai'r bot weithio ar Skype (yn hanesyddol, digwyddodd bod y cwmni'n ei ddefnyddio), felly dewiswyd gwasanaeth ar Azure.
Er mwyn cyfyngu mynediad iddo, dechreuon ni ddefnyddio'r mecanwaith awdurdodi Skype.
Defnyddiwyd llyfrgell ParlAI ar gyfer adnabod testun.
Mae angen porth gwe gweinyddol hefyd ar gyfer ffurfweddu, hyfforddi, dadfygio, sefydlu rhestr bostio, a thasgau eraill.

Yn ystod y broses o weithio ar y prosiect, fe wnaethon ni ddod ar draws nifer o broblemau ac anawsterau.
Er enghraifft, cawsom broblemau technegol gyda'n cyfrif Azure. Gwrthododd Microsoft actifadu ein tanysgrifiad oherwydd rhai anawsterau technegol o fewn eu gwasanaeth. Am bron i ddau fis, ni allem wneud dim amdano, ac yn y pen draw rhoddodd cymorth Microsoft y gorau i'n defnyddio'r gwasanaeth a'n cyfeirio at eu partneriaid, a lwyddodd i sefydlu popeth a rhoi cyfrif i ni.
Y cam mwyaf heriol oedd lansio'r prosiect, pan oedd yn rhaid i ni ddewis beth fyddem yn ei ddefnyddio, beth fyddai'r bensaernïaeth, sut a ble i storio'r data, a sut y byddai cydrannau a modiwlau'r system yn rhyngweithio â'i gilydd.
Yn ein hachos ni, cafodd yr heriau nodweddiadol o lansio unrhyw brosiect eu cymhlethu ymhellach gan broblemau staffio. Natur ein busnes yw, yn wahanol i brosiectau masnachol, mae prosiectau mewnol yn aml yn cynnwys datblygwyr sydd heb ddigon o wybodaeth yn y meysydd perthnasol—maent wedi cael eu gadael ar yr ymylon, yn aros am y prosiect masnachol mawr, cyffrous nesaf. Yn naturiol, roedd cymhelliant mewn sefyllfa o'r fath hefyd yn eithaf heriol. Plymiodd cynhyrchiant, roedd y tîm yn aml yn segur, ac yn y pen draw, roedd yn rhaid i ni berswadio (cymell) neu ddisodli'r datblygwr. Wrth ddisodli datblygwr, roedd yn rhaid i ni gynnal hyfforddiant, trosglwyddo gwybodaeth, ac yn y bôn ailgychwyn y prosiect. Roedd pob datblygwr newydd yn gweld y bensaernïaeth yn wahanol ac yn beirniadu'r rhai blaenorol am eu penderfyniadau a'r cod yr oeddent wedi'i ysgrifennu. Dechreuodd ailysgrifennu o'r dechrau.
Aeth hyn ymlaen am tua chwe mis. Roedden ni'n syml yn neilltuo amser, yn ail-lunio'r cod ac yn ysgrifennu dim byd newydd.
Mae prosiectau mewnol fel arfer yn brin o ddogfennaeth hefyd, gan ei gwneud hi'n anodd deall beth oedd angen ei wneud ar unrhyw adeg benodol a beth oedd y blaenoriaethau. Roedd angen creu tîm parhaol, symleiddio prosesau, a chynnal cynllunio a gwerthuso am o leiaf dri mis. Ond sut gellir cyflawni hyn pan nad yw'r prosiect yn fasnachol, sy'n golygu buddsoddiad lleiaf mewn oriau dyn, tra'n dal i gyflawni canlyniadau nad ydynt yn waeth na'r rhai ar gyfer cleient allanol?
Fe wnaethon ni nodi cronfa o adnoddau a oedd wedi cymryd rhan yn natblygiad y prosiect, a oedd yn gyfarwydd ag ef, ac a oedd yn barod i weithio arno. Fe wnaethon ni greu amserlen o lwythi gwaith pobl ar gyfer pob prosiect. Fe wnaethon ni asesu a chydlynu'r gwaith, ac yna ei integreiddio i'r bylchau rhwng y prif brosiectau. Bedwar mis yn ddiweddarach, roedd gennym ni brototeip gweithredol o'r ap.
Nawr, gadewch i ni siarad yn fanylach am ymarferoldeb, pensaernïaeth ac atebion technegol y bot.
Un o brif ofynion AD oedd adnabod testun a ysgrifennwyd gan ddefnyddwyr er mwyn ateb cwestiwn yn gywir. Gallwch ysgrifennu rhywbeth fel "Rwyf am fynd ar wyliau," "Rwyf am fynd ar wyliau," neu "Hoffwn fynd ar wyliau," a bydd yn deall ac yn ymateb yn unol â hynny. Neu, efallai bod cadair gweithiwr wedi torri ac maen nhw eisiau ysgrifennu rhywbeth fel "mae'r gadair wedi torri," neu "Mae fy nghadair wedi cracio," neu "Syrthiodd cefn y gadair i ffwrdd." Gyda hyfforddiant priodol, bydd y bot yn adnabod ymholiadau o'r fath. Mae ansawdd adnabod testun yn dibynnu'n naturiol ar hyfforddiant y bot, a byddwn yn trafod hynny yn nes ymlaen.
Y gofyniad nesaf a rhan o'r swyddogaeth yw system ddeialog y bot. Fe wnaethon ni ddatblygu system sy'n caniatáu i'r bot gynnal deialog a deall cyd-destun y cwestiwn cyfredol. Gall ofyn cwestiynau eglurhaol mewn ymateb i'ch cwestiwn a pharhau â'r sgwrs os ydym wedi hyfforddi'r bot i wneud hynny. Mae Skype yn cefnogi eitemau dewislen syml i annog defnyddwyr am opsiynau posibl ar gyfer parhau â'r sgwrs. Hefyd, os ydym mewn deialog ond yn sydyn yn penderfynu gofyn cwestiwn oddi ar y pwnc, bydd y bot yn deall hyn hefyd.
Mae'r bot yn caniatáu i ddefnyddwyr anfon amrywiol arteffactau yn seiliedig ar eu data personol, fel eu lleoliad. Er enghraifft, os yw rhywun eisiau dod o hyd i doiled, bydd map swyddfa yn cael ei ddangos iddynt yn eu cyfeirio at yr ystafell ymolchi. Bydd y map yn cael ei ddewis yn seiliedig ar leoliad swyddfa presennol y gweithiwr.
Mae diogelu gwybodaeth bersonol defnyddwyr yn flaenoriaeth allweddol. Ni allwn ganiatáu i unrhyw un gael mynediad at y data sensitif y mae ein bot yn ei drin. Mae awdurdodi yn rhan annatod o'r bot hwn. Mae'r bot yn annog y defnyddiwr i awdurdodi cyn ymgysylltu mewn unrhyw sgwrs. Mae hyn yn digwydd y tro cyntaf i weithiwr ryngweithio â'r bot. Mae awdurdodi yn ailgyfeirio'r defnyddiwr i'r dudalen briodol, lle maent yn derbyn tocyn, y maent wedyn yn ei gludo i mewn i neges Skype. Os yw'r awdurdodi yn llwyddiannus, gallant ddechrau cyfathrebu â'r bot.

Mae awdurdodi yn digwydd drwy borth gwasanaeth awdurdodi Skype, y rhwydwaith corfforaethol, ac LDAP. Felly, mae awdurdodi yn dibynnu ar ddata cyfredol y defnyddiwr ar y rhwydwaith corfforaethol.
Yn ystod datblygiad y bot, sylweddolon ni fod angen system arnom wedi'i hintegreiddio i swyddogaethau'r porth a fyddai'n helpu Adnoddau Dynol i ddadfygio'r bot yn gyflym. Ychwanegon ni dudalen porth lle gall Adnoddau Dynol weld gwallau a adroddwyd gan ddefnyddwyr wrth weithio gyda'r bot a'u datrys trwy ailhyfforddi neu eu gadael i'r datblygwyr eu datrys.
Nid oedd y gallu i hyfforddi'r bot yn uniongyrchol ar y porth wedi'i gynnwys o'r cychwyn cyntaf. Yn ystod y datblygiad, sylweddolon ni mai hyfforddi'r bot yw'r dasg fwyaf cyffredin y bydd staff AD yn ei chyflawni wrth weithio gydag ef, ac mae anfon ffeiliau testun at ddatblygwyr ar gyfer hyfforddiant bot ychwanegol yn gwbl annerbyniol. Mae'n cymryd gormod o amser ac yn creu gormod o wallau a phroblemau.

Fe wnaethon ni ddatblygu rhyngwyneb defnyddiwr ar gyfer y porth ar gyfer hyfforddiant bot sy'n hawdd ei ddefnyddio. Mae'n caniatáu i Adnoddau Dynol weld hyfforddiant cyfredol y bot, darparu hyfforddiant ychwanegol, a gwneud addasiadau i hyfforddiant presennol. Cyflwynir hyfforddiant fel strwythur coeden, lle mae nodau (neu ganghennau) yn estyniad o ddeialog y bot. Gallwch greu cwestiynau ac atebion syml neu ddeialogau cymhleth, yn dibynnu ar Adnoddau Dynol a'u hanghenion.
Ychydig eiriau am bensaernïaeth y datrysiad.

Mae pensaernïaeth y datrysiad yn fodiwlaidd. Mae'n cynnwys gwasanaethau sy'n gyfrifol am wahanol dasgau, sef:
• Gwasanaeth bot Skype ar Azure – yn derbyn ac yn prosesu ceisiadau defnyddwyr. Mae hwn yn wasanaeth eithaf syml sy'n derbyn cais yn gyntaf ac yn cyflawni ei brosesu cychwynnol.
• Mae'r Porth Gweinyddol yn wasanaeth sy'n darparu rhyngwyneb gwe ar gyfer ffurfweddu'r porth a'r bot ei hun. Mae'r bot bob amser yn cysylltu â'r porth yn gyntaf, ac yna mae'r porth yn penderfynu beth i'w wneud â'r cais.
• Gwasanaeth awdurdodi — yn darparu mecanweithiau dilysu ar gyfer y bot a'r porth gweinyddol. Mae awdurdodi'n digwydd trwy'r protocol Oauth2. Os yw'r awdurdodi'n llwyddiannus, mae'r gwasanaeth yn dilysu'r defnyddiwr ar y rhwydwaith corfforaethol gan ddefnyddio data defnyddiwr dilys, gan ganiatáu i'r system ganfod gwallau sy'n gysylltiedig â dadgydamseru data.
• Modiwl Adnabod Testun AI, wedi'i ysgrifennu yn Python ac yn defnyddio fframwaith ParlAI ar gyfer adnabod testun. Mae'n rhwydwaith niwral, o leiaf yn ei weithrediad presennol. Rydym yn defnyddio'r algorithm tfDiff ar gyfer deall cwestiynau. Mae'r modiwl yn darparu API ar gyfer cyfathrebu ag ef a hyfforddi.
I gloi, hoffwn ddweud mai dyma ein hymgais gyntaf i greu chatbot, ac fe wnaethon ni geisio gwneud y system mor syml â phosibl, ond eto'n swyddogaethol, gyda'r ymdrech leiaf. Dw i'n meddwl ein bod ni wedi creu cynnyrch diddorol iawn. Mae ganddo ei system hyfforddi ei hun, cofnodi gwallau, a hysbysiadau, a gellir ei integreiddio hefyd ag unrhyw ap negeseuon arall.
Ffynhonnell: hab.com
