OpenAI èšèªã¢ãã«ã§æ¥æ¬èªãæ±ãéã®ããŒã¯ã³æ°æšå®ææš
ã¯ããã«
OpenAI ã®èšèªã¢ãã«ã§æ¥æ¬èªãæ±ãéã«ãã³ã¹ãæŠç®ãªã©ã®ç®çã§åŠçãããããŒã¯ã³æ°ãæšå®ãããå ŽåããããŸãããè±èªä»¥å€ã®èšèªã«é¢ããŠã¯ OpenAI ã®ããã¥ã¡ã³ããèšäºã«å
·äœçãªææšãèšèŒãããŠããããå人ã®çµéšåã«åºã¥ããŠæšå®ãããããªãç¶æ³ã§ããã
ããã§ãå®éã©ã®ãããã«ãªãã®ããããçšåºŠå€§ããªããŒã¿ã»ããã䜿ã£ãŠææšãèšç®ããŠã¿ãŸããã
How words are split into tokens is also language-dependent. For example âCómo estásâ (âHow are youâ in Spanish) contains 5 tokens (for 10 chars). The higher token-to-char ratio can make it more expensive to implement the API for languages other than English.
tl;dr
çµæã¯ãã¡ãã
宿ž¬
1. ããŒã¿ã»ãã
Wiki-40B ã® æ¥æ¬èªããŒã¿ã»ãã ã䜿ããŸããããã®äžã«ã¯ã2020 幎 ããŒã¿ã»ããå
¬éæç¹ã§ã® 828,236 ã® Wikipedia æ¥æ¬èªèšäºãå«ãŸããŠããŸããããŒã¿ã»ãã㯠trainãtestãvalidation ã® 3 ã€ã®ã¹ããªããã«åå²ãããŠããŸãããå
šãŠã®ã¹ããªããã䜿ããŸããã
2. ååŠç
ããŒã¿ã»ããã«ã¯ç¹æ®ãªããŒã«ãŒæååãå«ãŸãããããããããåãé€ããŸããã
-
_START_ARTICLE_(èšäºã®ã¿ã€ãã«) -
_START_SECTION_(ã»ã¯ã·ã§ã³ã®éå§) -
_START_PARAGRAPH_(段èœã®éå§) -
_NEWLINE_(段èœå ã®æ¹è¡)
以äžã¯ãå°çãã®äŸã§ããåè¿°ã®ãšããå 容㯠Wiki-40B ããŒã¿ã»ãããå ¬éãããåœæã®ãã®ã§ãã®ã§ãçŸåšã®èšäºãšã¯ç°ãªãå¯èœæ§ããããŸãã
çããŒã¿
_START_ARTICLE_
å°ç
_START_SECTION_
æŠèŠ
_START_PARAGRAPH_
å°çãšã¯æã
人é¡ãäœãã§ãã倩äœãã€ãŸãæã
ã®è¶³å
ã«ãã倩äœã®ããšã§ããããå°ããšããåã»æŠå¿µãšãçããšããåã»æŠå¿µã§ããã衚çŸããŠãããè±èª (Earth) ãã©ãã³èª (Tellus, Terra) ãªã©ä»ã®èšèªã§ãå€ãã¯ã倧å°ãã衚ãèªãåœãŠãããŠãããåèªãšããŠã®ãå°çãã¯äžåœèªç±æ¥ã§ãããäžåœèªã®ãå°çãã¯ææã®è¥¿åŠæ±æŒžæã«åããŠèŠãããã€ã¿ãªã¢äººå®£æåž«ãããªã»ãªããïŒ1552幎-1610幎ïŒã®ãå€èŒ¿äžåœå
šå³ãããã®åèªã䜿çšãããæåæã®è³æã§ãããæž
æåŸæã«è¥¿æŽã®è¿ä»£ç§åŠãäžåœã«å
¥ã£ãŠãããšã倧å°çäœèª¬ãäžåœã®äººã
ã«ãã£ãŠæ¬¡ç¬¬ã«åãå
¥ããããããã«ãªãããå°çãïŒãŸãã¯å°æ¯¬ïŒãšããåèªãåºã䜿ãããããã«ãªã£ããåœæã®æ°èç³å ±ã®åµåå·ã«ã¯ãå°ç説ãã«é¢ããæç« ãæ²èŒãããŠãããæ¥æ¬ã«ã¯å¹æ«ããææ²»æã«äžåœèªããåå
¥ãããå®çããã_NEWLINE_å°çã¯å€ªéœç³»ã®ææã®äžã€ã§ããããã®åœ¢ã¯ãã»ãŒå転æ¥åäœã§ãèµ€éã®ååŸã¯6378kmã»ã©ã§ã極ååŸã¯6357kmãïŒãã粟床ã®é«ãæ°åã«ã€ããŠã¯åŸè¿°ã®ãç©ççæ§è³ªãã®é
ãåç
§ã®ããšïŒãã®éåã«çç®ãããšã365æ¥åŒ·ã§å€ªéœã®åšå²ãäžåšãã24æéã§1å èªè»¢ããŠããã倪éœããã®å¹³åè·é¢ã¯1å4960äžkmã_NEWLINE_ãã®å
éšã¯å€§ãŸãã«å°æ®»ããã³ãã«ãæ žã®3éšåããæã£ãŠãããå°çå
šäœã®å¹³åå¯åºŠã¯1cm³åœãã5.514gã§ããã衚é¢ã¯å€§æ°ã«èŠãããŠããã_NEWLINE_æŸå°æ§å
çŽ ã«ããéç³ã®å¹Žä»£æž¬å®ãšãã¢ããèšç»ã«ãã£ãŠæã¡åž°ãããæã®å²©ç³åæãããå°çã¯èªçããŠããçŽ46å幎çµéããŠãããšæšå®ãããã_NEWLINE_倪éœç³»ã®å¹Žéœ¢ããŸãéç³ã®å¹Žä»£æž¬å®ã«äŸæ ããã®ã§ãå°çã¯å€ªéœç³»ã®èªçãšã»ãŒåæã«åœ¢æããããšããŠããã10åçšåºŠã®ç«æãµã€ãºã®åå§ææã®è¡çªåäœã«ãã£ãŠåœ¢æããããšèããããŠããã_NEWLINE_倪éœç³»å
ã®ææãšããŠã¯ã倪éœãã2倩æåäœå
ã®äœçœ®ã«ååšãã岩ç³è³ªå€å±€ãšéãäž»æåãšããäžå¿æ žãæã€ãå°çåææãã«åé¡ããã倪éœç³»ã®å°çåææã®äžã§å€§ããã質éãå¯åºŠãšãã«æå€§ã®ãã®ã§ããã_NEWLINE_çµæã¯å°è¡šé¢ããã®æ·±ãã«ãã£ãŠç°ãªããå°æ®»ã«ååšããå
çŽ ã¯ãé
žçŽ ïŒè³ªéæ¯49.5%ïŒãšã±ã€çŽ ïŒå25.8%ïŒãäž»äœã§ã以äžã¢ã«ãããŠã ã»éã»ã«ã«ã·ãŠã ã»ãããªãŠã ã»ã«ãªãŠã ã»ãã°ãã·ãŠã ãªã©ã®éå±å
çŽ ãå«ãŸããããã®å
çŽ å¥è³ªéçŸåçã¯ã¯ã©ãŒã¯æ°ãšããŠçºããããŠãããã»ãšãã©ã¯ã±ã€é
žå¡©ãªã©éå±é
žåç©ã®åœ¢ã§ååšããã_NEWLINE_察ç
§çã«ãäžå¿éšåã¯éãããã±ã«ãäž»äœã§ãããå°è¡šé¢ã®71.1%ã¯æ¶²äœã®æ°ŽïŒæµ·ïŒã§è¢«ãããŠãããå°è¡šããäžç©ºçŽ100kmãŸã§ã®ç¯å²ã«ã¯çªçŽ ã»é
žçŽ ãäž»æåãšãã倧æ°ãããã倧æ°ã®çµæã¯é«åºŠã«ãã£ãŠå€åããã
_START_SECTION_
å
Ȣ
_START_PARAGRAPH_
åã«è¿ãæ¥å圢ã®è»éãæããŠå€ªéœã®åšãã1.0000倪éœå¹Žã«1åå
¬è»¢ãããŸã0.9973å¹³åå€ªéœæ¥ã«1åèªè»¢ããŠããã倩ã®å極ããèŠãŠãèªè»¢ãå
¬è»¢ãšãã«åæèšåãã§ããã_NEWLINE_ãã®æ¥åã®åœ¢ã¯10äžå¹Žã»ã©ã®åšæã§å€åããããšã倩æåŠè
ã®ç ç©¶ã§ããã£ãŠãããæ¥åã®è»éé¢å¿çã¯0.0167ã§ããã_NEWLINE_1倪éœå¹Žãšã¯å€ªéœãæ¥åç¹ããæ¥åç¹ãŸã§äžå·¡ãããæéãããªãã¡å£ç¯ãäžå·¡ããæéãããã365.242 190 402æ¥ã§ãããå°çã®æ³å·®ã«ããæ¥åç¹ãç§»åããããã1倪éœå¹Žã¯ãææãåããªããã®ãšããŠèŠãæã«å°çã倪éœã®åšããäžåšããæéãšããŠå®çŸ©ããã1å¹ŽïŒææå¹ŽïŒããçãã1ææå¹Žã¯365.256 363 004æ¥ã§ããã
...
ããŒã«ãŒçœ®ãæã
ä»åã¯ä»¥äžã®ããã«çœ®ãæããŸããã
-
_START_ARTICLE_(èšäºã®ã¿ã€ãã«) â è¡ããšåé€ -
_START_SECTION_(ã»ã¯ã·ã§ã³ã®éå§) â è¡ããšåé€ -
_START_PARAGRAPH_(段èœã®éå§) â è¡ããšåé€ -
_NEWLINE_(段èœå ã®æ¹è¡) â æ¹è¡ã³ãŒã (\n) ã§çœ®ãæã
å°ç
æŠèŠ
å°çãšã¯æã
人é¡ãäœãã§ãã倩äœãã€ãŸãæã
ã®è¶³å
ã«ãã倩äœã®ããšã§ããããå°ããšããåã»æŠå¿µãšãçããšããåã»æŠå¿µã§ããã衚çŸããŠãããè±èª (Earth) ãã©ãã³èª (Tellus, Terra) ãªã©ä»ã®èšèªã§ãå€ãã¯ã倧å°ãã衚ãèªãåœãŠãããŠãããåèªãšããŠã®ãå°çãã¯äžåœèªç±æ¥ã§ãããäžåœèªã®ãå°çãã¯ææã®è¥¿åŠæ±æŒžæã«åããŠèŠãããã€ã¿ãªã¢äººå®£æåž«ãããªã»ãªããïŒ1552幎-1610幎ïŒã®ãå€èŒ¿äžåœå
šå³ãããã®åèªã䜿çšãããæåæã®è³æã§ãããæž
æåŸæã«è¥¿æŽã®è¿ä»£ç§åŠãäžåœã«å
¥ã£ãŠãããšã倧å°çäœèª¬ãäžåœã®äººã
ã«ãã£ãŠæ¬¡ç¬¬ã«åãå
¥ããããããã«ãªãããå°çãïŒãŸãã¯å°æ¯¬ïŒãšããåèªãåºã䜿ãããããã«ãªã£ããåœæã®æ°èç³å ±ã®åµåå·ã«ã¯ãå°ç説ãã«é¢ããæç« ãæ²èŒãããŠãããæ¥æ¬ã«ã¯å¹æ«ããææ²»æã«äžåœèªããåå
¥ãããå®çããã
å°çã¯å€ªéœç³»ã®ææã®äžã€ã§ããããã®åœ¢ã¯ãã»ãŒå転æ¥åäœã§ãèµ€éã®ååŸã¯6378kmã»ã©ã§ã極ååŸã¯6357kmãïŒãã粟床ã®é«ãæ°åã«ã€ããŠã¯åŸè¿°ã®ãç©ççæ§è³ªãã®é
ãåç
§ã®ããšïŒãã®éåã«çç®ãããšã365æ¥åŒ·ã§å€ªéœã®åšå²ãäžåšãã24æéã§1å èªè»¢ããŠããã倪éœããã®å¹³åè·é¢ã¯1å4960äžkmã
ãã®å
éšã¯å€§ãŸãã«å°æ®»ããã³ãã«ãæ žã®3éšåããæã£ãŠãããå°çå
šäœã®å¹³åå¯åºŠã¯1cm³åœãã5.514gã§ããã衚é¢ã¯å€§æ°ã«èŠãããŠããã
æŸå°æ§å
çŽ ã«ããéç³ã®å¹Žä»£æž¬å®ãšãã¢ããèšç»ã«ãã£ãŠæã¡åž°ãããæã®å²©ç³åæãããå°çã¯èªçããŠããçŽ46å幎çµéããŠãããšæšå®ãããã
倪éœç³»ã®å¹Žéœ¢ããŸãéç³ã®å¹Žä»£æž¬å®ã«äŸæ ããã®ã§ãå°çã¯å€ªéœç³»ã®èªçãšã»ãŒåæã«åœ¢æããããšããŠããã10åçšåºŠã®ç«æãµã€ãºã®åå§ææã®è¡çªåäœã«ãã£ãŠåœ¢æããããšèããããŠããã
倪éœç³»å
ã®ææãšããŠã¯ã倪éœãã2倩æåäœå
ã®äœçœ®ã«ååšãã岩ç³è³ªå€å±€ãšéãäž»æåãšããäžå¿æ žãæã€ãå°çåææãã«åé¡ããã倪éœç³»ã®å°çåææã®äžã§å€§ããã質éãå¯åºŠãšãã«æå€§ã®ãã®ã§ããã
çµæã¯å°è¡šé¢ããã®æ·±ãã«ãã£ãŠç°ãªããå°æ®»ã«ååšããå
çŽ ã¯ãé
žçŽ ïŒè³ªéæ¯49.5%ïŒãšã±ã€çŽ ïŒå25.8%ïŒãäž»äœã§ã以äžã¢ã«ãããŠã ã»éã»ã«ã«ã·ãŠã ã»ãããªãŠã ã»ã«ãªãŠã ã»ãã°ãã·ãŠã ãªã©ã®éå±å
çŽ ãå«ãŸããããã®å
çŽ å¥è³ªéçŸåçã¯ã¯ã©ãŒã¯æ°ãšããŠçºããããŠãããã»ãšãã©ã¯ã±ã€é
žå¡©ãªã©éå±é
žåç©ã®åœ¢ã§ååšããã
察ç
§çã«ãäžå¿éšåã¯éãããã±ã«ãäž»äœã§ãããå°è¡šé¢ã®71.1%ã¯æ¶²äœã®æ°ŽïŒæµ·ïŒã§è¢«ãããŠãããå°è¡šããäžç©ºçŽ100kmãŸã§ã®ç¯å²ã«ã¯çªçŽ ã»é
žçŽ ãäž»æåãšãã倧æ°ãããã倧æ°ã®çµæã¯é«åºŠã«ãã£ãŠå€åããã
å
Ȣ
åã«è¿ãæ¥å圢ã®è»éãæããŠå€ªéœã®åšãã1.0000倪éœå¹Žã«1åå
¬è»¢ãããŸã0.9973å¹³åå€ªéœæ¥ã«1åèªè»¢ããŠããã倩ã®å極ããèŠãŠãèªè»¢ãå
¬è»¢ãšãã«åæèšåãã§ããã
ãã®æ¥åã®åœ¢ã¯10äžå¹Žã»ã©ã®åšæã§å€åããããšã倩æåŠè
ã®ç ç©¶ã§ããã£ãŠãããæ¥åã®è»éé¢å¿çã¯0.0167ã§ããã
1倪éœå¹Žãšã¯å€ªéœãæ¥åç¹ããæ¥åç¹ãŸã§äžå·¡ãããæéãããªãã¡å£ç¯ãäžå·¡ããæéãããã365.242 190 402æ¥ã§ãããå°çã®æ³å·®ã«ããæ¥åç¹ãç§»åããããã1倪éœå¹Žã¯ãææãåããªããã®ãšããŠèŠãæã«å°çã倪éœã®åšããäžåšããæéãšããŠå®çŸ©ããã1å¹ŽïŒææå¹ŽïŒããçãã1ææå¹Žã¯365.256 363 004æ¥ã§ããã
...
3. ã³ãŒã
以äžã® Python ã³ãŒãã§ãOpenAI ã®èšèªã¢ãã«ã§äœ¿ãããŠãã 3 ã€ã®ãšã³ã³ãŒãã£ã³ã° (cl100k_baseãp50k_baseãr50k_base) ãããããæå®ããéã®ããŒã¯ã³æ°ã確èªããŸãããã³ãŒãã®äžã§äœ¿ã£ãŠãã tiktoken ãš tensorflow_datasets ã¯äºåã«å®è¡ç°å¢ã«ã€ã³ã¹ããŒã«ããŠããå¿
èŠããããŸãã
ã©ã®èšèªã¢ãã«ãã©ã®ãšã³ã³ãŒãã£ã³ã°ã䜿ã£ãŠãããã«ã€ããŠã¯ã以åã®èšäºã§ãŸãšããŠããŸãã®ã§ããã¡ããåç
§ããŠãã ããã
import tiktoken
import tensorflow_datasets as tfds
def count_tokens(text):
ret_list = []
for encoding_name in ["cl100k_base", "p50k_base", "r50k_base"]:
encoding = tiktoken.get_encoding(encoding_name)
token_integers = encoding.encode(text)
num_tokens = len(token_integers)
ret_list.append(num_tokens)
return ret_list
def remove_markers(text):
return(text.replace("_START_ARTICLE_\n", "").replace("_START_SECTION_\n", "").replace("_START_PARAGRAPH_\n", "").replace("_NEWLINE_", "\n"))
splits = ["test", "train", "validation"]
for split in splits:
ds = tfds.load('wiki40b/ja', split=split)
record_count = 0
char_count = 0
token_counts = [0, 0, 0]
for idx, record in enumerate(ds):
text = record['text'].numpy().decode('utf-8')
text_replaced = remove_markers(text)
char_count += len(text_replaced)
token_counts = [x + y for x, y in zip(token_counts, count_tokens(text_replaced))]
record_count += 1
print("split: %s" % split)
print("record_count: %s" % record_count)
print("char_count: %s" % char_count)
print("token_count (cl100k_base): %s" % token_counts[0])
print("token_count (p50k_base): %s" % token_counts[1])
print("token_count (r50k_base): %s" % token_counts[2])
ã¡ãªã¿ã«ãåŠçã¯ãã®ãããã®ã¹ããã¯ã® Windows 11 ãã·ã³ã§æ°ååçšåºŠã§çµãããŸãããååå®è¡æã¯ããŒã¿ã»ããã®ããŠã³ããŒããçºçããããäœèšã«æéãããããŸãã
ããã»ããµ 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz 3.30 GHz
å®è£
RAM 32.0 GB (31.8 GB 䜿çšå¯èœ)
ã·ã¹ãã ã®çš®é¡ 64 ããã ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãx64 ããŒã¹ ããã»ããµ
[è£è¶³] GPT-4o ã®ãšã³ã³ãŒãã£ã³ã°ã«ã€ããŠ
2024 幎 5 æ 14 æ¥ã® GPT-4o ã®çºè¡šãšåãã¿ã€ãã³ã°ã§å
¬éããã tiktoken ã®ããŒãžã§ã³ 0.7.0 ã䜿ããš GPT-4o ã®ãšã³ã³ãŒãã£ã³ã°ã確èªããããšãã§ããããã«ãããš o200k_base ãšããæ°ããªãšã³ã³ãŒãã£ã³ã°ã䜿ãããŠããããã§ããæ¬é
æŽæ°æç¹ã§ GPT-4o ã® API ã¯ãŸã å
¬éãããŠããŸããããåèã®ãã远å ã§ o200k_base ãæå®ããéã®ããŒã¯ã³æ°ã®ç¢ºèªãè¡ããŸããã
ã³ãŒã:
import tiktoken
print(tiktoken.encoding_for_model('gpt-4o'))
åºå:
<Encoding 'o200k_base'>
åè
4. çµæ
çµæã®äžèŠ§è¡šã§ããããŒã¯ã³æšå®ã®ææšãšããŠãåãšã³ã³ãŒãã£ã³ã°ã«ããã 1 ããŒã¯ã³ãããã®æåæ°ãš 1 æåãããã®ããŒã¯ã³æ°ãèšç®ããŸããã
| ã¹ããªãã | ã¬ã³ãŒãæ° | æåæ° | ããŒã¯ã³æ° (o200k_base) | ããŒã¯ã³æ° (cl100k_base) | ããŒã¯ã³æ° (p50k_base) | ããŒã¯ã³æ° (r50k_base) |
|---|---|---|---|---|---|---|
| test | 41,268 | 38,591,027 | 30,874,301 | 42,077,561 | 54,037,268 | 54,043,708 |
| train | 745,392 | 701,788,342 | 561,507,091 | 765,348,310 | 983,557,663 | 983,697,862 |
| validation | 41,576 | 38,505,964 | 561,507,091 | 41,936,982 | 53,857,786 | 53,864,392 |
| åèš | 828,236 | 778,885,333 | 623,149,632 | 849,362,853 | 1,091,452,717 | 1,091,605,962 |
| ããŒã¯ã³ãããã®æåæ° | --- | --- | 1.2499 | 0.9170 | 0.7136 | 0.7135 |
| æåãããã®ããŒã¯ã³æ° | --- | --- | 0.8001 | 1.0905 | 1.4013 | 1.4015 |
â»å°æ°ç¬¬ 5 äœåæšäºå ¥
4.1. ã¢ãã«ããšã®æšå®æå€§æåæ° (æ¥æ¬èª)
ãã®çµæãããOpenAI ã®ä»£è¡šçãªã¢ãã«ã«ãããæ¥æ¬èªã®æå€§æåæ°ãæšå®ãããšä»¥äžã®ããã«ãªããŸãããã ãããããŸã§ããã£ãããã®ãããã®æåæ°ãŸã§æ±ãããšããç®å®ã§ãã®ã§ãå®éã«ã¢ããªã±ãŒã·ã§ã³ã«çµã¿èŸŒãé㯠tiktoken ã䜿ã£ãŠå ¥åããŒã¯ã³æ°ã確èªããŠæå€§ããŒã¯ã³ãè¶ ããªãããã«å¶åŸ¡ããå¿ èŠããããŸãã
| ã¢ãã« | ãšã³ã³ãŒãã£ã³ã° | æå€§ããŒã¯ã³ | æšå®æå€§æåæ° (æ¥æ¬èª) |
|---|---|---|---|
| GPT-4o mini | o200k_base | 128,000 (å
¥å) 16,384 (åºå) |
çŽ 159,987 çŽ 20,478 |
| GPT-4o | o200k_base | 128,000 (å
¥å) 4,096 (åºå) |
çŽ 159,987 çŽ 5,120 |
| gpt-4-vision-preview (GPT-4 Turbo with Vision) |
cl100k_base | 128,000 (å
¥å) 4,096 (åºå) |
çŽ 117,376 çŽ 3,756 |
| gpt-4-0125-preview (GPT-4 Turbo) |
cl100k_base | 128,000 (å
¥å) 4,096 (åºå) |
çŽ 117,376 çŽ 3,756 |
| gpt-4-1106-preview (GPT-4 Turbo) |
cl100k_base | 128,000 (å
¥å) 4,096 (åºå) |
çŽ 117,376 çŽ 3,756 |
| gpt-4-32k | cl100k_base | 32,768 (å ¥åºååèš) | çŽ 30,049 |
| gpt-4 | cl100k_base | 8,192 (å ¥åºååèš) | çŽ 7,512 |
| gpt-3.5-turbo | cl100k_base | 4,096 (å ¥åºååèš) | çŽ 3,756 |
åè
- Models (æ¬å®¶ OpenAI)
-
GPT-4 ããã³ GPT-4 Turbo ãã¬ãã¥ãŒ ã¢ãã« (Azure OpenAI Service)
-Azure OpenAI Service ã§ GPT-4 Turbo with Vision ã䜿ã - GPT-4 Turbo with Vision ã®ç»åå ¥åæã®ããŒã¯ã³èšç®ã«ã€ããŠ
ãããã«
以äžã§ããðµ
ã¡ã³ããŒãéžãã Microsoft補åã®ææ°æè¡æ å ±ã»ç¥èŠããå±ãããŸãã â»ãã®Publicationã¯æ¥æ¬ãã€ã¯ããœãããŸãã¯ç±³Microsoftæå±ç€Ÿå¡ã«ããå人ã®èŠè§£ã§ãããæå±ããçµç¹ã®å ¬åŒèŠè§£ã§ã¯ãããŸããã â»Publicationã«åå åžæã®ç€Ÿå¡ã¯ @07JP27ãŸã§ãé£çµ¡ãã ããã
Discussion