ããã«ã¡ã¯ï¼ kintone éçºã® é½è¤ ( K.Saito (@SightSeekerTw) / X ) ã§ãã æè¿ã§ã¯ã以åãç«å±±ããå ¬éããè¨äº kintone AI ã©ããªãªã¼ã¹ï¼å¤§è¦æ¨¡ SaaS ã¸ã® AI æ©è½å°å ¥ã§æèããè¨è¨ã¨éç¨ã®å·¥å¤« ã§ãç´¹ä»ãã¾ãããkintone ã® çæ AI æ©è½ããkintone AI ã©ãã ã®ããã¯ã¨ã³ãã®éçºãæ å½ãã¦ãã¾ãã
æ¬è¨äºã§ã¯ãçæ AI ç¹æã®ä¸ç¢ºå®æ§ã«ãã£ã¦çºçããåé¡ãããã³ãæ¯ã®ãã¼ã¯ã³æ¶è²»éãªã©ã OpenTelemetry 㨠AWS CloudWatch Application Signals ãæ´»ç¨ãã¦å¯è¦³æ¸¬æ§ãå¼·åããäºä¾ãç´¹ä»ãã¾ãã
kintone ã«ãããçæ AI æ©è½ã®æ¦è¦
AI æ©è½ã®ã¢ã¼ããã¯ãã£
kintone ãã Bedrock ã® LLM ã®å¼ã³åºãããã®çæçµæãåå¾ããä»çµã¿ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ããã¾ãã

- LLM ã®å¼ã³åºã
- ã¯ã©ã¤ã¢ã³ããã kintone ã«å¯¾ã㦠LLM ã®å¼ã³åºããå¿ è¦ã¨ãããªã¯ã¨ã¹ããè¡ãã¨Lambda 颿° AIServiceFunction ã« LLM ã®å¼ã³åºãããªã¯ã¨ã¹ããã¾ãã
- AIServiceFunction ã¯å¥ã® Lambda 颿° AIServiceAsyncEventFunction ã« LLM å¼ã³åºããè¡ãéåæå¦çãªã¯ã¨ã¹ãããã¾ãã
- AIServiceAsyncEventFunction ã Bedrock (LLM) ã«å¯¾ã㦠Invoke ãè¡ãçæçµæãåãåãã¾ãã
- AIServiceAsyncEventFunction 㯠LLM ã®çæããããã¹ãã ElastiCache (Valkey) ã«é 次æ¸ãè¾¼ã¿ã¾ãã
- LLM çæçµæã®åå¾
- çæçµæã®åå¾ã¯çæãªã¯ã¨ã¹ãæã«ã¬ã¹ãã³ã¹ããã ID ã使ããªã¯ã¨ã¹ãããã¾ãã
- çæçµæã¯ Valkey ã«é 次æ¸ãè¾¼ã¾ããããããã¼ãªã³ã°ããã¦ææ°ã®çæçµæãåå¾ãã¯ã©ã¤ã¢ã³ã(ãã©ã¦ã¶)ã«è¡¨ç¤ºããã¾ãã
â è£è¶³
ããã§æ¹ã㦠LLM ã®å¼ã³åºãããçæçµæã®åå¾ã®èª¬æãç°¡åã«ãã¦ãã¾ããããã¼ãªã³ã°æ¹å¼ãæ¡ç¨ããçç±ã詳細ã«ã¤ãã¦ã¯ kintone AI ã©ããªãªã¼ã¹ï¼å¤§è¦æ¨¡ SaaS ã¸ã® AI æ©è½å°å ¥ã§æèããè¨è¨ã¨éç¨ã®å·¥å¤« ãåç §ããã ããã°ã¨æãã¾ãã
å¤§è¦æ¨¡ SaaS ã«ãããçæ AI éç¨ã®èª²é¡
Amazon Bedrock ãæ´»ç¨ãã çæ AI æ©è½ãæ¬æ ¼éç¨ããä¸ã§ã徿¥ã® Web ã¢ããªã±ã¼ã·ã§ã³ã¨ã¯ç°ãªãç¹æã®èª²é¡ãæµ®ã彫ãã«ãªãã¾ããã
çæ AI ç¹æã®ä¸ç¢ºå®æ§
徿¥ã® Web ã¢ããªã±ã¼ã·ã§ã³ã§ã¯ãåãå ¥åã«å¯¾ãã¦å¸¸ã«åãåºåãæå¾ ã§ãã¾ããããããçæ AI ã§ã¯åãããã³ããã§ãæ¯åç°ãªãçµæãçæãããå¯è½æ§ãããããæ¨æ¥ã¯æ£å¸¸ã«åä½ããã®ã«ä»æ¥ã¯ã¨ã©ã¼ã«ãªããã¨ãã£ãåãåãããçºçããå¯è½æ§ãããã¾ãã
ã¨ã©ã¼ã®æ ¹æ¬åå ç¹å®ã®å°é£ã
çæ AI ã®å¦çããã¼ã¯è¤éã§ãããã³ããçæã æ å ±æ¤ç´¢å¦çã LLM å¼ã³åºããå¾å¦çãªã©è¤æ°ã®ã¹ããããçµã¾ããã©ã®æ®µéã§åé¡ãçºçããã®ãã徿¥ã®ãã°ã ãã§ã¯ç¹å®ãå°é£ã§ãããæ¢åã® kintone ç°å¢ã§ä½¿ç¨ãã¦ããç£è¦ææ³ã§ã¯ããã®è¤éãªå¦çãã§ã¼ã³ã®å¯è¦åãååã§ã¯ããã¾ããã§ããã
ç¹ã« LLM å¼ã³åºãã«ããã¦ã¯ã Bedrock Guardrails ã«ããå ¥åã¾ãã¯çæçµæã®ä¿è·æ©è½ãåããããã¹ããããªã³ã°ãçºçãã¦ã¨ã©ã¼ã«ãªã£ãããããã¨ãããã¾ãã
ããã³ãæ¯ã®ãã¼ã¯ã³æ¶è²»éã®å¯è¦å
Bedrock ã«éãããä¸è¬çã« LLM ã®å©ç¨ã«ããã¦ã¯ããã¼ã¯ã³ã®ä½¿ç¨éãå¼ã³åºãåæ°ã«å¶éããããããããã³ãæ¯ã®å©ç¨ç¶æ³ãæ£ç¢ºã«ææ¡ããå¿ è¦ãããã¾ãããä¸é¨ã®ã¦ã¼ã¶ã¼ãããã³ãã§éå°ã«å©ç¨ãã¦ãã¾ããä»ã®ã¦ã¼ã¶ã¼ãããã³ãã«å½±é¿ãä¸ãã¦ãã¾ããªããããé©åãªç£è¦ã¨ã±ã¢ãã§ããããã«ããå¿ è¦ãããã¾ãããã¾ãã Amazon Bedrock ã®æéä½ç³»ã¯ãã¼ã¯ã³ä½¿ç¨éã«åºã¥ãã¦ãããããã³ã¹ã管çã®è¦³ç¹ãããããã³ãæ¯ã®æ¶è²»éãå¯è¦åãããã¨ãéè¦ã§ããã
éåæå¦çã«ããè¤éæ§
çæ AI å¦çã¯æéããããããéåæã§å®è£ ãã¦ãã¾ãããkintone ã®æ¬ä½ã¨ãããã¢ããªã±ã¼ã·ã§ã³ãµã¼ããè¤æ°ã® Lambda 颿°ãçµç±ããElastiCache ã Bedrock ãªã©ã®ã³ã³ãã¼ãã³ãã¸ã®ã¢ã¯ã»ã¹ããããããå¦çã®å ¨ä½åãææ¡ãããã¨ãå°é£ã§ããã
è¤éãªãã°åæã«ããéç¨è² è·ã®å¢å¤§
顧客ããã®åãåãããçºçããéã®èª¿æ»ã§ã¯ãè¤æ°ã® Lambda 颿°éã§ã®ãã°ã横æçã«åæããå¿ è¦ãããã¾ããç¹ã«ãçæã®ãªã¯ã¨ã¹ãã¨çµæåå¾ãå¥ã ã®ãªã¯ã¨ã¹ãã¨ãã¦å¦çããããããä¸é£ã®å¦çããã¼ã追跡ãããã¨ãå°é£ã§ããã徿¥ã®åä¸ã®ãªã¯ã¨ã¹ã-ã¬ã¹ãã³ã¹å ã§å®çµããå¦çã¨ã¯ç°ãªããè¤æ°ã® Lambda 颿°ã«ã¾ãããéåæå¦çã®é¢é£ä»ããå¿ è¦ã§ã調æ»ã®é£æåº¦ãå¤§å¹ ã«ä¸æãã¾ãããå Lambda 颿°ã®ãã°ãåå¥ã«ç¢ºèªããæç³»åããªã¯ã¨ã¹ã ID ãæåã§ç §åãã使¥ãå¿ è¦ã¨ãªããéç¨è² è·ãå¢å¤§ããæ¸å¿µãããã¾ããã
ãããã®èª²é¡ã解決ãããããç§ãã¡ã¯æ¢åã® AWS éç¨çµé¨ãæ´»ããã¤ã¤ãçæ AI ç¹æã®è¦ä»¶ã«å¯¾å¿ãã忣ãã¬ã¼ã·ã³ã°ã«ããå¯è¦³æ¸¬æ§ã®åä¸ã«åãçµããã¨ã«ãã¾ãããæ¬¡ç« ã§ã¯ãAWS CloudWatch Application Signals ãæ´»ç¨ããå ·ä½çãªè§£æ±ºçã«ã¤ãã¦è©³ãã解説ãã¾ãã
AWS CloudWatch Application Signals ã®æ´»ç¨
åç« ã§è¿°ã¹ãçæ AI éç¨ã«ããã課é¡ã解決ãããããAWS CloudWatch Application Signals ãå°å ¥ãã¾ãããApplication Signals ã¯ã忣ã·ã¹ãã ã«ãããã¢ããªã±ã¼ã·ã§ã³ã®å¥å ¨æ§ã¨ããã©ã¼ãã³ã¹ãç£è¦ããããã®ãã«ããã¼ã¸ããµã¼ãã¹ã§ãã
徿¥éç¨ã§ã¯ã主㫠CloudWatch Logs 㨠CloudWatch Metrics ãæ´»ç¨ããç£è¦ãè¡ã£ã¦ãã¾ãããã çæ AI æ©è½ã®è¤éãªéåæå¦çããã¼ã«å¯¾ãã¦ã¯ãããé«åº¦ãªå¯è¦³æ¸¬æ§ãå¿ è¦ã§ããã Application Signals ã¯ãOpenTelemetry ãã¼ã¹ã®åæ£ãã¬ã¼ã·ã³ã°æ©è½ãæä¾ããè¤æ°ã® AWS ãµã¼ãã¹ã«ã¾ãããå¦çã®å ¨ä½åãèªåçã«å¯è¦åã§ãã¾ãã
ç¹ã« AI æ©è½ ã®ã¢ã¼ããã¯ãã£ã«ããã¦ã¯ã以ä¸ã®ç¹ã§ Application Signals ãå¨åãçºæ®ãã¾ããã
- Lambda 颿°éã®å¦çããã¼ã®å¯è¦å: AIServiceFunction ãã AIServiceAsyncEventFunction ã¸ã®éåæå¦çã®æµãã®è¿½è·¡
- å¤é¨ãµã¼ãã¹å¼ã³åºãã®ç£è¦: Amazon Bedrock ã ElastiCache ã¸ã®ã¢ã¯ã»ã¹ç¶æ³ã®ææ¡
- ã¨ã©ã¼ä¼æ¬ã®è¿½è·¡: å¦çãã§ã¼ã³ã®ã©ã®æ®µéã§ã¨ã©ã¼ãçºçããã©ã®ããã«ä¼æ¬ãããã詳細ã«åæ
- ããã³ãæ¯ã®å©ç¨ç¶æ³ã®ææ¡: ãã¬ã¼ã¹ãã¼ã¿ã«åãè¾¼ãã ããã³ãã®è奿 å ±ã«ãããç¹å®ã®ããã³ãã«é¢é£ããå¦çã®ã¿ãæ½åºãã¦åæ
- ã¨ã³ããã¤ã³ãæ¯ã®ããã©ã¼ãã³ã¹ç£è¦: å API ã¨ã³ããã¤ã³ãã®å¯ç¨æ§ãã¬ã¤ãã³ã·ã¼ãç¶ç¶çã«ç£è¦
- ããã«ããã¯å¦çã®ç¹å®: ãã¬ã¼ã¹ãããä¸ã§å¦çæéã®é·ãã³ã³ãã¼ãã³ããè¦è¦çã«ç¹å®ããæé©å対象ãæç¢ºå
æ¬ç« ã§ã¯ã Application Signals ã广çã«æ´»ç¨ããããã®ä»¥ä¸ã®å 容ã«ã¤ãã¦æ®µéçã«è§£èª¬ãã¾ã
- 忣ãã¬ã¼ã·ã³ã°ã®åºæ¬æ¦å¿µ:ãã¬ã¼ã¹ãã¹ãã³ã屿§ãªã©ã®åºç¤ç¥è
- OpenTelemetry ã«ããè¨è£ : è¨è£ ãã CloudWatch ã¸ã®ãã¬ã¼ã¹éä¿¡ã¾ã§
- éåæå¦çã®èª²é¡è§£æ±º: ã¹ãã³ãªã³ã¯ã«ãããã¬ã¼ã¹é¢é£ä»ãã®å®è£ ãã¯ããã¯
- å¯è¦³æ¸¬æ§ã®å®ç¾: ãã¬ã¼ã¹ãããããã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã®æ´»ç¨æ¹æ³
- ã«ã¹ã¿ã 屿§ã®æ´»ç¨: ããã³ãæ å ±ããã¼ã¯ã³æ°ãªã©ã®å¹æçãªç£è¦ææ³
忣ãã¬ã¼ã·ã³ã°ã®åºæ¬æ¦å¿µ
忣ãã¬ã¼ã·ã³ã°ã¨ã¯
忣ãã¬ã¼ã·ã³ã°ã¯ããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ã忣ã·ã¹ãã ã«ããã¦ãä¸ã¤ã®ãªã¯ã¨ã¹ããè¤æ°ã®ãµã¼ãã¹ãã³ã³ãã¼ãã³ããæ¨ªæããéã®å¦çã®æµãã追跡ã»å¯è¦åããæè¡ã§ãã徿¥ã®åä¸ã¢ããªã±ã¼ã·ã§ã³å ã§ã®ãã°è¨é²ã¨ã¯ç°ãªããã·ã¹ãã å ¨ä½ãéããå¦çã®å ¨ä½åãææ¡ãããã¨ãã§ãã¾ãã
忣ãã¬ã¼ã·ã³ã°ã®æ§æè¦ç´
忣ãã¬ã¼ã·ã³ã°ã¯ä»¥ä¸ã®ä¸»è¦ãªæ¦å¿µã§æ§æããã¦ãããããããçµã¿åãããã³ã³ããã¹ãæ å ±ã伿ããããã¨ã§ã忣ã·ã¹ãã å ¨ä½ã§ã®å¦çã®è¿½è·¡ãå®ç¾ãã¦ãã¾ãã
ãã¬ã¼ã¹ (Trace)
ä¸ã¤ã®ãªã¯ã¨ã¹ãã«å¯¾ããå¦çã®å ¨ä½ã表ãåä½ã§ããä¾ãã°ã kintone ã®çæ AI æ©è½ã«ããã¦ãã¦ã¼ã¶ã¼ãAIæ¤ç´¢ãå®è¡ãã¦ããçµæãåå¾ããã¾ã§ãã®ä¸é£ã®å¦çå ¨ä½ãä¸ã¤ã®ãã¬ã¼ã¹ã¨ãªãã¾ãã
ã¹ãã³ (Span)
ãã¬ã¼ã¹å ã®åå¥ã®å¦çåä½ã表ãã¾ããåã¹ãã³ã¯éå§æå»ãçµäºæå»ãå¦çåã屿§æ å ±ãªã©ãæã¡ã¾ãã
ã¹ãã³ã®å±æ§æ å ±ã«ã¯ãå¦çã®è©³ç´°ãè¡¨ãæ§ã ãªæ å ±ãå«ãããã¨ãã§ãã¾ããkintone ã®çæ AI æ©è½ã§ã¯ã以ä¸ã®ãããªå±æ§ãæ´»ç¨ãã¦ãã¾ãï¼
- ããã³ã/ã¦ã¼ã¶ã¼è奿 å ±: ã©ã®ããã³ããã¦ã¼ã¶ã¼ããã®ãªã¯ã¨ã¹ãããç¹å®ããããã®æ å ±
- AI æ©è½è奿 å ±: ãæ¤ç´¢AIãããã¢ããªä½æAIããªã©ãã©ã® AI æ©è½ã使ç¨ãããããç¤ºãæ å ±
- LLM é¢é£æ å ±: Amazon Bedrock ã¸ã®å¼ã³åºããè¡ãã¹ãã³ã§ã¯ãå ¥åãã¼ã¯ã³æ°ãåºåãã¼ã¯ã³æ°ã使ç¨ããã¢ãã«åãªã©ã®è©³ç´°æ å ±
ãããã®å±æ§æ å ±ã«ãããåãªãå¦çã®æµãã ãã§ãªãããã¸ãã¹çãªè¦³ç¹ããã®åæããã³ã¹ã管çã顧客ãµãã¼ãã«å¿ è¦ãªæ å ±ãå¹ççã«åå¾ã§ããããã«ãªãã¾ãã
â è£è¶³
kintone æ¬ä½ã®ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼å´ã§ã忣ãã¬ã¼ã·ã³ã°ã®ä»çµã¿ãå°å ¥ãã¦ãããæ¬ä½å´ã§çæããããã¬ã¼ã¹ ID ã AI Service å´ã«ã¾ã§ä¼æ¬ãããããã«ãã¦ãã¾ãã kintone å´ã®ãã°ã«ããã®ãã¬ã¼ã¹ ID ãç´ã¥ãã¦åºåããã¦ãããããã¦ã¼ã¶ã¼ã kintone ã®ç»é¢ä¸ã§ AI æ©è½ãå©ç¨ããéã®ä¸é£ã®å¦çããæ¬ä½å´ã®å¦çãã AI æ©è½å´ã®å¦çã¾ã§éåãããã¨ãªã追跡ã§ããããã«ãªã£ã¦ãã¾ãã
OpenTelemetry ã®è¨è£ 㨠CloudWatch ã¸ã®ãã¬ã¼ã¹éä¿¡ãããããã®å®è£
çæ AI æ©è½ã«ããã忣ãã¬ã¼ã·ã³ã°ãå®ç¾ããããã OpenTelemetry ãæ´»ç¨ããè¨è£ ãå®è£ ãã¾ãããæ¬ç¯ã§ã¯ãå®éã®å°å ¥ã¾ã§ã®ã¹ããããç¹ã«éåæå¦çãå¤ç¨ããã çæ AI æ©è½ç¹æã®èª²é¡ã«å¯¾ãã解決çã«ã¤ãã¦è§£èª¬ãã¾ãã
çæ AI æ©è½ã«ããã忣ãã¬ã¼ã·ã³ã°ãå®ç¾ããããã以ä¸ã®æé ã§ OpenTelemetry ã®ç°å¢ãæ§ç¯ãã¾ããã
â è£è¶³
kintone ã® çæ AI æ©è½ã§ã¯ãAIServiceFunction ããã³ AIServiceAsyncEventFunction ã®ä¸¡æ¹ã FastAPI ãã¬ã¼ã ã¯ã¼ã¯ãç¨ããã¢ããªã±ã¼ã·ã§ã³ã¨ãã¦å®è£ ãã¦ãããLambda Web Adapter ãç¨ãããã¨ã§ Lambda 颿°ã¨ãã¦åä½ããã¦ãã¾ãã詳細ãªè¨å®ã«ã¤ãã¦ã¯æ¬è¨äºã§ã¯å²æãã¾ããã å ã㦠Lambda Function URL ãæå¹åãããã¨ã§ HTTP ãªã¯ã¨ã¹ã/ã¬ã¹ãã³ã¹ã®å¦çã Lambda ç°å¢ã§å®ç¾ãã¦ãã¾ãã
OpenTelemetry ã«ããã¢ããªã±ã¼ã·ã§ã³ã®è¨è£
FastAPI ã¢ããªã±ã¼ã·ã§ã³ã®ã©ã¤ãã©ãªã«å¯¾ãã¦è¡ã OpenTelemetry ã®è¨è£ ã®åºç¤ã¯é常ã«è»½å¾®ãªãã®ã§ã 以ä¸ã®ã©ã¤ãã©ãªãã¤ã³ã¹ãã¼ã«ãã¦ãæ°è¡ã®ã³ã¼ããåãè¾¼ããã¨ã§å®ç¾ã§ãã¾ãã
ã¤ã³ã¹ãã¼ã«ããã©ã¤ãã©ãª
OpenTelemetry ã®åºæ¬çãªæ©è½ãæä¾ããã³ã¢ã©ã¤ãã©ãª
- opentelemetry-sdk: ãã¬ã¼ã¹ãã¡ããªã¯ã¹ããã°ã®åéã»å¦çãè¡ã SDK
- opentelemetry-exporter-otlp-proto-grpc: OpenTelemetry Collector ã¸ãã¬ã¼ã¹ãã¼ã¿ãéä¿¡ããããã®ã¨ã¯ã¹ãã¼ã¿ã¼
åãã¬ã¼ã ã¯ã¼ã¯ã»ã©ã¤ãã©ãªç¨ã®è¨è£ ã©ã¤ãã©ãª
- FastAPI ã®è¨è£
ã©ã¤ãã©ãª: opentelemetry-instrumentation-fastapi
FastAPI ã¢ããªã±ã¼ã·ã§ã³ã® HTTP ãªã¯ã¨ã¹ã/ã¬ã¹ãã³ã¹ãèªåçã«ãã¬ã¼ã¹ããã¨ã³ããã¤ã³ãæ¯ã®ã¹ãã³ãçæã - botocore ã®è¨è£
ã©ã¤ãã©ãª: opentelemetry-instrumentation-botocore
AWS SDK (boto3/botocore) ã®å¼ã³åºãã«å¯¾ãã¦èªåçã«ã¹ãã³ã³ã³ããã¹ããåãè¾¼ã¿ãã®ã»ã Lambda 颿° ã Bedrock ãªã© AWS ã®ãªã½ã¼ã¹ã®å¼ã³åºãã«ãããèªåçã«ãã¬ã¼ã¹æ å ±ã®ä¼æ¬ã
ç¹ã« Bedrock ã®å¼ã³åºããªã©ã«ããã¦ã¯ãã¹ãã³ã«å ¥åºåãã¼ã¯ã³æ°ãå§ãã¨ããã¡ããªã¯ã¹ãã¢ãã«ã®è奿 å ±ãªã©ãã¹ãã³ã®å±æ§ã¨ãã¦ä»ä¸ãããã¨ãæ¨æºåããããã©ã¼ãããã§è¨å®ãããã¡ãªãããããã¾ãã詳ãã㯠OpenTelemetry ã® Semantic conventions for AWS Bedrock operations ããåç §ãã ããã - logging ã®è¨è£
ã©ã¤ãã©ãª: opentelemetry-instrumentation-logging
Python ã®æ¨æºãã°ã¨ãã¬ã¼ã¹ãé¢é£ä»ãããã°ã¡ãã»ã¼ã¸ã«ãã¬ã¼ã¹æ å ±ãèªå追å
åºç¤ç㪠FastAPI ã¢ããªã±ã¼ã·ã§ã³ã¸ã®è¨è£ ã®ã³ã¼ãä¾
# OpenTelemetry ã®åæå trace.set_tracer_provider(TracerProvider()) tracer_provider = trace.get_tracer_provider() # OTLP ã¨ã¯ã¹ãã¼ã¿ã¼ã®è¨å®ï¼OpenTelemetry Collector ã¸éä¿¡ï¼ otlp_exporter = OTLPSpanExporter(endpoint="localhost:4317", insecure=True) span_processor = SimpleSpanProcessor(otlp_exporter) tracer_provider.add_span_processor(span_processor) # å種è¨è£ ã©ã¤ãã©ãªã®é©ç¨ app = FastAPI() BotocoreInstrumentor().instrument() FastAPIInstrumentor.instrument_app(app) LoggingInstrumentor().instrument()
ð¡ ãã³ã
OpenTelemetry ã«ã¯ã³ã¼ãã®è¨è¿°ãå¿ è¦ã¨ããèªåè¨è£ ããææ³ãããã¾ãããkintoneã® çæ AI æ©è½ã§ã¯ä»¥ä¸ã®çç±ã«ããæåè¨è£ ã鏿ãã¾ããã
- Lambda ç°å¢ã§ã®èµ·åæéã¸ã®å½±é¿
èªåè¨è£ ã¯èµ·åæã«ã¢ããªã±ã¼ã·ã§ã³å ¨ä½ãã¹ãã£ã³ãã¦è¨è£ ãã¤ã³ããç¹å®ãããã Lambda 颿°ã®èµ·åæéãå¤§å¹ ã«å¢å ãã¾ããæåè¨è£ ã§ã¯å¿ è¦æå°éã®è¨è£ ãã®ã¿ãè¡ãããããã®å½±é¿ãæå°åã§ãã¾ãã- ã«ã¹ã¿ã 屿§ã®æè»ãªå¶å¾¡
çæ AI æ©è½ã§ã¯ãããã³ã/ã¦ã¼ã¶ã¼è奿 å ±ã AI æ©è½è奿 å ±ãªã©ã®å±æ§ãã¹ãã³ã«ä»ä¸ããããã¨ãã§ãã¾ããæåè¨è£ ã«ãããå¦çã®å段éã§å¿ è¦ãªå±æ§ãç²¾å¯ã«å¶å¾¡ã§ãã¾ãã
CloudWatch ã§ã® OTLP ã¨ã³ããã¤ã³ãã®æå¹å
åºæ¬çã«ã¯ä»¥ä¸ã®ããã«ã¢ããªã±ã¼ã·ã§ã³ãã OpenTelemetry Collector ãç¨ã㦠OpenTelemetry ã®æ¨æºãããã³ã«ã® OTLP ã¬ã·ã¼ãã¼ãæä¾ãããªãã¶ã¼ãããªãã£ããã¯ã¨ã³ãã«å¯¾ãã¦ã¹ãã³ãéä¿¡ãããã¨ã§ã忣ã·ã¹ãã ã®å¯è¦³æ¸¬æ§ãå®ç¾ã§ãã¾ãã
CloudWatch ã§ã¯ OTLP ã¨ã³ããã¤ã³ããæå¹åããããã«ã Transaction Search ãæå¹åããå¿ è¦ãããã¾ããæå¹åæé 㯠AWS å ¬å¼ããã¥ã¡ã³ã Enable Transaction Search ãåç §ãã¦ãã ããã
OpenTelemetry Collector ã®çµã¿è¾¼ã¿
Lambda 颿°ã¨ãã¦ãããã¤ããã³ã³ããã¤ã¡ã¼ã¸ã«ã¯ã OpenTelemetry Collector ãåãã³ã³ããã¤ã¡ã¼ã¸å ã«çµã¿è¾¼ã¿ããã® OpenTelemetry Collector ãçµç±ã㦠CloudWatch ã® OTLP ã¨ã³ããã¤ã³ãã«ãã¬ã¼ã¹æ å ±ãéä¿¡ããããã«æ§æãã¾ãã
ãã¼ã«ã«éçºç°å¢ã§ã¯ OpenTelmetry Collector ã¯ã¢ããªã±ã¼ã·ã§ã³ã¨ã¯å¥ã®ã³ã³ããã¨ãã¦èµ·åããJaeger ãããã¯ã¨ã³ãã¨ãã¦å©ç¨ãã¦ãã¾ããã

OpenTelemetry Collector ã«ã¯ããã¤ãã®ãã£ã¹ããªãã¥ã¼ã·ã§ã³ãããã¤ããããå½å㯠AWS Distro for OpenTelemetry Collector (ADOT Collector) ãæ¡ç¨ãã¦ããã¾ããããOpenTelemetry å°å ¥ã«ä¼´ãããã©ã¼ãã³ã¹ã®å£åãããã¾ããã
ç¾å¨ã¯ã OpenTelemetry ã®ã³ãã¥ããã£ã§æä¾ããã¦ãã OpenTelemetry Collector AWS Lambda Extension layer ãæ¡ç¨ãã¦ãã¾ãã
ADOT Collector ã§ã®ããã©ã¼ãã³ã¹å£åã®åå ã¯ã Lambda 颿°ã§å©ç¨ããå ´åã®ç¹æã®åé¡ã§ãããã¯ã¨ã³ãã¸ã®ã¹ãã³ã®éä¿¡ãã¢ããªã±ã¼ã·ã§ã³ã®å¦çã¨åæãã¦è¡ããªããã°ãªããªãã£ããã¨ãèµ·å ã§ãããAIServiceFunction ã®å種ã¨ã³ããã¤ã³ãã«ããã¦ã¯ 200ms 以ä¸ã®ã¬ã¤ãã³ã·ã¼ã®ãªã¼ãããããããã¾ããã
OpenTelemetry Collector AWS Lambda Extension Layer ã«ã¯ decouple ããã»ããµã¨ãããã®ãå å ããã¦ãããå®å ¨ã«éåæã§ã¹ãã³ã®éä¿¡ãè¡ã£ã¦ããããããã¬ã¤ãã³ã·ã¼ã«ããããªã¼ããããã 150ms ç¨åº¦æ¹åãã¾ããã
ãã ããdecouple ããã»ããµã¯å®å ¨ã«éåæã§ã®ã¹ãã³ã®éä¿¡ã«ãªããããLambda 颿°ãåä½ãã¦ããªãéã«ã¯ã¹ãã³ãéä¿¡ãããªããªãã¨ãããã¬ã¼ããªãããããã¨ã«æ³¨æãã¦ãã ããã
詳ãã㯠Observing Lambdas using the OpenTelemetry Collector Extension Layer ãåç §ãã¦ãã ããã
以ä¸ã¯ã OpenTelemetry Collector ã®è¨å®ã§ãã
# 使ç¨ãã Extension ã®è¨å® (ããã§ã¯ AWS ã®ããã¯ã¨ã³ãã«éä¿¡ããããã® Sigv4 ç½²åã®è¨å®) extensions: sigv4auth: region: ${env:AWS_REGION} service: xray # OpenTelemetry Collector ã Listen ããã¨ã³ããã¤ã³ãã®è¨å® receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 # ããã»ããµã®è¨å® processors: batch: timeout: 1s decouple: max_queue_size: 10 # OpenTelemetry Collector ãéä¿¡ãã exporters: otlphttp: traces_endpoint: https://xray.${env:AWS_REGION}.amazonaws.com/v1/traces compression: gzip auth: authenticator: sigv4auth # OpenTelemetry Collector ã®ãã¤ãã©ã¤ã³è¨å® service: extensions: [sigv4auth] pipelines: traces: receivers: [otlp] processors: [batch, decouple] exporters: [otlphttp]
LLM å¼ã³åºãã®ãã¬ã¼ã¹ã¨çµæåå¾ã®ãã¬ã¼ã¹ããªã³ã¯ãããå®è£ ãã¯ããã¯
AI æ©è½ã®ã¢ã¼ããã¯ãã£ã«ããã¦ã LLM ã®å¼ã³åºãã¨çæçµæã®åå¾ã¯ç°ãªããªã¯ã¨ã¹ãã«ãªã£ã¦ãããã¨ã«ã¤ãã¦èª¬æãã¾ãããå ãã¦ã忣ãã¬ã¼ã·ã³ã°ã®æ§æè¦ç´ ã«ããããã¬ã¼ã¹ã«ã¦è§£èª¬ããããã«ãé常ãä¸ã¤ã®ã¯ã©ã¤ã¢ã³ããªã¯ã¨ã¹ãã«å¯¾ãã¦ä¸ã¤ã®ãã¬ã¼ã¹ãçæããã¾ããã¤ã¾ããçæçµæã®åå¾ãªã¯ã¨ã¹ãã¯ã LLM å¼ã³åºãã®ãã¬ã¼ã¹ã¨ã¯å¥ã®ãã¬ã¼ã¹ã¨ãã¦æ±ãããéå¸¸ã®æ¹æ³ã§ã¯ä¸¡è ã®é¢é£æ§ãæããããã¨ãã§ãã¾ããã
ãã®èª²é¡ã«ããã以ä¸ã®ãããªéç¨ä¸ã®åé¡ãçºçãã¾ãã
- çæãªã¯ã¨ã¹ãã§ã¨ã©ã¼ãçºçããå ´åãçµæåå¾ãªã¯ã¨ã¹ãã§ã®èª¿æ»æã«å ã®ã¨ã©ã¼åå ãç¹å®ã§ããªã
- 顧客ããã®åãåããæã«ãä¸é£ã®å¦çããã¼ã追跡ãããã¨ãå°é£
æ¬ç¯ã§ã¯ããã®èª²é¡ã解決ãããããValkey ãä»ããã¹ãã³ã³ã³ããã¹ãã®ä¼æ¬ã¨ã¹ãã³ãªã³ã¯ã®æ´»ç¨ã«ãããç°ãªããªã¯ã¨ã¹ãéã§ã®ãã¬ã¼ã¹é¢é£ä»ããå®ç¾ããå®è£ ãã¯ããã¯ã«ã¤ãã¦è§£èª¬ãã¾ãã
ã¹ãã³ãªã³ã¯ã¨ã¯
ã¹ãã³ãªã³ã¯ã¯ãOpenTelemetry ã«ããã¦ç°ãªããã¬ã¼ã¹éã®ã¹ãã³ãé¢é£ä»ããããã®ä»çµã¿ã§ããé常ã®è¦ªåé¢ä¿ã¯åä¸ãã¬ã¼ã¹å ã§ã®ã¹ãã³éã®é¢ä¿ã表ãã¾ãããã¹ãã³ãªã³ã¯ã¯ç°ãªããã¬ã¼ã¹éã§ã®è«ççãªé¢é£æ§ã示ãããã«ä½¿ç¨ããã¾ãã
kintone ã®çæ AI æ©è½ã®ããã«ãä¸ã¤ã®å¦çãè¤æ°ã®ç¬ç«ãããªã¯ã¨ã¹ãã«åãããå ´åãã¹ãã³ãªã³ã¯ãæ´»ç¨ãããã¨ã§ä»¥ä¸ãå®ç¾ã§ãã¾ãã
- ãã¬ã¼ã¹éã®é¢é£ä»ã: çæãªã¯ã¨ã¹ãã®ãã¬ã¼ã¹ã¨çµæåå¾ãªã¯ã¨ã¹ãã®ãã¬ã¼ã¹ãè«ççã«çµã³ä»ã
- 調æ»ã®å¹çå: CloudWatchä¸ã§é¢é£ãããã¬ã¼ã¹ã辿ããã¨ã§ãä¸é£ã®å¦çããã¼ãå æ¬çã«åæ
- å æé¢ä¿ã®å¯è¦å: ç°ãªããªã¯ã¨ã¹ãéã§ã®å¦çã®ä¾åé¢ä¿ãå½±é¿ç¯å²ãæç¢ºå
次ã«ããã®ã¹ãã³ãªã³ã¯ãå®ç¾ããããã®å ·ä½çãªå®è£ æ¹æ³ã«ã¤ãã¦è§£èª¬ãã¾ãã
Valkey ãç¨ããã¹ãã³ãªã³ã¯ã®å®ç¾æ¹æ³
1. LLM ã®çæçµæã Valkey ã«é次æ¸ãè¾¼ãã§ããã¾ãããæ¸ãè¾¼ããªãã¸ã§ã¯ãã« LLM å¼ã³åºãã®ãªã¯ã¨ã¹ãã®ã¹ãã³ã³ã³ããã¹ããæãããããã«ãã¾ãã
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator # TraceContextTextMapPropagator ãç¨ã㦠Valkey ã«æ¸ãè¾¼ããã¬ã¼ã¹ã³ã³ããã¹ããç¨æãã def init_carrier(): carrier: dict = {} TraceContextTextMapPropagator().inject(carrier) # carrier ã Valkey ã«æ¸ãè¾¼ããªãã¸ã§ã¯ãã®ãã£ã¼ã«ãã«è¨å®ãã (çç¥)
2. çæçµæåå¾ã®ãªã¯ã¨ã¹ãã®å¦çã«ããã¦ãValkey ããçæçµæãåãåºããè¡ãã¹ãã³ã«åãåºããããªãã¸ã§ã¯ãã®ã¹ãã³ã³ã³ããã¹ãããªã³ã¯ããã¾ãã
from opentelemetry import trace from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator # Valkey ããåãåºãããªãã¸ã§ã¯ããã carrier ãã£ã¼ã«ããèªã¿è¾¼ã(çç¥) # TraceContextTextMapPropagator ãç¨ã㦠carrier ããã¹ãã³ã³ã³ããã¹ããåãåºããç¾å¨ã®ã¹ãã³ã«ãªã³ã¯ã追å ãã def add_span_link_from_carrier(carrier): propagator = TraceContextTextMapPropagator() ctx = propagator.extract(carrier) referrer_span_context = trace.get_current_span(ctx).get_span_context() trace.get_current_span().add_link(referrer_span_context)
CloudWatch ã§ã®ã¹ãã³ãªã³ã¯ããããã¬ã¼ã¹ã®å¯è¦å
CloudWatch ã¯ã¹ãã³ãªã³ã¯ããã¦ãããã¬ã¼ã¹ãããå ´åãããããé¢é£ä»ãã¦æ¬¡ã®ããã«å¯è¦åããã¾ãã
ã¹ãã³ãªã³ã¯ãè¨å®ãããã¹ãã³ã®ãããã¬ã¼ã¹ã®ãã¥ã¼ã§ã¯ã次ã®ããã«ã¹ãã³ãªã³ã¯ãããã¹ãã³ãå«ããã¬ã¼ã¹ãä¸ã¤ã®ãã¥ã¼ã§åç §ãããã¨ãã§ãã¾ãã

Application Signals ã«ããå¯è¦³æ¸¬æ§
æ¬ç¯ã§ã¯ãOpenTelemetry Collector ããã¹ãã³ã CloudWatch ã«éããããã¨ã«ãã£ã¦ãã©ã®ãããªãã¨ãå¯è¦³æ¸¬ã«ãªã£ãã®ãã¨ãããã¨ã解説ãã¾ãã
ãã¬ã¼ã¹ãããã«ããã¯ã¼ã¯ãã¼ãã®å¯è¦å
ã¹ãã³ãéä¿¡ããããã¨ã«ããã以ä¸ã®ããã«ãã¯ã¼ã¯ãã¼ãã®å ¨ä½æ§æãå¯è¦åãããå¡ä¾ã«ããããã«ãã¯ã©ã¤ã¢ã³ãã¨ã©ã¼ããµã¼ãã¼ã¨ã©ã¼ãã©ã®ç¨åº¦çºçãã¦ããããç¹å®ãããã¨ãã§ãã¾ãã

çºçäºè±¡ã調æ»ããããµã¼ãã¹ã鏿ãããã¨ã§ããã¤ãã©ã®ç¨åº¦ãã¨ã©ã¼ããã£ãã®ããã©ã®ç¨åº¦ã®ãªã¯ã¨ã¹ãããã£ãã®ããææ¡ãããã¨ãã§ãã¾ãã

ãã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã«ããé害調æ»
ãã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã使ããã¨ã§ãå®éã«é害ã¨ãªã£ã¦ãããªã¯ã¨ã¹ãã«ã¤ãã¦ããªã«ãã¦ã³ãã¦åå ãè¦ã¤ãããã¨ãã§ãã¾ãããã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã®ã³ã³ã½ã¼ã«ãã Span status ã ERROR ã®ãã®ã«ãã©ã¼ã«ã¹ãã¦èª¿æ»ããããä»»æã®ã¹ãã³ã«ç´ã¥ãã屿§ã§å¯¾è±¡ã¨ãªããªã¯ã¨ã¹ããè¦ã¤ãããã¨ãã§ãã¾ãã

traceId ã鏿ããã¨ãã¨ã©ã¼ã®ãã£ããªã¯ã¨ã¹ãã®ä¸é£ã®ã¹ãã³ãæç³»åã§ãã¹ã¦åç §ãããã¨ãã§ããã©ã®ãµã¼ãã¹ã§ã¨ã©ã¼ãçºçãã¦ããã®ãã ã£ãããã©ã®ç¨åº¦ã®ã¬ã¤ãã³ã·ã¼ãã©ã®å¦çã§ãã£ãã®ããªã©ã追ããã¨ãã§ãã¾ãã

Span timeline ãããé害ã¨ãªã£ã¦ããã¹ãã³ã鏿ããã¨ããã®ä¾å¤ã§åºåãããã¡ãã»ã¼ã¸ã§ãã£ãããã¹ã¿ãã¯ãã¬ã¼ã¹ãåç §ãããã¨ãã§ãã¾ãã

ã«ã¹ã¿ã 屿§ã®å¹æçãªæ´»ç¨ (ããã³ãæ å ±ãå©ç¨ããã AI æ©è½ã®èå¥, Bedrock ã®å ¥åºåãã¼ã¯ã³æ°ãªã©)
åè¿°ã®éããSpan ã«ã¯å±æ§ãä»ä¸ãããã¨ãã§ãããããããã§ã¯ã©ããã£ã屿§æ å ±ãã©ã®ããã«ä»å ããã®ãããã®å±æ§ã使ããã¨ã§ã©ããã£ããã¨ã®å¯è¦³æ¸¬æ§ãä¸ãã£ãã®ãã¨ãããã¨ã解説ãã¾ãã
ã¹ãã³ã«ä»å ãã屿§ã«ã¤ãã¦
â è£è¶³
kintone.*ã®å±æ§åã屿§å¤ä¾ã¯èª¬æããããããã«å®éã«ä½¿ç¨ãã¦ããååãã夿´ãã¦ãã¾ãã
ããã³ã/ã¦ã¼ã¶ã¼è奿 å ±
顧客ãèå¥ããæ å ±ã kintone Application Server ãããªã¯ã¨ã¹ããããã«ã¦ä¼æ¬ããããããã¹ãã³ã«åãè¾¼ããã¨ã§ãã¹ãã³ã確èªããéã«ã©ã®ããã³ãã«ã©ã®ãããªå½±é¿ããã£ãã®ããå³åº§ã«ç¹å®ããããéè¨ããããããã¨ãã§ãã¾ãã
| 屿§å | 屿§å¤ä¾ | 説æ |
|---|---|---|
| kintone.tenant_id | z9999999 | kintone ã®ããã³ãèå¥å |
| kintone.user_id | 12345 | ãªã¯ã¨ã¹ããå®è¡ããã¦ã¼ã¶ã¼ã® ID |
ãããã®å±æ§ã«ãããç¹å®ã®ããã³ããç¹å®ã®ã¦ã¼ã¶ã¼ã«é¢é£ããå¦çã®ã¿ãæ½åºãã¦åæãããã¨ãå¯è½ã«ãªãã¾ãã
AI æ©è½ã®èå¥ã¨ã¢ãã«æ å ±
kintone ã®çæ AI æ©è½ã§ã¯ãè¤æ°ã® AI æ©è½ã¨è¤æ°ã® LLM ã使ãåãã¦ãããããã©ã®æ©è½ã§ã©ã®ã¢ãã«ã使ç¨ããããã追跡ãããã¨ãéè¦ã§ãã
| 屿§å | 屿§å¤ä¾ | 説æ |
|---|---|---|
| kintone.ai.llm.agent_type | RAG_CHAT_ANSWER | kintone å ã§ã® AI æ©è½ã®ç¨®é¡(屿§å¤ä¾ã¯ RAG ã®åççææ©è½ãæã) |
| gen_ai.request.model | us.anthropic.claude-3-5-sonnet-20241022-v2:0 | AI æ©è½ã§ä½¿ç¨ããã¢ãã«ã®èå¥å (屿§å㯠OpenTelemetry æ¨æº) |
ãããã®å±æ§ã«ãããæ©è½å¥ã»ã¢ãã«å¥ã®ããã©ã¼ãã³ã¹åæãã¨ã©ã¼çã®æ¯è¼ãå¯è½ã«ãªãã¾ãã
Bedrock ã®å ¥åºåãã¼ã¯ã³æ°ã¨å¦çãã©ã¡ã¼ã¿
åè¿°ã® Botocore ã®è¨è£
ã©ã¤ãã©ãªãç¨ãããã¨ã§ã Bedrock ã®å¼ã³åºããè¡ã£ãã¹ãã³ã«èªåçã« gen_ai ããå§ã¾ã屿§åã§å
¥åºåãã¼ã¯ã³æ°ãå§ãã¨ããã¢ãã«ã®å¼ã³åºãã«ã¾ã¤ããæ§ã
ãªå±æ§ãä»ä¸ããã¾ãã
| 屿§å | 屿§å¤ä¾ | 説æ |
|---|---|---|
| gen_ai.usage.input_tokens | 3527 | LLM ã¸ã®å ¥åãã¼ã¯ã³æ° |
| gen_ai.usage.output_tokens | 251 | LLM ããã®åºåãã¼ã¯ã³æ° |
ãããã®å±æ§ã«ããã以ä¸ã®ãããªåæãå¯è½ã«ãªãã¾ãã
- ããã³ãå¥ãã¼ã¯ã³æ¶è²»éã®ç£è¦:
tenant_idã¨çµã¿åããããã¨ã§ãç¹å®ã®é¡§å®¢ã®ãã¼ã¯ã³ä½¿ç¨éãéè¨ããã³ã¹ãé åãå©ç¨å¶éã®ç®¡çã«æ´»ç¨ - æ©è½å¥ã³ã¹ãåæ:
agent_typeã¨çµã¿åããããã¨ã§ãã©ã® AI æ©è½ãæãã³ã¹ããæ¶è²»ãã¦ããããç¹å®
屿§ãç¨ããå¯è¦åã®æ¹æ³
åè¿°ã®ã«ã¹ã¿ã 屿§ã¯ãåã«ã¹ãã³ã«æ å ±ãä»ä¸ããã ãã§ãªããCloudWatch Application Signals ã®å¼·åãªåææ©è½ã¨çµã¿åããããã¨ã§ã çæ AI æ©è½ã®éç¨ã«ããã¦éè¦ãªæ´å¯ãå¾ããã¨ãã§ãã¾ãã
ãã¬ã¼ã¹ã®ãã¥ã¼ã§ã¯ã¡ã¿ãã¼ã¿ã¨ãã¦å±æ§ã表示ããã
ã©ã®ããã³ããã©ã® AI æ©è½ã§ãã©ã®ç¨åº¦ã®å©ç¨ããã¦ããã®ãããã¼ã¯ã³æ°ãæ¶è²»ããã®ããªã©ãåç §ãããã¨ãã§ãã¾ãã

ãã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã§ã®å±æ§ãã£ã«ã¿ãªã³ã°
ç¹å®ã®ããã³ããã©ã®ç¨åº¦ä½¿ã£ã¦ããã®ããå¯è¦åãã¦ããä¾

ã«ã¹ã¿ã ããã·ã¥ãã¼ãã®æ§ç¯
ã«ã¹ã¿ã ããã·ã¥ãã¼ãã使ããæ©è½æ¯ã® LLM ã®å¼ã³åºãåæ°ããå ¥åãã¼ã¯ã³æ°ã®ä»ãæ©è½ãã¨ã«ããã³ãã®å©ç¨å¾åãªã©ãå¯è¦åã§ããããã«ãã¦ãå©ç¨å¾åãªã©ã確èªã§ããããã«ãã¦ãã¾ãã

éç¨æ¹åã¸ã®æ´»ç¨äºä¾
ãå¤§è¦æ¨¡ SaaS ã«ãããçæ AI éç¨ã®èª²é¡ãã«ã¦ç´¹ä»ããçæ AI éç¨ã«ããã5ã¤ã®ä¸»è¦èª²é¡ã«å¯¾ãã¦ãOpenTelemetry 㨠CloudWatch Application Signals ãæ´»ç¨ãããã¨ã§ã©ã®ãããªè§£æ±ºãããããããã解説ãã¾ãã
çæ AI ç¹æã®ä¸ç¢ºå®æ§ã¸ã®å¯¾å¿
- 課é¡: åãããã³ããã§ãç°ãªãçµæãçæãããããããæ¨æ¥ã¯æ£å¸¸ã«åä½ããã®ã«ä»æ¥ã¯ã¨ã©ã¼ã«ãªããã¨ãã£ãåãåããã®èª¿æ»ãå°é£
- 解決: ããã³ãã®èå¥å(tenant_id) ã§ãã£ã«ã¿ãªã³ã°ããæåæã¨å¤±ææã®ãã¬ã¼ã¹ãæ¯è¼ããã¬ã¼ã¹ã«ç´ã¥ããããã¹ã¿ãã¯ãã¬ã¼ã¹ã®æ å ±ã屿§æ å ±ã«ããå³åº§ã«åå ãç¹å®ã§ããããã«ã
ã¨ã©ã¼ã®æ ¹æ¬åå ç¹å®ã®å°é£ãã®è§£æ¶
- 課é¡: LLM å¼ã³åºããå¾å¦çãªã©è¤æ°ã¹ãããã§ã®åé¡çºçç®æã®ç¹å®ãå°é£
- 解決: ãã¬ã¼ã¹ãããã¨ã¹ãã³ã¿ã¤ã ã©ã¤ã³ã«ãããå¦çããã¼ã¨ã¨ã©ã¼ç®æãè¦è¦çã«ç¢ºèªãåã¹ãã³ã®è©³ç´°ã§ã¹ã¿ãã¯ãã¬ã¼ã¹ã¨ä¾å¤ã¡ãã»ã¼ã¸ãå³åº§ã«åå¾ã
ããã³ãæ¯ã®ãã¼ã¯ã³æ¶è²»éã®å¯è¦å
- 課é¡: ããã³ãæ¯ã®å©ç¨ç¶æ³ææ¡ã¨ã³ã¹ã管çãéå°å©ç¨ã®é²æ¢
- 解決: å ¥åºåãã¼ã¯ã³æ°ã®ã¹ãã³å±æ§ã¨ããã³ãã®èå¥å(tenant_id) ã®çµã¿åããã«ããéè¨ããçµæã CloudWatch ã®ã«ã¹ã¿ã ããã·ã¥ãã¼ãã®ã¦ã£ã¸ã§ããã«ãããã¨ã§ææ¡ã§ããããã«ã
éåæå¦çã«ããè¤éæ§ã®è§£æ±º
- 課é¡: è¤æ°ã® Lambda 颿°ã¨ AWS ãµã¼ãã¹ãçµç±ããå¦çã®å ¨ä½åææ¡ãå°é£
- 解決: ãã¬ã¼ã¹ãããã«ããå¦çããã¼ã®è¦è¦åã¨ãã¹ãã³ãªã³ã¯ã«ããçæãªã¯ã¨ã¹ãã¨çµæåå¾ãªã¯ã¨ã¹ãã®é¢é£ä»ãã
è¤éãªãã°åæã«ããéç¨è² è·ã®è»½æ¸
- 課é¡: è¤æ° Lambda 颿°ã®ãã°æ¨ªæåæã¨æåç §åã«ããéç¨è² è·ã®å¢å¤§
- 解決: ç´æçãªãã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã¨ã¹ãã³ã¿ã¤ã ã©ã¤ã³ã«ãããè¤éãªãã°ã¯ã¨ãªãä¸è¦ã«ãæ°ã¡ã³ãã¼ã§ãè¿ éãªèª¿æ»ãå¯è½ã
ãããã®äºä¾ã示ãããã«ã OpenTelemetry 㨠CloudWatch Application Signals ã®å°å ¥ã«ããã徿¥ã®ãã°ãã¼ã¹ã®åæã§ã¯è§£æ±ºå°é£ã ã£ãçæ AI ç¹æã®éç¨èª²é¡ãå æ¬çã«è§£æ±ºãããã¨ãã§ãã¾ããã
ç¹ã«éè¦ãªç¹ã¯ãè¤éãªãã°ã¯ã¨ãªã®ç¿å¾ãå±äººçãªèª¿æ»ã¹ãã«ã«ä¾åãããã¨ãªããç´æç㪠UI ã¨è±å¯ãªå±æ§æ å ±ã«ãããéç¨ãã¼ã å ¨ä½ã®èª¿æ»è½åãåºä¸ãããããã¨ã§ããããã«ããã çæ AI æ©è½ã®é害対å¿ãè¿ éåãããã ãã§ãªããäºé²çãªç£è¦ã¨ã³ã¹ã管çãå®ç¾**ããå¤§è¦æ¨¡SaaSã¨ãã¦ã®å®å®éç¨ãæ¯ããéè¦ãªåºç¤ã¨ãªã£ã¦ãã¾ãã
å°å ¥ã®æ³¨æç¹
CloudWatch Application Signals ã®å°å ¥ã¯å¤ãã®éç¨æ¹åãããããã¾ãããå®éã®å°å ¥æã«ã¯ä»¥ä¸ã®ç¹ã«æ³¨æãå¿ è¦ã§ãã
å°å ¥ã«ä¼´ãæ§è½ã®å¤å
OpenTelemetry ã®è¨è£ ã¨ãã¬ã¼ã¹éä¿¡ã«ãããã¢ããªã±ã¼ã·ã§ã³ã®ã¬ã¹ãã³ã¹æéã«è¥å¹²ã®ãªã¼ãã¼ããããçºçãã¾ããç¹ã« Lambda ç°å¢ã§ã¯ãADOT Collectorä½¿ç¨æã«ã¬ã¤ãã³ã·ã¼å¢å ã確èªããã¾ããããã®åé¡ã¯ãOpenTelemetry Collector AWS Lambda Extension Layer ã® decouple ããã»ããµãæ´»ç¨ãããã¨ã§æ¹åã§ãã¾ãã
è¨è£ ã©ã¤ãã©ãªã«ããæ¯ãèãã®å¤å
èªåè¨è£ ã©ã¤ãã©ãªï¼FastAPI, botocoreçï¼ã®å°å ¥ã«ãããæ¢åã®ã¢ããªã±ã¼ã·ã§ã³ã®åä½ã«äºæããªã夿´ãçããå¯è½æ§ãããã¾ããç¹ã«ãHTTP ãªã¯ã¨ã¹ãã®å¦çé åºãã¨ã©ã¼ãã³ããªã³ã°ã®æåãå¤ããå ´åããããããååãªãã¹ãã宿½ãã¦ããæ¬çªç°å¢ã«é©ç¨ãããã¨ãæ¨å¥¨ãã¾ãã
å®éã«ãbotocore ã®è¨è£ ã©ã¤ãã©ãªå°å ¥æã«ãBedrock ã®ã¹ããªã¼ãã³ã°ã¬ã¹ãã³ã¹ã®å¦çã«ããã¦çæçµæã®åå¾ã«ä¸å ·åãçºçããã±ã¼ã¹ãããã¾ããããã®ãããªäºæããªãåä½å¤æ´ãæ©æã«çºè¦ãããããè¨è£ ã©ã¤ãã©ãªã®ãã¼ã¸ã§ã³ã¢ããæã«ã¯ç¹ã«æ³¨ææ·±ããã¹ããå¿ è¦ã§ãã
ã¹ãã³ãªã³ã¯ãå«ããã¬ã¼ã¹ã®è¡¨ç¤ºå¶é
ãã¬ã¼ã¹ã®ãã¥ã¼ã§ã¯ãã¹ãã³ãªã³ã¯ãä»ãã¦ããå ´åé¢é£ãããã¬ã¼ã¹ãä¸ã¤ã®ãã¥ã¼ã§åç §ã§ãã¾ãããæå¤§5ä»¶ã¾ã§ãã表示ã§ããã6件以ä¸ã®å ´åã«ã¯ã¨ã©ã¼ã«ãªãã¾ããç¾å¨ãæ¹åã«ã¤ãã¦ã¯ AWS ã«ãªã¯ã¨ã¹ãããã¦ããã¾ãããã¹ãã³ãªã³ã¯ãå¤ç¨ãã¦ããå ´åã«ã¯æ³¨æãå¿ è¦ã§ãããããã®æ³¨æç¹ãäºåã«ææ¡ããé©åãªå¯¾çãè¬ãããã¨ã§ãApplication Signals ã®å¹æãæå¤§éã«æ´»ç¨ã§ãã¾ãã
ã¾ã¨ãã¨ä»å¾ã®å±æ
æ¬è¨äºã®ãã¤ã³ã
æ¬è¨äºã§ã¯ã kintone ã«ãããçæ AI æ©è½ã®éç¨èª²é¡ããAWS CloudWatch Application Signalsã«ãã忣ãã¬ã¼ã·ã³ã°ã§è§£æ±ºããäºä¾ãç´¹ä»ãã¾ããã
æè¡çãªææã¨ãã¦ãOpenTelemetryã«ããè¨è£ ã¨ã«ã¹ã¿ã 屿§ã®å¹æçãªæ´»ç¨ã«ãããè¤éãªéåæå¦çããã¼ã®å¯è¦åã¨ãããã³ãæ¯ã®ãªã½ã¼ã¹æ¶è²»éã®è©³ç´°ãªææ¡ãå®ç¾ãã¾ããã
éç¨é¢ã§ã®ææã¨ãã¦ãå±äººæ§ãä¸ããç´æçãªé害調æ»ç°å¢ãæ§ç¯ããæè¡çãªæ¹åãéç¨å¹çåã¨ãã価å¤ã«ç´çµããçµæã¨ãªã£ãã¨æãã¾ãã
Application Signals ãç¨ããææ¨æ´»ç¨ã®å±æ
ç¾å¨ã®åæ£ãã¬ã¼ã·ã³ã°æ´»ç¨ã«ããéç¨æ¹åãå®ç¾ã§ãã¾ããããApplication Signals ã«ã¯ SLO æ©è½ãã¯ããã¨ããããããªãææ¨æ´»ç¨ã®å¯è½æ§ãããã¾ãã
Application Signals ã® SLO æ©è½ã«ããå質管çã®å¯è½æ§
Application Signals ã§ã¯ãåéãããã¬ã¼ã¹ãã¼ã¿ãåºã« SLOï¼Service Level Objectiveï¼ãç´æ¥è¨å®ããèªåçã«ç£è¦ãããã¨ãå¯è½ã§ãã çæ AI æ©è½ã«ããã¦ã¯ã徿¥ã® Web ã¢ããªã±ã¼ã·ã§ã³ã®ãå¿çæéããå¯ç¨æ§ãã«å ãã¦ãAI æ©è½ç¹æã®ææ¨ã§ã® SLO è¨å®ãèãããã¾ãããã¢ããªä½æ AI æ©è½ã®å¯ç¨æ§ãä¸å®ä»¥ä¸ãç¶æãããããã¼ã¯ã³æ¶è²»éãæ³å®ã®ç¯å²å ã«åã¾ããã¨ãã£ãå ·ä½çãªç®æ¨å¤ãè¨å®ããç¶ç¶çãªå質ç£è¦ãè¡ãä»çµã¿ã®æ§ç¯ãæ¤è¨ãããã¨èãã¦ãã¾ãã
ãã¼ã¿é§ååéç¨ã¸ã®çºå±
èç©ããããã¬ã¼ã¹ãã¼ã¿ã¨ã¡ããªã¯ã¹ãçµã¿åãããåæã«ããããã¼ã¯ã³æ¶è²»ãã¿ã¼ã³ã®äºæ¸¬ãã³ã¹ãæé©åããã£ãã·ãã£ãã©ã³ãã³ã°ãªã©ãããæ¦ç¥çãªéç¨å¤æãæ¯æ´ããä»çµã¿ã®æ§ç¯ãä»å¾æ¤è¨ãã¦ããããã¨æãã¾ãã
ä»å¾ã®æ¡å¼µè¨ç»
Valkey ã¯ã©ã¤ã¢ã³ãã® OpenTelemetry è¨è£
ç¾å¨ãValkeyï¼ElastiCacheï¼ã¸ã®ã¢ã¯ã»ã¹ã«ã¤ãã¦ã¯ãã¹ãã³ãªã³ã¯ã®å®ç¾ã«å¿ è¦ãªãã¬ã¼ã¹ã³ã³ããã¹ãã®ä¿åã»åå¾å¦çã®ã¿ãæåã§è¨è£ ãã¦ãã¾ããã Valkey ã¯ã©ã¤ã¢ã³ãèªä½ã¯è¨è£ ããã¦ãããããã¬ã¼ã¹ãããã«ã表示ããã¦ããªãç¶æ³ã§ãã
ä»å¾ã¯ Valkey ã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãªãValkey GLIDEã«ç½®ãæãããã¨ã§ã OpenTelemetry ã®èªåè¨è£ ã«å¯¾å¿ããäºå®ã§ãã
Valkey GLIDE 2.0 ã¨ããå¥ã®ã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãªã§ã¯ãOpenTelemetry ãµãã¼ããçµã¿è¾¼ã¾ãã¦ããããã¬ã¼ã¹ãããã§ã®å¯è¦åãããã£ãã·ã¥ã¢ã¯ã»ã¹ãã¿ã¼ã³ã®å¯è¦åãã¨ã©ã¼è¿½è·¡æ§ã®åä¸ãæå¾ ã§ãã¾ãã
ããã«ããã LLM å¼ã³åºãããçµæåå¾ã¾ã§ã®å¦çãã§ã¼ã³å ¨ä½ããã詳細ã«ç£è¦ããéç¨å質ã®ãããªãåä¸ãç®æãã¾ãã
AI æ©è½ã®ã¦ã¼ã¶ã¼ãã£ã¼ãããã¯æ©è½ã¨ã®é£æº
å°æ¥çãªå±æã¨ãã¦ãã¦ã¼ã¶ã¼ããã®ãã£ã¼ãããã¯ï¼ãå½¹ã«ç«ã£ãããå½¹ã«ç«ããªãã£ãããªã©ï¼ãåéããæ©è½ã¨ãç¾å¨ã®ãã¬ã¼ã¹ãã¼ã¿ã飿ºãããä»çµã¿ã®æ§ç¯ãã§ããã¨è¯ãã¨èãã¦ãã¾ãã
ç¹ã«ãããã³ããæ¹åãã¢ãã«å¤æ´ãªã©ã®æ½ç广ãå®éçã«è©ä¾¡ããããã以ä¸ã®ãããªæ´»ç¨ãæ³å®ãã¦ãã¾ãã
- æ½ç广ã®å®éè©ä¾¡: ããã³ããæ¹ååå¾ã§ã®ã¦ã¼ã¶ã¼ãã£ã¼ãããã¯å¤åããã¬ã¼ã¹ ID ã¨ç´ä»ãã¦åæããæ¹å广ã客観çã«æ¸¬å®
- å質å£åã®æ©ææ¤ç¥: ãã£ã¼ãããã¯è©ä¾¡ã®ä½ä¸å¾åãæè¡ææ¨ï¼ã¬ã¤ãã³ã·ã¼ããã¼ã¯ã³æ¶è²»éãªã©ï¼ã¨çµã¿åããã¦åæããå質åé¡ã®æ ¹æ¬åå ãç¹å®
- ãã¼ã¿é§ååã®æ©è½æ¹å: å®éã®ã¦ã¼ã¶ã¼ä½é¨ãã¼ã¿ã«åºã¥ããç¶ç¶çãª çæ AI æ©è½ã®æé©å
ãã®ãããªä»çµã¿ã«ãããæè¡çãªç£è¦ææ¨ã ãã§ã¯ææ¡ã§ããªãã¦ã¼ã¶ã¼æºè¶³åº¦ã®è¦³ç¹ããã çæ AI æ©è½ã®å質åä¸ãå³ããã¨è¯ãã¨èãã¾ãã
æå¾ã«
çæ AI æè¡ã®æ¥éãªé²æ©ã«ä¼´ããéç¨ã«ãããå¯è¦³æ¸¬æ§ã®éè¦æ§ã¯ã¾ãã¾ãé«ã¾ã£ã¦ãã¾ããæ¬è¨äºã§ç´¹ä»ããææ³ããåæ§ã®èª²é¡ã«ç´é¢ããéçºã»éç¨ãã¼ã ã®åèã¨ãªããããå®å®ããçæ AI ãµã¼ãã¹ã®æä¾ã«è²¢ç®ã§ããã°å¹¸ãã§ãã
å¤§è¦æ¨¡SaaSã«ããã çæ AI æ©è½ã®éç¨ã¯ãé©åãªå¯è¦³æ¸¬æ§ã«ãã大ããªäºæ¥ä¾¡å¤ãçã¿åºãæ©ä¼ã§ãããã¾ããä»å¾ãç¶ç¶çãªæ¹åãéãã¦ãããè¯ãã¦ã¼ã¶ã¼ä½é¨ã®æä¾ãç®æãã¦ããã¾ãã
Appendix
ç´¹ä»ããããªãã£ãããã¤ãã® CloudWatch Application Signals ã®ãã¥ã¼ãç´¹ä»ãã¾ãã
ã¹ãã³ãªã³ã¯ããã¦ããå ´åã®ãã¬ã¼ã¹ã®ãã¥ã¼
ãªã³ã¯ããã¦ããã¹ãã³ãè¤æ°ããå ´åã¯æ¬¡ã®ããã«è¡¨ç¤ºããã¾ãã

Bedrock ã®å¼ã³åºãã§ã¹ããããªã³ã°ãçºçããçµæåå¾ã®ãªã¯ã¨ã¹ãã«å½±é¿ããå ´åã«ã¯ä»¥ä¸ã®ããã«ä¸ã¤ã®ãã¥ã¼ã§åå ã¨ãªã£ã Bedrock å¼ã³åºãã®ãªã¯ã¨ã¹ãã®ãã¬ã¼ã¹ã確èªãããã¨ãã§ãã¾ãã

ãã©ã³ã¶ã¯ã·ã§ã³æ¤ç´¢ã®ãã®ä»ã®æ´»ç¨ä¾
å ¨ä½ã§ã©ã®æ©è½ãã©ã®ç¨åº¦å©ç¨ããã¦ããã®ããå¯è¦åããä¾

ããã³ããæ©è½æ¯ã®ã¨ã©ã¼çºçä»¶æ°ã¨ãã®ãã¬ã¼ã¹ã®åç §

æ¡ç¨ãã¦ãã¾ãï¼
çæ AI æè¡ãæ´»ç¨ããæ©è½éçºã«åãçµãã¨ã³ã¸ãã¢ãåéä¸ã§ãï¼
ä»åç´¹ä»ãããããªå¯è¦³æ¸¬æ§ã®åä¸ããææ°ã® AI æè¡ã使ã£ããããã¯ãéçºã«èå³ã®ããæ¹ããã²ãæ°è»½ã«ã¨ã³ããªã¼ãã ããð