ඉතාමත් ඉක්මනින් ප්රතිචාර දෙන Voice AI උපාංගයක්, හදිසියේම තද වෙලාවකට පත් වුනාම ඔබට බරපතළ අමුතුකමක් හැඟෙයි. ග්රොක් (Groq) පදනම්වූ මගේ කථා-අධාරිත සහකාරයා තත්පර 3ක් පමණ නඩු කාලයක් ගත කළා. සාමාන්ය APM මෙවලම් ඒක තවත් හඳුනාගන්න බැරි වුණා.
මෙම ගැටලුවේ මූලික හේතුව, HTTP ඇමතුමක් විවෘතව තිබීම පමණක් පෙන්වීමයි; එහිදී Speech‑to‑Text (STT) පරිවර්තනය, LLM‑ගේ Time to First Token (TTFT) හෝ Text‑to‑Speech (TTS) සංශ්ලේෂණය කවුරුන්ටත් පෙනෙන්නේ නැහැ. ඒ නිසා කතා‑අධාරිත පද්ධතියේ සම්පූර්ණ ජීවිත චක්රය පරික්ෂා කිරීමට නව tracing විසඳුමක් අවශ්ය වුණා.
ඉන් පසු, මම Zooid නමැති කස්ටම් OpenTelemetry උපකරණයක් නිර්මාණය කරා. මෙය streaming Voice AI‑වල trace ගත කිරීම, FinOps token වියදම් නිරීක්ෂණය, සහ SigNoz තුළ සියලු දත්ත ස්වයංක්රීයව පෙන්වීමේ කාර්යභාරය ඉටු කරයි.
චැලෙන්ජ්: වෙබ් tracing vs. Voice tracing
සාමාන්ය CRUD වෙබ් යෙදුම් සඳහා tracing සරලයි – ඉල්ලීමක්, දත්ත ගබඩා, JSON ප්රතිචාර. Flask‑ට OpenTelemetry‑instrumentation‑flask එකක් එක් කිරීම පමණක් ප්රමාණවත්. නමුත් Voice AI එකක් “Voice Turn” එකක් ලෙස ගණන් කළාම, එය අඩංගු කරන්නේ:
- ශබ්ද සංඛ්යාතය (STT) ලබා ගැනීම
- LLM‑කින් streaming token ලබා ගැනීම
- එම token‑වලින් TTS හරහා ශබ්දයට පරිවර්තනය
- පරිශීලකයාගේ හදිසි අතුරුදහන් කිරීම (barge‑in) කළමනාකරණය
LLM එක async generator එකක් ආපසු දෙයි; සාමාන්ය auto‑instrumentation එකෙන් span එක generator එක නිර්මාණය වන මොහොතේම අවසන් වේ. එය streaming අවසන් වන තුරු පවත්වා ගැනීමට මට මැනවින් tracing ක්රමයක් අවශ්ය වුණා.
පියවර 1 – async stream එක instrument කිරීම
Python‑හි @instrument_voice_app නම් කස්ටම් decorator එකක් ලියලා, OpenTelemetry tracer එක හස්තයෙන් පාලනය කළා. මෙය VoiceTurnContext වස්තුවක් ඇතුළත් කරයි; එය AI ලොජික් එකට “පළමු ශබ්ද බයිට් කවදා එයි” වැනි මයිලස්ටෝන් සලකුණු කර දැනුම් දෙයි. Span එක තුළ voice.ttfa_ms, stt.confidence, voice.turn_cost_usd වැනි අතිරේක ගුණාංග සටහන් කර, අවසානයේ SigNoz වෙත යවයි.
පියවර 2 – ClickHouse “Gotcha” සහ විසඳුම
OpenTelemetry Collector (localhost:4317) වෙත දත්ත යැවීම සරලව සිදු වුණා; SigNoz “Traces” ටැබ් එකේ trace පෙනුණා. නමුත් “Dashboards” ටැබ් එකේ voice.turn_cost_usd සහ voice.ttfa_ms සඳහා Time‑Series පැනලයක් සකස් කළාම “No Data” පණිවිඩය දිස් වුණා.
මෙම ගැටළුව ClickHouse හි materialized view එකේ attribute mapping අඩු වීමෙන් සිදු වුණා. Python‑හි span.set_attribute() නිරූපණය කරන සංඛ්යාත ගුණාංගය signoz_index_v3 schema එකේ numbers_tagMap ලෙස ගබඩා වේ, නමුත් dashboard query builder එකට ඒවා materialized view එකේ attributes_number as numberTagMap සහ attributes_bool as boolTagMap යන පේළි අවශ්ය වේ. ඒවා එක් කළ පසු, කස්ටම් මැට්රික්ස්වලට සත්ය දත්ත පෙන්වීමට හැකි වුණා.
අවසානයේ, Zooid සහ SigNoz සමඟ නිර්මාණය කළ tracing පද්ධතිය Voice AI සංවාදයක් පුරා සම්පූර්ණ trace එකක් ලබා දී, bottleneck එක STT, LLM, හෝ TTS යන කුමන කොටසද යන්න සවිස්තරයෙන් හඳුනාගත හැකි වුණා. එමගින් FinOps වියදම් පාලනයත්, පද්ධතියේ ප්රතිචාර වේගය වැඩිදියුණු කිරීමත් සිදු විය.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ AI‑ආශ්රිත ආරම්භකයන්, විශ්වවිද්යාල සිසුන්, සහ තාක්ෂණික සමාගම් සඳහා මෙම tracing තාක්ෂණය බොහෝ ප්රයෝජන දරයි:
- ඉගෙනුම් අවස්ථා: පරිගණක විද්යා සිසුන්ට streaming AI පද්ධති වල ප්රතිචාර කාලය මැනීමේ නව ක්රමයන් අධ්යයනයේ අත්දැකීම් ලැබේ.
- සංවර්ධකයින්: OpenTelemetry සහ SigNoz භාවිතයෙන් කේතයේ bottleneck හඳුනාගැනීම ඉතා පහසු වේ, එමඟින් නිෂ්පාදන ගුණාත්මකභාවය ඉහල යයි.
- ව්යාපාරිකයන්: FinOps token වියදම් නිරීක්ෂණය කර, සම්පත් වෙන් කිරීමේ තීරණ ගැනීමට දත්ත‑මූලික අතුරුදන්වීම් ලබා ගත හැක.
මෙම නව tracing විසඳුම, ශ්රී ලංකාවේ AI පදනම් පද්ධති නිර්මාණය, පරීක්ෂණ, සහ ව්යාපාරික යෙදුම් තුළ තත්ත්වය වැඩිදියුණු කරනු ඇත.
ඔබේ Voice AI පද්ධතියේ ප්රතිචාර වේගය අඩු වෙලා තිබේද? Zooid සහ SigNoz සමඟ ඔබේ tracing පද්ධතිය නැවත සැලැස්වීමට අදම පියවර ගන්න.