LLM APIãã©ãŒã«ããã¯ã«ãŒãã£ã³ã°ïŒæ¬çªé害察å¿ãã¬ã€ããã¯
LLM API ã®ãã©ãŒã«ããã¯ã«ãŒãã£ã³ã°ã¯ãæåã®å®é害ã«ééãããŸã§ã¯ç°¡åã«èãããŸãããšã©ãŒãææããã¢ãã«ãåãæ¿ããŠãããäžåºŠè©Šãã ãã§ããæ¬çªç°å¢ã§ã¯ããã®ã«ãŒã«ã 1 ã€ã®ãããã€ãé害ããéè€ããããŒã«åŒã³åºããå£ãã JSONãæ··åšããã¹ããªãŒãã³ã°åºåãæŽèµ°ãããªãã©ã€ ãã©ãã£ãã¯ããããã¯æè¡çã«ã¯æåããŠãããã®ã®è£œåå¥çŽãæºãããªããªã£ãã¬ã¹ãã³ã¹ãžãšå€ããŠããŸãããšããããŸãã
ããå®å šãªèšèšã§ã¯ããã©ãŒã«ããã¯ãããã¯ã¢ããã¢ãã«åã®äžèЧã§ã¯ãªããå¢çä»ãã¹ããŒããã·ã³ãšããŠæ±ããŸããåãªã¯ãšã¹ãã¯ã次ã®å°æ°ã®å€æãééããŸãã
- é害ã¯å詊è¡å¯èœãïŒ
- ãã®ãªã¯ãšã¹ããç¹°ãè¿ããŠãå®å šãïŒ
- 次ã®è©Šè¡ã¯åãã¿ãŒã²ããã䜿ãã¹ãããå¥ã®ã¿ãŒã²ããã䜿ãã¹ããïŒ
- ãã©ãŒã«ããã¯ã¯å¿ èŠãªå¥çŽãç¶æã§ãããïŒ
- ãã®ãªã¯ãšã¹ãã¯ãã§ã«åºåãŸãã¯å¯äœçšãçºçããããïŒ
- ãšã³ãããŒãšã³ãã®ã¬ã€ãã³ã·ãšè©Šè¡äºç®ã¯äœ¿ãåãããŠããªããïŒ
ãã®ãã¬ã€ããã¯ã§ã¯ããããã®åããããã«ããããã€ãã® LLM ã¢ããªã±ãŒã·ã§ã³åãã®ãšã©ãŒãããªã¯ã¹ãã«ãŒãã£ã³ã° ããªã·ãŒãTypeScript ã³ã³ãããŒã©ããã¹ãèšç»ãããŒã«ã¢ãŠã ãã§ãã¯ãªã¹ããžãšèœãšã蟌ã¿ãŸãã
ä¿¡é Œæ§ã®é«ã LLM API ãã©ãŒã«ããã¯ã«ãŒãã£ã³ã°ãæ¯ãã 4 ã€ã®ã¢ã¯ã·ã§ã³
ãã¹ãŠã®ãšã©ãŒãåããªãã©ã€ã«ãŒãã«å ¥ããŠã¯ãããŸãããæ¬çªçšã«ãŒã¿ãŒã«ã¯ã4 ã€ã®ç°ãªãã¢ã¯ã·ã§ã³ãå¿ èŠã§ãã
| ã¢ã¯ã·ã§ã³ | é©çšããæ¡ä»¶ | å žåäŸ |
|---|---|---|
| åãã¿ãŒã²ãããå詊è¡ãã | é害ãäžæçã«èŠããçŸåšã®ãããã€ããªã¯ãšã¹ãæéå ã«å埩ããå¯èœæ§ãããå Žå | ããããŒåã®æ¥ç¶ãªã»ããã屿çãªã¿ã€ã ã¢ãŠããçæéã®ã¬ãŒãå¶éåŸ æ© |
| åçã®ã¿ãŒã²ãããžãã§ã€ã«ãªãŒããŒãã | ãããã€ãããªãŒãžã§ã³ããããã€ããŸãã¯ã¢ã«ãŠã³ãã®å¥å šæ§ãæªãããåãã¢ãã«å¥çŽãå¥ã®å Žæã§å©çšå¯èœãªå Žå | ãªãŒãžã§ã³é害ããããã€ã¯ãªãŒã¿ã®æ¯æžãé£ç¶ãã 5xx å¿ç |
| å¥ã®ã¢ãã«ã«ãã©ãŒã«ããã¯ãã | è©äŸ¡æžã¿ã®ä»£æ¿ã¢ãã«ããã¢ããªã±ãŒã·ã§ã³ã®æäœéã®èœåãšåºåå¥çŽãç¶æã§ããå Žå | ãã©ã€ããªã¢ãã«ãå©çšäžå¯ã§ããã¹ãæžã¿ã®ã»ã«ã³ããªã¢ãã«ãåãããŒã«ãšã¹ããŒãããµããŒãããŠãã |
| 忢ããŠãšã©ãŒã衚é¢åãã | ãªã¯ãšã¹ããç¹°ãè¿ããŠã解決ãããå¯äœçšãçãå¯èœæ§ãããããŸãã¯å¥çŽãç¶æã§ããªãå Žå | èªèšŒäžæ£ã圢åŒäžæ£ã®ãªã¯ãšã¹ããæªãµããŒãã®ãã©ã¡ãŒã¿ãããªã·ãŒãããã¯ãéšåçãªã¹ããªãŒã |
ãã§ã€ã«ãªãŒããŒãšãã©ãŒã«ããã¯ã®éãã¯éèŠã§ãããã§ã€ã«ãªãŒããŒã¯è«ççãªã¢ãã«å¥çŽãç¶æãããŸãŸãã€ã³ãã©ã倿ŽããŸãããã©ãŒã«ããã¯ã¯ã¢ãã«ãŸãã¯æ©èœéå±€ã倿ŽããŸããéåžžãããäœãªã¹ã¯ãªã®ã¯ãã§ã€ã«ãªãŒããŒã§ãã
ãšã€ãªã¢ã¹ããã«ã¹ã¹ã³ã¢ãªã³ã°ã課éãå¯èŠ³æž¬æ§ãå«ãåºããªã¯ãšã¹ããã¹èšèšãå¿ èŠãªå Žåã¯ããŸã AI API ã²ãŒããŠã§ã€ ã¢ãŒããã¯ãã£ã¬ã€ã ãåç §ããŠãã ããããã®èšäºã¯ãã¿ãŒã²ãããéžæãããåŸã«å®è¡ãããã³ã³ãããŒã©ã«çŠç¹ãåœãŠãŠããŸãã
ãªãã©ã€ã³ãŒããæžãåã«ããšã©ãŒããã¢ã¯ã·ã§ã³ãžã®ãããªã¯ã¹ãäœæãã
ãããã€ãã® SDK ã¯ç°ãªãäŸå€ã¯ã©ã¹ãã¬ã¹ãã³ã¹æ¬æãå ¬éããŸãããã«ãŒã¿ãŒã¯ããããå°ããªå éšåé¡äœç³»ã«æ£èŠåãã¹ãã§ãã
| æ£èŠåãããé害 | åã察象ãå詊è¡ïŒ | åçã®ãã§ã€ã«ãªãŒããŒïŒ | ã¯ãã¹ã¢ãã«ã®ãã©ãŒã«ããã¯ïŒ | åè |
|---|---|---|---|---|
| ãªã¯ãšã¹ãåçåã®æ¥ç¶å€±æ | ã¯ãã1å | ã¯ã | å Žåã«ãã | 1ã€ã®ãšã³ãããŒãšã³ãã®ãããã©ã€ã³å ã«åãã |
| ã¬ã¹ãã³ã¹ããããŒåã®ã¿ã€ã ã¢ãŠã | å Žåã«ãã | ã¯ã | å Žåã«ãã | åéããŠå®å šãªãªã¯ãšã¹ãã®ã¿ç¹°ãè¿ã |
429 ã¬ãŒãå¶é |
äžéä»ãé å»¶ã®åŸ | ã¯ã | å Žåã«ãã | å¯èœã§ããã°ãµãŒããŒã®æç€ºã«åŸãããªãã©ã€ã¹ããŒã ãèµ·ãããªã |
ãããã€ããŒã®5xxãŸãã¯éè² è· |
å€ããŠã1å | ã¯ã | å Žåã«ãã | å®çŸ©ãã倱æãããå€ãè¶ ããããµãŒããããéã |
| èªèšŒãŸãã¯æš©éãšã©ãŒ | ããã | ããã | ããã | èªèšŒæ å ±ãŸãã¯ããªã·ãŒãä¿®æ£ãããã¢ãã«åãæ¿ãã§ã¯è§£æ±ºããªã |
| äžæ£ãªãªã¯ãšã¹ããŸãã¯æªå¯Ÿå¿ãã©ã¡ãŒã¿ | ããã | ããã | ããã | ã¯ã©ã€ã¢ã³ãå¥çŽãä¿®æ£ãã |
| ã³ã³ããã¹ãé·ã®è¶ é | ç²ç®çãªå詊è¡ã¯ããªã | ããã | æç€ºçãªé©å¿ãããå Žåã®ã¿ | åãè©°ããèŠçŽããŸãã¯ãã倧ããªã³ã³ããã¹ãã®ã«ãŒãã«ãããªã¯ãšã¹ããå€ãã |
| å®å šæ§ãŸãã¯ããªã·ãŒã«ããæåŠ | ç²ç®çãªå詊è¡ã¯ããªã | ããã | éåžžã¯ããã | ããªã·ãŒå€æãåé¿ããããã«ãããã€ããŒãåãæ¿ããã®ã¯ãä¿¡é Œæ§æŠç¥ã§ã¯ãªã |
| åºåã¹ããŒãã®æ€èšŒå€±æ | 修埩ã§ããã°å Žåã«ãã | ããã | è©äŸ¡æžã¿ã®å Žåã®ã¿ | ã¹ããŒã修埩ãšãã©ã³ã¹ããŒãã®å詊è¡ã¯åããŠæ±ã |
| æåã®ããŒã¯ã³åã«ã¹ããªãŒã ã倱æ | å Žåã«ãã | ã¯ã | å Žåã«ãã | ãŸã ãŠãŒã¶ãŒã«èŠããåºåã¯ååšããªã |
| åºåéå§åŸã«ã¹ããªãŒã ã倱æ | èªååãæ¿ããªã | ããã | èªååãæ¿ããªã | 2ã€ã®ã¢ãã«å¿çãã€ãªãåãããªã |
| ããŒã«åŒã³åºãããã§ã«å®è¡æžã¿ã®å¯èœæ§ããã | ç²ç®çãªå詊è¡ã¯ããªã | ããã | ç²ç®çãªå詊è¡ã¯ããªã | åªçæ§ããŒãŸãã¯ããŒã«ã¬ãã«ã®éè€æé€ãå¿ é ã«ãã |
å ¬åŒã®ãããã€ããŒææžã¯ããªãæ£èŠåãå¿ èŠããè£ä»ããŠããŸããAnthropic ã¯ãã¬ãŒãå¶éãAPIãéè² è·ã®åãšã©ãŒãåºå¥ããŠææžåããŠãããã¹ããªãŒãã³ã°èŠæ±ã¯ååã®æåå¿çã®åŸã§ã倱æããããšè¿°ã¹ãŠããŸããOpenAI ãåæ§ã«ãç¡å¹ãªãªã¯ãšã¹ããã¬ãŒãå¶éããµãŒããŒåŽã®å€±æãåããŠããŸããã¢ããªã±ãŒã·ã§ã³ã¯ããããã€ããŒåºæã®ã·ã°ãã«ãããžãã¹ããžãã¯å šäœã«ãããã€ããŒåãåã蟌ãã®ã§ã¯ãªããå®å®ããå éšå€æã«å€æããã¹ãã§ãã
ãªã¯ãšã¹ãå šäœã«å¯Ÿã㊠1 ã€ã®ãªãã©ã€äºç®ãé©çšãã
å詊è¡ã¯ãHTTP ã¯ã©ã€ã¢ã³ãããããã€ã㌠SDKãã²ãŒããŠã§ã€ãããã¯ã°ã©ãŠã³ããžã§ããã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ãªã©ãè€æ°ã®å Žæã§åæã«ååšããã¡ã§ããåã¬ã€ã€ãŒã 3 åãã€è©Šè¡ãããšã1 åã®ãŠãŒã¶ãŒæäœããããŒã ã®æå³ãã¯ããã«è¶ ããæ°ã®äžæµåŒã³åºãã«å¢å¹ ãããå¯èœæ§ããããŸãã
ããå®å šãªãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ãã
- LLM ã®å詊è¡ãšãã©ãŒã«ããã¯ã管çãã 1 ã€ã®ã¬ã€ã€ãŒ ãéžã¶ã
- ãŠãŒã¶ãŒèŠæ±ãŸãã¯ãžã§ãã«å¯Ÿã㊠1 ã€ã®ãšã³ãããŒãšã³ãã®æéãèšå®ããã
- äžæµãžã®æå€§è©Šè¡åæ°ãèšå®ããã
- ãã©ãŒã«ããã¯å ã®ããã«æéã®äžéšã確ä¿ããã
- äžæçãªé害ã«å¯ŸããŠã¯ããžãã¿ãŒä»ãã®ææ°ããã¯ãªãã䜿çšããã
- æ®ãæéãããã 1 åã®æå³ã®ãã詊è¡ãæ¯ããããªãå Žåã¯åæ¢ããã
AWS ã®ã¿ã€ã ã¢ãŠããå詊è¡ãããã¯ãªãããžãã¿ãŒã«é¢ããã¬ã€ãã³ã¹ã§ã¯ãå詊è¡ãã©ã®ããã«éè² è·ãå¢å¹ ããããã説æããã峿ã®ç¹°ãè¿ãã§ã¯ãªããäžéä»ãã®åäœãæšå¥šãããŠããŸããåãååã¯ã¢ãã« API ã«ãåœãŠã¯ãŸããè² è·ã®é«ããããã€ããŒã»ã©åæçãªå詊è¡ãã©ãã£ãã¯ãåžåãã«ãããªããŸãã
å®çšçãªã€ã³ã¿ã©ã¯ãã£ãäºç®ã¯ãããŒãã³ãŒããããã¹ãªãŒãã§ã¯ãªãããªã·ãŒãšããŠè¡šçŸãããšããã§ãããã
type RetryBudget = {
deadlineMs: number;
maxAttempts: number;
maxSameTargetAttempts: number;
reserveForFallbackMs: number;
};
å ·äœçãªå€ã¯è£œåã«ãã£ãŠç°ãªããŸãããã£ãã UIãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãããããè©äŸ¡ãéåæã®åç»ã¯ãŒã¯ãããŒã§ãåãäºç®ãå ±æãã¹ãã§ã¯ãããŸããã
æ¢ç¥ã®é害å ãžã®ã«ãŒãã£ã³ã°ã忢ããããã«ãµãŒããããã¬ãŒã«ãŒã䜿ã
ãµãŒããããã¬ãŒã«ãŒã¯ãæ°ãããªã¯ãšã¹ããæ¯ååãé害ãåçºèŠããã®ãé²ããŸãã
æšæºçãªç¶æ ã¯æ¬¡ã®ãšããã§ãã
- Closed: ã«ãŒã¿ãŒã倱æãšã¬ã€ãã³ã·ãèšæž¬ããªããããªã¯ãšã¹ãã¯éåžžã©ããæµããã
- Open: çŽè¿ã®æåããããå€ãè¶ ããããããã®ã¿ãŒã²ããã¯äžæçã«äžé©æ Œã«ãªãã
- Half-open: å°æ°ã®ãããŒããªã¯ãšã¹ãã§ããã®ã¿ãŒã²ãããå埩ãããã©ããããã¹ãããã
Azure ã®ãµãŒããããã¬ãŒã«ãŒãã¿ãŒã³ã§ã¯ããã® Closed/Open/Half-open ã®ã©ã€ããµã€ã¯ã«ã説æãããŠããŸããLLM ã«ãŒãã£ã³ã°ã§ã¯ããã¬ãŒã«ãŒã®ããŒã¯éå®³ç®æãåãåããããã»ã©å ·äœçã§ããå¿ èŠããããŸãã圹ç«ã€æ¬¡å ã«ã¯ããããã€ããŒãã¢ãã«ããªãŒãžã§ã³ããããã€ã¡ã³ããã¢ã«ãŠã³ããæ©èœãªã©ããããŸããããã¹ãè£å®ãããã€ã¡ã³ãã¯æ£åžžã§ããããŒã«åŒã³åºãã«ãŒãããªãŒãžã§ã³ãšã³ããã€ã³ãã倱æããŠããå ŽåããããŸãã
ãã¹ãŠã®ã¯ã©ã€ã¢ã³ããšã©ãŒã§ãµãŒããããéããªãããã«ããŠãã ãããèªèšŒç¡å¹ããªã¯ãšã¹ã圢åŒäžæ£ãã³ã³ããã¹ããªãŒããŒãããŒãããªã·ãŒæåŠã¯ãéåžžã¯ãããã€ããŒã®å¥å šæ§ããããªã¯ãšã¹ãå 容ã瀺ããŠããŸãããã¬ãŒã«ãŒã¯ãæ¥ç¶å€±æãã¿ã€ã ã¢ãŠããéè² è·ããµãŒããŒãšã©ãŒãªã©ã®äžæçãªã€ã³ãã©ã·ã°ãã«ã«äž»ã«åå¿ãã¹ãã§ãã
ã¢ãã«éã§æ©èœå¥çŽãç¶æãã
ãã©ãŒã«ããã¯ã¢ãã«ã¯ãOpenAI äºæã®ãªã¯ãšã¹ããåãä»ãããšããã ãã§ã¯å®å šã§ã¯ãããŸãããåã«ãŒããšã€ãªã¢ã¹ã«å¯ŸããŠæå°å¥çŽãå®çŸ©ããŠãã ããã
route: support-agent-v3
requires:
modalities: [text]
streaming: true
tools: true
parallel_tool_calls: false
structured_output: json_schema
context_window_min: 64000
max_output_tokens_min: 4000
quality_gates:
task_success_rate_min: 0.94
schema_valid_rate_min: 0.995
policy:
same_model_failover_first: true
cross_model_fallback_allowed: true
ã¿ãŒã²ããããã©ãŒã«ããã¯ã»ããã«è¿œå ããåã«ãå°ãªããšã次ããã¹ãããŠãã ããã
- ãµããŒãããããªã¯ãšã¹ããã©ã¡ãŒã¿
- ããŒã«å®çŸ©ãšããŒã«åŒã³åºãã®åäœ
- æ§é ååºåã®åŠ¥åœæ§
- ã¹ããªãŒãã³ã°ã€ãã³ãã®åœ¢ç¶
- ã³ã³ããã¹ããšåºåã®äžé
- ã¢ããªã±ãŒã·ã§ã³ã«é©ããå®å šæ§ã®åäœ
- ã³ã¹ãå¶åŸ¡ã§äœ¿çšãããããŒã¯ã³èšæž¬ãã£ãŒã«ã
- 代衚çãªããã³ããã§ã®ã¬ã€ãã³ã·ãŒãšå質
ãã®å¥çŽãã¡ãŒã¹ãã®ã¢ãããŒãã¯ãã¢ããªãã£ããŸããã¯ãŒã¯ãããŒã§ã¯ç¹ã«éèŠã§ãããã«ãã¢ãŒãã«ãšãŒãžã§ã³ãã«ãŒãã£ã³ã°ã¬ã€ãã§ã¯ãããã¹ããç»åãé³å£°ãåç»ã®ã«ãŒãã«å¯Ÿãã远å ãã§ãã¯ã解説ããŠããŸãã
TypeScript ãã©ãŒã«ãã㯠ã³ã³ãããŒã©ãŒ
以äžã®äŸã¯ããããŠãããã€ããŒã«äŸåããªã圢ã«ããŠããŸããã«ãŒãã£ã³ã°å±€ãèŠãåã«ãäžæµã®ã¢ããã¿ãŒããšã©ãŒãšã¬ã¹ãã³ã¹ãæ£èŠåããŠããããšãåæãšããŠããŸãã
type FailureKind =
| "connect"
| "timeout"
| "rate_limit"
| "overloaded"
| "server_error"
| "invalid_request"
| "auth"
| "policy"
| "context_overflow"
| "partial_stream"
| "unknown";
type Target = {
id: string;
contractId: string;
healthy: boolean;
circuit: "closed" | "open" | "half_open";
};
type RequestState = {
attempt: number;
sameTargetAttempts: number;
deadlineAt: number;
outputStarted: boolean;
sideEffectsPossible: boolean;
};
function canReplay(state: RequestState): boolean {
return !state.outputStarted && !state.sideEffectsPossible;
}
function isTransient(kind: FailureKind): boolean {
return [
"connect",
"timeout",
"rate_limit",
"overloaded",
"server_error",
].includes(kind);
}
function chooseNextAction(
kind: FailureKind,
state: RequestState,
current: Target,
equivalent: Target | undefined,
fallback: Target | undefined,
) {
if (!canReplay(state) || kind === "partial_stream") return { type: "stop" };
if (!isTransient(kind)) return { type: "stop" };
if (state.attempt >= 3 || Date.now() >= state.deadlineAt) {
return { type: "stop" };
}
if (
state.sameTargetAttempts < 1 &&
current.circuit === "closed" &&
current.healthy
) {
return { type: "retry", target: current };
}
if (equivalent?.healthy && equivalent.circuit !== "open") {
return { type: "failover", target: equivalent };
}
if (
fallback?.healthy &&
fallback.circuit !== "open" &&
fallback.contractId === current.contractId
) {
return { type: "fallback", target: fallback };
}
return { type: "stop" };
}
æ¬çªã³ãŒãã«ã¯ããžãã¿ãŒä»ãé å»¶ããã£ã³ã»ã«ã®äŒæããªã¯ãšã¹ãIDããµãŒããããã¬ãŒã«ãŒã®æŽæ°ããã¬ã¡ããªãŒãã¢ããã¿ãŒåºæã®ãšã©ãŒè§£æãå¿ èŠã§ããéèŠãªã®ã¯ãå¥ã®ã¿ãŒã²ãããéžã¶åã«ãåå®è¡ã®å®å šæ§ãšå¥çŽã®äºææ§ããã§ãã¯ããããšã§ãã
ã¹ããªãŒãã³ã° ãã©ãŒã«ããã¯ãå¥ã®ãããã³ã«ãšããŠæ±ã
ã¹ããªãŒãã³ã°ã«ã¯æç¢ºãªå¢çããããŸããã³ã³ãã³ããã¯ã©ã€ã¢ã³ãã«å±ããæç¹ã§ãã²ãŒããŠã§ã€ã¯ãã®è©Šè¡ããªãã£ããµãã¯ã§ããŸããã
äžæµãæåã®ã€ãã³ãã転éããåã«å€±æããå Žåã§ããå詊è¡ããã©ãŒã«ããã¯ã¯ãŸã ééçã«æ±ããå¯èœæ§ããããŸããæåã®ããŒã¯ã³ãtool deltaãç»åã€ãã³ãããŸãã¯é³å£°ãã£ã³ã¯ãé ä¿¡ãããåŸã«èªåã¢ãã«åãæ¿ããè¡ããšãäºææ§ã®ãªã2ã€ã®ã¬ã¹ãã³ã¹ãæ··åšããããªã¹ã¯ããããŸãã
次ã®ããããã®æç€ºçãªæŠç¥ã䜿çšããŠãã ãã:
- ã¹ããªãŒã ãæç¢ºã«å€±æãããã ãªã¯ãšã¹ãIDä»ãã®å®å®ãããšã©ãŒã€ãã³ããè¿ããã¯ã©ã€ã¢ã³ãã«å詊è¡ãä¿ããŸãã
- è§£æŸåã«ãããã¡ããã çãæ§é åã¬ã¹ãã³ã¹ã§ã¯ãäžæµãžéä¿¡ããåã«å®å šãªçµæãæ€èšŒããŸããããã¯ååããŒã¯ã³ãŸã§ã®æéãç ç²ã«ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®åéãå®è£ ããã 以åã®ã¬ã¹ãã³ã¹ãäžæãããããšãæç€ºããã³ã³ããã¹ãã§æ°ããã¿ãŒã³ãéå§ããŸããåããã€ãã¹ããªãŒã ã®ç¶ç¶ã§ã¯ãªããæ°ããã¢ãã«çæãšããŠæ±ããŸãã
2ã€ã®ã¢ãã«ã®åºåãé»ã£ãŠé£çµããªãã§ãã ããã
ããŒã«åŒã³åºãã®ä¿¡é Œæ§ãšã¢ãã«åŒã³åºãã®ä¿¡é Œæ§ãåé¢ãã
LLMãªã¯ãšã¹ãã¯åå®è¡å¯èœã§ããéžæãããããŒã«ã¯ããã§ãªãå ŽåããããŸããæ¯æããã¡ãŒã«ããããã€ãããŒã¿ããŒã¹æžã蟌ã¿ããã±ããäœæã¯ãã¢ããªã±ãŒã·ã§ã³ãçµæãèšé²ããåã«ã¢ãã«æ¥ç¶ã倱æããŠãæåãåŸãŸãã
æžã蟌ã¿ç³»ããŒã«ã¯æ¬¡ã®æ¹æ³ã§ä¿è·ããŠãã ãã:
- ãããã€ããŒã®è©Šè¡ã§ã¯ãªãããŠãŒã¶ãŒæäœããæŽŸçããåªçæ§ããŒ
- æ°žç¶çãªããŒã«å®è¡ã¬ã³ãŒã
- ããŒã«å¢çã§ã®éè€æé€
plannedãstartedãsucceededãunknownã®æç¢ºãªåºå¥- 圱é¿ã®å€§ããäžç¢ºå®ãªå¯äœçšã«å¯Ÿãã人æã¬ãã¥ãŒ
å¯äœçšã®å¯èœæ§ãããããã®çµæãäžæãªå Žåã¯ãèªåãã©ãŒã«ããã¯ã忢ããŠãã ããããŸãããŒã«ç¶æ ãç §åããŸãã
ãã©ãŒã«ããã¯ããããã¯ãã®ææãšããŠç£èŠãã
ãããã€ããŒã®ãšã©ãŒçãäœãããšã¯ããã©ãŒã«ããã¯ãæ©èœããŠãã蚌æ ã«ã¯ãªããŸãããã«ãŒãã£ã³ã°å šäœã®çµæã远跡ããŠãã ããã
| Metric | What it reveals |
|---|---|
| Primary-target success rate | ããŒã¹ã©ã€ã³ãšãªããããã€ããŒãŸãã¯ãããã€ã®å¥å šæ§ |
| Retry recovery rate | åäžã¿ãŒã²ãããžã®å詊è¡ãæçšãã©ãã |
| Equivalent failover recovery rate | åé·ãªãããã€ãŸãã¯ãªãŒãžã§ã³ã®äŸ¡å€ |
| Cross-model fallback recovery rate | 代æ¿ã¢ãã«ã»ããã®äŸ¡å€ |
| Contract rejection rate | åè£ã¿ãŒã²ããã驿 Œæ§ãã§ãã¯ã«å€±æããé »åºŠ |
| Post-fallback schema validity | ãæåãããã¬ã¹ãã³ã¹ãåŒãç¶ãå©çšå¯èœãã©ãã |
| Post-fallback task success | ãŠãŒã¶ãŒãæå³ããäœæ¥ãæåŸãŸã§å®äºã§ãããã©ãã |
| Added fallback latency | ãŠãŒã¶ãŒãæ¯æãä¿¡é Œæ§ã³ã¹ã |
| Fallback cost delta | å埩ãã¹ã«ããè«æ±ãžã®åœ±é¿ |
| Circuit open duration and probe success | ãã¬ãŒã«ãŒã®ãããå€ãšå埩ã¿ã€ãã³ã°ã劥åœãã©ãã |
å詊è¡ã«ã€ããŠã«ãŒãçç±ãèšé²ããŠãã ãã: éžæãããã¿ãŒã²ãããæ£èŠåããããšã©ãŒãå詊è¡é å»¶ããµãŒãããç¶æ ããã©ãŒã«ããã¯çç±ããªã¯ãšã¹ãã®æ®ãæéãæçµçµæã補åã®ããŒã¿ããªã·ãŒã§æç€ºçã«èš±å¯ãããŠããªãéããæ©å¯æ§ã®ããããã³ãããåºåã®ãã°ã¯é¿ããŠãã ããã
èªåãã©ãŒã«ããã¯ãæå¹ã«ããåã«å€±æçµè·¯ããã¹ããã
ã¹ããŒãžã³ã°ç°å¢ã§éå®³æ³šå ¥ãå®è¡ãããã®åŸãæ¬çªã§ããªã·ãŒãã«ããªã¢ãªãªãŒã¹ããŠãã ããã
ãã©ã³ã¹ããŒãããã³ãããã€ããŒãã¹ã
- å¿çããããŒã®åã«æ¥ç¶ãåæããã
- ãªãã©ã€ã®æç€ºãããå Žåãšãªãå Žåã®ãç¹°ãè¿ãã¬ãŒãå¶éãè¿ãã
- éè² è·ãšãµãŒããŒãšã©ãŒãã·ãã¥ã¬ãŒãããã
- ãªã¯ãšã¹ãã®ãããã©ã€ã³ãã»ãŒäœ¿ãåããããŸã§ããã©ã€ããªãé å»¶ãããã
- 察象ã®ãµãŒããããéãããã©ãã£ãã¯ãå©çšå¯èœãªã«ãŒãã«ç§»åããããšã確èªããã
- 察象ãå埩ãããããŒããªãŒãã³ã®ãããŒãããã©ãã£ãã¯ãæ©ãããæ®µéã§å šé¢åŸ©åž°ãããªãããšã確èªããã
åèšè©Šéš
- ãã©ãŒã«ããã¯ã¢ããã¿ãŒããå¿ é ããŒã«ãåé€ããã
- ç¡å¹ãªæ§é ååºåãè¿ãã
- ã¹ããªãŒãã³ã°ã€ãã³ãã®åœ¢ç¶ã倿Žããã
- ã³ã³ããã¹ããŸãã¯åºåã®å¶éãè¶ ããã
- åºå®ã®è©äŸ¡ã»ããã§ãã©ãŒã«ããã¯åè³ªãæ¯èŒããã
ãªãã¬ã€å®å šæ§ãã¹ã
- æåã®ã¹ããªãŒãã³ã°ã€ãã³ãã®ååŸã§å€±æãããã
- æžã蟌ã¿åŽããŒã«ãéå§ãããåŸã«å€±æãããã
- åãåªçæ§ããŒãç¹°ãè¿ãã
- ãã©ãŒã«ããã¯è©Šè¡ãä¿çäžã®éã«ã¯ã©ã€ã¢ã³ããªã¯ãšã¹ãããã£ã³ã»ã«ããã
ãã®ãã¹ãã¯ãã«ãŒã¿ãŒãæåŸ ã©ããã®ã¢ã¯ã·ã§ã³ãéžã³ããã®çç±ãèšé²ããå Žåã«ã®ã¿åæ ŒããŸãã
Flatkeyã®äœçœ®ã¥ã
Flatkeyã¯ããµããŒã察象ã¢ãã«åãã«1ã€ã®APIããŒãšOpenAIäºæã®ããŒã¹URLãæäŸããå©çšç¶æ³ãšè«æ±ãäžå 管çããŸããããã«ããããã«ãã¢ãã«ã¢ã¯ã»ã¹ãšã«ãŒãã£ã³ã°ã®ããã®å®å®ããçµ±åå¢çãçãŸããŸãã
ã¢ããªã±ãŒã·ã§ã³ããŒã ã¯ããã®ãã¬ã€ããã¯ã§èª¬æããã«ãŒãå¥çŽãåŒãç¶ãææããå¿ èŠããããŸããã€ãŸããã©ã®ãšã©ãŒãå詊è¡å¯èœããã©ã®ã¿ãŒã²ãããåçããã¯ãã¹ã¢ãã«ãã©ãŒã«ããã¯ãèš±å¯ããããããŒã«ãã©ã®ããã«éè€æé€ããããå埩ããå¿çãæºããã¹ãå質ãããå€ã¯äœããã§ãã
æçã®çµ±åæé ã«ã¯ãFlatkey integration starter ã䜿çšããŠãã ãããæ¢åã®ã¯ã©ã€ã¢ã³ããç§»è¡ããå Žåã¯ãOpenAI-compatible API gateway checklist ã«ããŒã¹URLããã©ã¡ãŒã¿ãã¹ããªãŒãã³ã°ããšã©ãŒåœ¢ç¶ã®æ€èšŒããŸãšããããŠããŸãã
æ¬çªå±éãã§ãã¯ãªã¹ã
- ãããã€ããŒã®ãšã©ãŒãå®å®ããå éšåé¡äœç³»ã«æ£èŠåããã
- å詊è¡ãåçã®ãã§ã€ã«ãªãŒããŒãã¯ãã¹ã¢ãã«ãã©ãŒã«ããã¯ã忢ã¢ã¯ã·ã§ã³ãå®çŸ©ããã
- å詊è¡äºç®ã®ææè ã1ã€ã®ã³ã³ããŒãã³ãã«å²ãåœãŠãã
- åäžã®ãšã³ãããŒãšã³ãã®ãããã©ã€ã³ãšæå€§è©Šè¡åæ°ã匷å¶ããã
- äžæçãªå€±æã«å¯ŸããŠãžãã¿ãŒä»ãææ°ããã¯ãªãã远å ããã
- ãµãŒããããã¬ãŒã«ãŒã¯ãæå°éã§æçšãªé害ãã¡ã€ã³åäœã§ããŒä»ãããã
- åã«ãŒããšã€ãªã¢ã¹ã«å¯ŸããŠããŒãžã§ã³ç®¡çãããæ©èœå¥çŽãå®çŸ©ããã
- éšååºåãéå§ãããåŸã®èªååãæ¿ãããããã¯ããã
- æžã蟌ã¿åŽããŒã«ã«å¯Ÿããåªçæ§ãšå調æŽã远å ããã
- ã«ãŒãçç±ãšæçµçãªã¿ã¹ã¯çµæãèšé²ããã
- ãã©ã³ã¹ããŒããéè² è·ãå¥çŽãã¹ããªãŒãã³ã°ããµã€ããšãã§ã¯ãã®å€±æãæ³šå ¥ããã
- ã¯ãã¹ã¢ãã«ãã©ãŒã«ããã¯ãæå¹ã«ããåã«ãåçã®ãã§ã€ã«ãªãŒããŒãã«ããªã¢ãªãªãŒã¹ããã
- åã¿ãŒã²ãããšãã©ãŒã«ããã¯ããªã·ãŒã«ãã«ã¹ã€ããã远å ããã
ãããã質å
LLM APIã®ãã©ãŒã«ããã¯ã«ãŒãã£ã³ã°ãšã¯äœã§ããïŒ
LLM APIã®ãã©ãŒã«ããã¯ã«ãŒãã£ã³ã°ã¯ãåªå ã«ãŒãããªã¯ãšã¹ããå®äºã§ããªãå Žåã«ãå¥ã®å©çšå¯èœãªã¢ãã«ãŸãã¯ãããã€ããŒãéžæããä¿¡é Œæ§ããªã·ãŒã§ããå®å šãªãã©ãŒã«ããã¯ã§ã¯ãåãæ¿ãåã«ãªãã¬ã€å®å šæ§ãæ©èœäºææ§ããµãŒãããã®å¥å šæ§ãã¬ã€ãã³ã·äºç®ãåºåç¶æ ã確èªããŸãã
LLMã®ãªãã©ã€ãšãã©ãŒã«ããã¯ã®éãã¯äœã§ããïŒ
ãªãã©ã€ã¯åãã¿ãŒã²ããã«å¯ŸããŠãªã¯ãšã¹ããç¹°ãè¿ããŸãããã§ã€ã«ãªãŒããŒã¯ãè«ççãªã¢ãã«å¥çŽãç¶æããªããåçã®ã€ã³ãã©ã«ç§»è¡ããŸããã¯ãã¹ã¢ãã«ã®ãã©ãŒã«ããã¯ã¯ã¢ãã«ã倿Žããããããã匷åãªäºææ§ãã¹ããšå質ãã¹ããå¿ èŠã«ãªããŸãã
LLM API 㯠429 ã 5xx ãšã©ãŒããšã«å¿ ããªãã©ã€ãã¹ãã§ãã?
ãããããªãã©ã€ã¯ããšã³ãããŒãšã³ãã®ãããã©ã€ã³ã詊è¡åæ°ã®äžéãããã¯ãªãããªã·ãŒããµãŒãããç¶æ ãåå®è¡å®å šæ§ãã§ãã¯ã«ãã£ãŠå¶éãããã¹ãã§ãã察象ãäžå¥å šãªå Žåã¯ãç¹°ãè¿ãåŒã³åºããããåçã®ãã§ã€ã«ãªãŒããŒã®ã»ããé©ããŠããããšããããŸãã
LLM ã«ãŒã¿ãŒã¯ã¹ããªãŒã äžã«ã¢ãã«ãåãæ¿ããããŸãã?
åºåãã¯ã©ã€ã¢ã³ãã«å±ããåŸã«ãééçã«åãæ¿ããããšã¯ã§ããŸãããå®å šãªããã©ã«ãã¯ãã¹ããªãŒã ãæç¢ºã«å€±æãããããæ°ããã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ã¿ãŒã³ãéå§ããããšã§ããç°ãªãã¢ãã«ã®éšååºåãé£çµãããšãã¬ã¹ãã³ã¹å¥çŽãå£ããå¯èœæ§ããããŸãã
ã¯ãã¹ã¢ãã«ã®ãã©ãŒã«ããã¯ã¯ãã€ç¡å¹åãã¹ãã§ãã?
代æ¿ã¢ãã«ããå¿ èŠãªããŒã«ãæ§é ååºåãã³ã³ããã¹ãäžéãå®å šæ§ã®æåãåè³ªåºæºããŸãã¯å¯äœçšã®ä¿èšŒãç¶æã§ããªãå Žåã¯ç¡å¹åããŠãã ããããŸããéšååºååŸãããŒã«å®è¡ã®ç¢ºå®æ§ããªãå Žåã®èªååå®è¡ãç¡å¹åããŠãã ããã
LLM ãªã¯ãšã¹ãã¯äœåãã©ãŒã«ããã¯ã詊ãã¹ãã§ãã?
æ®éçãªåæ°ã¯ãããŸããã補åã®ã¬ã€ãã³ã·äºç®ãšãã¹ãçµæã«åããæå°ã®äžéä»ã詊è¡åæ°ã䜿çšããŠãã ãããã«ãŒã¿ãŒã¯ãæ®ãã®ãããã©ã€ã³ã§æ¬¡ã®æçšãªè©Šè¡ãæ¯ããããªããªã£ãæç¹ã§åæ¢ãã¹ãã§ãã
ä¿¡é Œã§ãããã©ãŒã«ããã¯ã¯ããã¹ãŠã詊ããããšã§ã¯ãããŸãããæ¬¡ã®ã¢ã¯ã·ã§ã³ãæç¢ºã«ããäºææ§ããããåå®è¡å®å šã§ã芳枬å¯èœã§ã忢ããããããããšã§ãã



