gemini-2.5-flash๋ฅผ ํธ์ถํ ๋ Thinking level is not supported for this model ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ฐ, gemini-3-flash-preview๋ก ๋ฐ๊พธ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋์? ์ด๋ Google Gemini API๊ฐ ๋ชจ๋ธ ์ธ๋ ์
๊ทธ๋ ์ด๋ ๊ณผ์ ์์ ๋์
ํ ํ๋ผ๋ฏธํฐ ์ค๊ณ์ ๋ณํ ๋๋ฌธ์
๋๋ค. ์ด ๊ธ์์๋ Gemini 2.5์ 3.0์ ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ ์ง์์ ๊ดํ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์ ์ฒด๊ณ์ ์ผ๋ก ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.
ํต์ฌ ๊ฐ์น: ์ด ๊ธ์ ์ฝ๊ณ ๋๋ฉด Gemini 2.5์ 3.0 ์๋ฆฌ์ฆ ๋ชจ๋ธ์ ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ ์ค๊ณ์ ๋ด๊ธด ๋ณธ์ง์ ์ธ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ , ์ฌ๋ฐ๋ฅธ ํ๋ผ๋ฏธํฐ ์ค์ ๋ฐฉ๋ฒ์ ์ตํ ํ๋ผ๋ฏธํฐ ํผ์ฉ์ผ๋ก ์ธํ API ํธ์ถ ์คํจ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.

Gemini ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ ์งํ ํต์ฌ ์์
| ๋ชจ๋ธ ์๋ฆฌ์ฆ | ์ง์ ํ๋ผ๋ฏธํฐ | ํ๋ผ๋ฏธํฐ ํ์ | ์ฌ์ฉ ๊ฐ๋ฅ ๋ฒ์ | ๊ธฐ๋ณธ๊ฐ | ๋นํ์ฑํ ๊ฐ๋ฅ ์ฌ๋ถ |
|---|---|---|---|---|---|
| Gemini 2.5 Pro | thinking_budget |
์ ์ (128-32768) | ์ ๋ฐํ ํ ํฐ ์์ฐ | 8192 | โ ๋นํ์ฑํ ๋ถ๊ฐ |
| Gemini 2.5 Flash | thinking_budget |
์ ์ (0-24576) ๋๋ -1 | ์ ๋ฐํ ํ ํฐ ์์ฐ ๋๋ ๋์ | -1 (๋์ ) | โ ๋นํ์ฑํ ๊ฐ๋ฅ (0์ผ๋ก ์ค์ ) |
| Gemini 2.5 Flash-Lite | thinking_budget |
์ ์ (512-24576) | ์ ๋ฐํ ํ ํฐ ์์ฐ | 0 (๋นํ์ฑํ) | โ ๊ธฐ๋ณธ ๋นํ์ฑํ |
| Gemini 3.0 Pro | thinking_level |
์ด๊ฑฐํ ("low"/"high") | ์๋งจํฑ ๋ ๋ฒจ | "high" | โ ์์ ๋นํ์ฑํ ๋ถ๊ฐ |
| Gemini 3.0 Flash | thinking_level |
์ด๊ฑฐํ ("minimal"/"low"/"medium"/"high") | ์๋งจํฑ ๋ ๋ฒจ | "high" | โ ๏ธ "minimal"๋ง ๊ฐ๋ฅ |
Gemini 2.5 vs 3.0 ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ ์ค๊ณ ์ฐจ์ด
ํต์ฌ ์ฐจ์ด์ : Gemini 2.5 ์๋ฆฌ์ฆ๋ thinking_budget(ํ ํฐ ์์ฐ์ )์ ์ฌ์ฉํ๊ณ , Gemini 3.0 ์๋ฆฌ์ฆ๋ thinking_level(์๋งจํฑ ๋ ๋ฒจ์ )์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ ํ๋ผ๋ฏธํฐ๋ ์๋ก ์์ ํ ํธํ๋์ง ์์ผ๋ฉฐ, ์๋ชป๋ ๋ชจ๋ธ ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด 400 Bad Request ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Google์ด Gemini 3.0์์ thinking_level์ ๋์
ํ ํต์ฌ ์ด์ ๋ ์ค์ ์ ๋ณต์ก์ฑ์ ์ค์ด๊ณ ์ถ๋ก ํจ์จ์ ๋์ด๊ธฐ ์ํด์์
๋๋ค. Gemini 2.5์ ํ ํฐ ์์ฐ์ ๋ ๊ฐ๋ฐ์๊ฐ ์ฌ๊ณ ํ ํฐ ์๋ฅผ ์ ๋ฐํ๊ฒ ์์ธกํด์ผ ํ์ง๋ง, Gemini 3.0์ ๋ ๋ฒจ์ ๋ ์ด๋ฌํ ๋ณต์ก์ฑ์ 4๊ฐ์ง ์๋งจํฑ ๋ ๋ฒจ๋ก ์ถ์ํํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ ๋ด๋ถ์์ ์ต์ ์ ํ ํฐ ์์ฐ์ ์๋์ผ๋ก ํ ๋นํ๋ฉฐ, ์ถ๋ก ์๋๋ฅผ 2๋ฐฐ๊น์ง ํฅ์์์ผฐ์ต๋๋ค.
๐ก ๊ธฐ์ ํ: ์ค์ ๊ฐ๋ฐ ์์๋ APIYI(apiyi.com) ํ๋ซํผ์ ํตํด ๋ชจ๋ธ ์ ํ ํ ์คํธ๋ฅผ ์งํํด ๋ณด์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. ์ด ํ๋ซํผ์ ํตํฉ API ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ Gemini 2.5์ 3.0 ์ ์๋ฆฌ์ฆ ๋ชจ๋ธ์ ์ง์ํ๋ฏ๋ก, ๋ค์ํ ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ์ ํธํ์ฑ๊ณผ ์ค์ ํจ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ฆํ๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
๊ทผ๋ณธ ์์ธ 1: Gemini 2.5 ์๋ฆฌ์ฆ๋ thinking_level ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค
API ํ๋ผ๋ฏธํฐ ์ค๊ณ์ ์ธ๋ ๊ฐ ๊ฒฉ๋ฆฌ
Gemini 2.5 ์๋ฆฌ์ฆ ๋ชจ๋ธ(Pro, Flash, Flash-Lite ํฌํจ)์ API ์ค๊ณ ๋จ๊ณ์์ thinking_level ํ๋ผ๋ฏธํฐ๋ฅผ ์ ํ ์ธ์ํ์ง ๋ชปํฉ๋๋ค. gemini-2.5-flash๋ฅผ ํธ์ถํ ๋ thinking_level ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๋ฉด API๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฐํํด์.
{
"error": {
"message": "Thinking level is not supported for this model.",
"type": "upstream_error",
"code": 400
}
}
์ค๋ฅ ๋ฐ์ ๋ฉ์ปค๋์ฆ:
- Gemini 2.5 ๋ชจ๋ธ์ API ๊ฒ์ฆ ๋ ์ด์ด์๋
thinking_levelํ๋ผ๋ฏธํฐ ์ ์๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค. thinking_level์ด ํฌํจ๋ ๋ชจ๋ ์์ฒญ์ ์ฆ์ ๊ฑฐ๋ถ๋๋ฉฐ,thinking_budget์ผ๋ก ๋งคํํ๋ ค๋ ์๋์กฐ์ฐจ ํ์ง ์์ต๋๋ค.- ์ด๋ ํ๋์ฝ๋ฉ๋ ํ๋ผ๋ฏธํฐ ๊ฒฉ๋ฆฌ๋ก, ์๋ ์ ํ์ด๋ ํ์ ํธํ์ฑ์ด ์กด์ฌํ์ง ์์ต๋๋ค.
Gemini 2.5 ์๋ฆฌ์ฆ์ ์ฌ๋ฐ๋ฅธ ํ๋ผ๋ฏธํฐ: thinking_budget
Gemini 2.5 Flash ํ๋ผ๋ฏธํฐ ๊ท๊ฒฉ:
# ์ฌ๋ฐ๋ฅธ ์ค์ ์์
extra_body = {
"thinking_budget": -1 # ๋์ ์ฌ๊ณ ๋ชจ๋
}
# ๋๋ ์ฌ๊ณ ๋ชจ๋ ๋นํ์ฑํ
extra_body = {
"thinking_budget": 0 # ์์ ๋นํ์ฑํ
}
# ๋๋ ์ ๋ฐ ์ ์ด
extra_body = {
"thinking_budget": 2048 # ์ ํํ 2048 ํ ํฐ ์์ฐ ํ ๋น
}
Gemini 2.5 Flash์ thinking_budget ๊ฐ ๋ฒ์:
| ๊ฐ | ์๋ฏธ | ์ถ์ฒ ์๋๋ฆฌ์ค |
|---|---|---|
0 |
์ฌ๊ณ ๋ชจ๋ ์์ ๋นํ์ฑํ | ๋จ์ ์ง์ ์ํ, ๊ณ ์ฒ๋ฆฌ๋(High-throughput) ์ ํ๋ฆฌ์ผ์ด์ |
-1 |
๋์ ์ฌ๊ณ ๋ชจ๋ (์ต๋ 8192 ํ ํฐ) | ์ผ๋ฐ์ ์ธ ์ํฉ, ๋ณต์ก๋์ ๋ฐ๋ฅธ ์๋ ์ ์ |
512-24576 |
์ ๋ฐ ํ ํฐ ์์ฐ | ๋น์ฉ ๋ฏผ๊ฐํ ์ ํ๋ฆฌ์ผ์ด์ , ์ ๋ฐํ ์ ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ |

๐ฏ ์ ํ ๊ฐ์ด๋: Gemini 2.5 Flash๋ก ์ ํํ ๋๋ ๋จผ์ APIYI(apiyi.com) ํ๋ซํผ์ ํตํด
thinking_budget๊ฐ์ ๋ฐ๋ฅธ ์๋ต ํ์ง๊ณผ ์ง์ฐ ์๊ฐ์ ๋ณํ๋ฅผ ํ ์คํธํด ๋ณด๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. ์ด ํ๋ซํผ์ ํ๋ผ๋ฏธํฐ ์ค์ ์ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝํ๋ฉฐ ํ ์คํธํ ์ ์์ด, ๋น์ฆ๋์ค ์๋๋ฆฌ์ค์ ๊ฐ์ฅ ์ ํฉํ ์์ฐ ๊ฐ์ ์ฐพ๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
๊ทผ๋ณธ ์์ธ 2: Gemini 3.0 ์๋ฆฌ์ฆ๋ thinking_budget ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค
ํ๋ผ๋ฏธํฐ ์ค๊ณ์ ์ ๋ฐฉ ๋นํธํ์ฑ
Google ๊ณต์ ๋ฌธ์์์๋ Gemini 3.0์ด ํ์ ํธํ์ฑ์ ์ํด ์ฌ์ ํ thinking_budget ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฉํ๋ค๊ณ ๋ช
์ํ๊ณ ์์ง๋ง, ์ค์ ํ
์คํธ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
thinking_budget์ฌ์ฉ ์ ์ฑ๋ฅ ์ ํ ๋ฐ์ ๊ฐ๋ฅ์ฑ- ๊ณต์ ๋ฌธ์์์
thinking_level์ฌ์ฉ์ ๊ฐ๋ ฅํ ๊ถ์ฅ - ์ผ๋ถ API ๊ตฌํ์์๋
thinking_budget์ ์์ ํ ๊ฑฐ๋ถํ ์ ์์
Gemini 3.0 Flash์ ์ฌ๋ฐ๋ฅธ ํ๋ผ๋ฏธํฐ: thinking_level
# ์ฌ๋ฐ๋ฅธ ์ค์ ์์
extra_body = {
"thinking_level": "medium" # ์ค๊ฐ ๊ฐ๋ ์ถ๋ก
}
# ๋๋ ์ต์ ์ฌ๊ณ (๋นํ์ฑํ์ ๊ฐ๊น์)
extra_body = {
"thinking_level": "minimal" # ์ต์ ์ฌ๊ณ ๋ชจ๋
}
# ๋๋ ๊ณ ๊ฐ๋ ์ถ๋ก (๊ธฐ๋ณธ๊ฐ)
extra_body = {
"thinking_level": "high" # ์ฌ์ธต ์ถ๋ก
}
Gemini 3.0 Flash์ thinking_level ๋ฑ๊ธ ์ค๋ช :
| ๋ฑ๊ธ | ์ถ๋ก ๊ฐ๋ | ์ง์ฐ ์๊ฐ | ๋น์ฉ | ์ถ์ฒ ์๋๋ฆฌ์ค |
|---|---|---|---|---|
"minimal" |
๊ฑฐ์ ์ถ๋ก ์์ | ์ต์ | ์ต์ | ๋จ์ ์ง์ ์ํ, ๊ณ ์ฒ๋ฆฌ๋ |
"low" |
์์ ์์ค์ ์ถ๋ก | ๋ฎ์ | ๋ฎ์ | ์ฑ๋ด, ๊ฐ๋ฒผ์ด QA |
"medium" |
์ค๊ฐ ์์ค์ ์ถ๋ก | ์ค๊ฐ | ์ค๊ฐ | ์ผ๋ฐ์ ์ธ ์ถ๋ก ์์ , ์ฝ๋ ์์ฑ |
"high" |
์ฌ์ธต ์ถ๋ก | ๋์ | ๋์ | ๋ณต์กํ ๋ฌธ์ ํด๊ฒฐ, ์ฌ์ธต ๋ถ์ (๊ธฐ๋ณธ๊ฐ) |
Gemini 3.0 Pro์ ํน์ ์ ํ ์ฌํญ
์ค์: Gemini 3.0 Pro๋ ์ฌ๊ณ ๋ชจ๋๋ฅผ ์์ ํ ๋นํ์ฑํํ ์ ์์ต๋๋ค. thinking_level: "low"๋ก ์ค์ ํ๋๋ผ๋ ์ผ์ ์์ค์ ์ถ๋ก ๋ฅ๋ ฅ์ ์ ์ง๋ฉ๋๋ค. ๋ง์ฝ ์ต๋ ์๋๋ฅผ ์ํด '์ ๋ก ์ฌ๊ณ ' ์๋ต์ด ํ์ํ๋ค๋ฉด Gemini 2.5 Flash์ thinking_budget: 0์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
# Gemini 3.0 Pro ์ฌ์ฉ ๊ฐ๋ฅ ๋ฑ๊ธ (2๊ฐ์ง๋ง ์ง์)
extra_body = {
"thinking_level": "low" # ์ต์ ๋ฑ๊ธ (์ฌ์ ํ ์ถ๋ก ์ํ)
}
# ๋๋
extra_body = {
"thinking_level": "high" # ๊ธฐ๋ณธ ๊ณ ๊ฐ๋ ์ถ๋ก
}
๐ฐ ๋น์ฉ ์ต์ ํ: ๋น์ฉ์ ๋ฏผ๊ฐํ ํ๋ก์ ํธ์์ ๋น์ฉ ์ ๊ฐ์ ์ํด ์ฌ๊ณ ๋ชจ๋๋ฅผ ์์ ํ ๋นํ์ฑํํด์ผ ํ๋ค๋ฉด, APIYI(apiyi.com) ํ๋ซํผ์ ํตํด Gemini 2.5 Flash API๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ํด๋น ํ๋ซํผ์ ์ ์ฐํ ๊ณผ๊ธ ๋ฐฉ์๊ณผ ํฉ๋ฆฌ์ ์ธ ๊ฐ๊ฒฉ์ ์ ๊ณตํ๋ฏ๋ก ์ ๋ฐํ ๋น์ฉ ์ ์ด๊ฐ ํ์ํ ์๋๋ฆฌ์ค์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
๊ทผ๋ณธ ์์ธ 3: ์ด๋ฏธ์ง ๋ชจ๋ธ ๋ฐ ํน์ ๋ณ์ฒด ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ ์ ํ
Gemini 2.5 Flash Image ๋ชจ๋ธ์ ์ฌ๊ณ ๋ชจ๋๋ฅผ ์ง์ํ์ง ์์์
์ค์ํ ๋ฐ๊ฒฌ: gemini-2.5-flash-image์ ๊ฐ์ ๋น์ ๋ชจ๋ธ์ thinking_budget์ด๋ thinking_level ๋ฑ ๊ทธ ์ด๋ค ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ ์ ํ ์ง์ํ์ง ์์ต๋๋ค.
์ค๋ฅ ์์:
# gemini-2.5-flash-image ํธ์ถ ์
response = client.chat.completions.create(
model="gemini-2.5-flash-image",
messages=[{"role": "user", "content": "์ด ์ด๋ฏธ์ง ๋ถ์ํด์ค"}],
extra_body={
"thinking_budget": -1 # โ ์ค๋ฅ: ์ด๋ฏธ์ง ๋ชจ๋ธ์ ์ง์ํ์ง ์์
}
)
# ์ค๋ฅ ๋ฐํ: "This model doesn't support thinking"
์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ:
# ์ด๋ฏธ์ง ๋ชจ๋ธ์ ํธ์ถํ ๋๋ ์ฌ๊ณ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์
response = client.chat.completions.create(
model="gemini-2.5-flash-image",
messages=[{"role": "user", "content": "์ด ์ด๋ฏธ์ง ๋ถ์ํด์ค"}],
# โ
thinking_budget ๋๋ thinking_level์ ์ ๋ฌํ์ง ์์
)
Gemini 2.5 Flash-Lite์ ํน๋ณํ ๊ธฐ๋ณธ๊ฐ
Gemini 2.5 Flash-Lite์ ํ์ค Flash ๋ฒ์ ์ ํต์ฌ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์์:
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ณ ๋ชจ๋๊ฐ ๋นํ์ฑํ๋จ (
thinking_budget: 0) - ์ฌ๊ณ ๋ชจ๋๋ฅผ ํ์ฑํํ๋ ค๋ฉด
thinking_budget์ 0์ด ์๋ ๊ฐ์ผ๋ก ๋ช ์์ ์ผ๋ก ์ค์ ํด์ผ ํจ - ์ง์๋๋ ์์ฐ ๋ฒ์: 512~24,576 ํ ํฐ
# Gemini 2.5 Flash-Lite ์ฌ๊ณ ๋ชจ๋ ํ์ฑํ
extra_body = {
"thinking_budget": 512 # 0์ด ์๋ ์ต์๊ฐ์ผ๋ก ๊ฐ๋ฒผ์ด ์ฌ๊ณ ํ์ฑํ
}

| ๋ชจ๋ธ | thinking_budget | thinking_level | ์ด๋ฏธ์ง ์ง์ | ์ฌ๊ณ ๊ธฐ๋ณธ ์ํ |
|---|---|---|---|---|
| gemini-2.5-pro | โ ์ง์ (128-32768) | โ ๋ฏธ์ง์ | โ | ๊ธฐ๋ณธ ํ์ฑํ (8192) |
| gemini-2.5-flash | โ ์ง์ (0-24576, -1) | โ ๋ฏธ์ง์ | โ | ๊ธฐ๋ณธ ํ์ฑํ (๋์ ) |
| gemini-2.5-flash-lite | โ ์ง์ (512-24576) | โ ๋ฏธ์ง์ | โ | ๊ธฐ๋ณธ ๋นํ์ฑํ (0) |
| gemini-2.5-flash-image | โ ๋ฏธ์ง์ | โ ๋ฏธ์ง์ | โ | ์ฌ๊ณ ๋ชจ๋ ์์ |
| gemini-3.0-pro | โ ๏ธ ํธํ๋์ง๋ง ๊ถ์ฅ ์ ํจ | โ ๊ถ์ฅ (low/high) | โ | ๊ธฐ๋ณธ high |
| gemini-3.0-flash | โ ๏ธ ํธํ๋์ง๋ง ๊ถ์ฅ ์ ํจ | โ ๊ถ์ฅ (minimal/low/medium/high) | โ | ๊ธฐ๋ณธ high |
๐ ๋น ๋ฅธ ์์: APIYI ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋ชจ๋ธ์ ์ฌ๊ณ ํ๋ผ๋ฏธํฐ ํธํ์ฑ์ ๋น ๋ฅด๊ฒ ํ ์คํธํด ๋ณด์ธ์. ์ด ํ๋ซํผ์ ๋ณต์กํ ์ค์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ Gemini ์ ์ฒด ์๋ฆฌ์ฆ ๋ชจ๋ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉฐ, 5๋ถ ์์ ํตํฉ ๋ฐ ํ๋ผ๋ฏธํฐ ๊ฒ์ฆ์ ๋ง์น ์ ์๋ต๋๋ค.
ํด๊ฒฐ์ฑ 1: ๋ชจ๋ธ ๋ฒ์ ์ ๋ฐ๋ฅธ ๋งค๊ฐ๋ณ์ ์ ์ ํจ์
์ง๋ฅํ ๋งค๊ฐ๋ณ์ ์ ํ๊ธฐ (์ ์๋ฆฌ์ฆ ๋ชจ๋ธ ์ง์)
def get_gemini_thinking_config(model_name: str, intensity: str = "medium") -> dict:
"""
Gemini ๋ชจ๋ธ ์ด๋ฆ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ฌ๋ฐ๋ฅธ ์ฌ๊ณ ๋ชจ๋(Thinking Mode) ๋งค๊ฐ๋ณ์๋ฅผ ์ ํํฉ๋๋ค.
Args:
model_name: Gemini ๋ชจ๋ธ ์ด๋ฆ
intensity: ์ฌ๊ณ ๊ฐ๋ ("none", "minimal", "low", "medium", "high", "dynamic")
Returns:
extra_body์ ์ฌ์ฉํ ๋งค๊ฐ๋ณ์ ๋์
๋๋ฆฌ. ๋ชจ๋ธ์ด ์ฌ๊ณ ๋ชจ๋๋ฅผ ์ง์ํ์ง ์์ผ๋ฉด ๋น ๋์
๋๋ฆฌ ๋ฐํ
"""
# Gemini 3.0 ๋ชจ๋ธ ๋ฆฌ์คํธ
gemini_3_models = [
"gemini-3.0-flash-preview", "gemini-3.0-pro-preview",
"gemini-3-flash", "gemini-3-pro"
]
# Gemini 2.5 ํ์ค ๋ชจ๋ธ ๋ฆฌ์คํธ
gemini_2_5_models = [
"gemini-2.5-flash", "gemini-2.5-pro",
"gemini-2.5-flash-lite", "gemini-2-flash", "gemini-2-pro"
]
# ์ด๋ฏธ์ง ๋ชจ๋ธ ๋ฆฌ์คํธ (์ฌ๊ณ ๋ชจ๋ ๋ฏธ์ง์)
image_models = [
"gemini-2.5-flash-image", "gemini-flash-image",
"gemini-pro-vision"
]
# ์ด๋ฏธ์ง ๋ชจ๋ธ ์ฌ๋ถ ํ์ธ
if any(img_model in model_name for img_model in image_models):
print(f"โ ๏ธ ๊ฒฝ๊ณ : {model_name}์(๋) ์ฌ๊ณ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๋น ๊ตฌ์ฑ์ ๋ฐํํฉ๋๋ค.")
return {}
# Gemini 3.0 ์๋ฆฌ์ฆ๋ thinking_level ์ฌ์ฉ
if any(m in model_name for m in gemini_3_models):
level_map = {
"none": "minimal", # 3.0์ ์์ ํ ๋นํ์ฑํํ ์ ์์ผ๋ฏ๋ก minimal ์ฌ์ฉ
"minimal": "minimal",
"low": "low",
"medium": "medium",
"high": "high",
"dynamic": "high"
}
# Gemini 3.0 Pro๋ low์ high๋ง ์ง์
if "pro" in model_name.lower():
if intensity in ["none", "minimal", "low"]:
return {"thinking_level": "low"}
else:
return {"thinking_level": "high"}
# Gemini 3.0 Flash๋ 4๊ฐ์ง ๋ ๋ฒจ ๋ชจ๋ ์ง์
return {"thinking_level": level_map.get(intensity, "medium")}
# Gemini 2.5 ์๋ฆฌ์ฆ๋ thinking_budget ์ฌ์ฉ
elif any(m in model_name for m in gemini_2_5_models):
budget_map = {
"none": 0, # ์์ ํ ๋นํ์ฑํ
"minimal": 512, # ์ต์ ์์ฐ
"low": 2048, # ๋ฎ์ ๊ฐ๋
"medium": 8192, # ์ค๊ฐ ๊ฐ๋
"high": 16384, # ๋์ ๊ฐ๋
"dynamic": -1 # ๋์ ์ ์
}
budget = budget_map.get(intensity, -1)
# Gemini 2.5 Pro๋ ๋นํ์ฑํ ๋ฏธ์ง์ (์ต์ 128)
if "pro" in model_name.lower() and budget == 0:
print(f"โ ๏ธ ๊ฒฝ๊ณ : {model_name}์(๋) ์ฌ๊ณ ๋นํ์ฑํ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ์ต์๊ฐ์ธ 128๋ก ์๋ ์กฐ์ ํฉ๋๋ค.")
budget = 128
# Gemini 2.5 Flash-Lite์ ์ต์๊ฐ์ 512
if "lite" in model_name.lower() and budget > 0 and budget < 512:
print(f"โ ๏ธ ๊ฒฝ๊ณ : {model_name}์ ์ต์ ์์ฐ์ 512์
๋๋ค. ์๋์ผ๋ก ์กฐ์ ํฉ๋๋ค.")
budget = 512
return {"thinking_budget": budget}
else:
print(f"โ ๏ธ ๊ฒฝ๊ณ : ์ ์ ์๋ ๋ชจ๋ธ {model_name}์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Gemini 3.0 ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.")
return {"thinking_level": "medium"}
# ์ฌ์ฉ ์์
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
# Gemini 2.5 Flash ํ
์คํธ
model_2_5 = "gemini-2.5-flash"
config_2_5 = get_gemini_thinking_config(model_2_5, intensity="dynamic")
print(f"{model_2_5} ์ค์ : {config_2_5}")
# ์ถ๋ ฅ: gemini-2.5-flash ์ค์ : {'thinking_budget': -1}
response_2_5 = client.chat.completions.create(
model=model_2_5,
messages=[{"role": "user", "content": "์์ ์ฝํ์ ๋ํด ์ค๋ช
ํด์ค"}],
extra_body=config_2_5
)
# Gemini 3.0 Flash ํ
์คํธ
model_3_0 = "gemini-3.0-flash-preview"
config_3_0 = get_gemini_thinking_config(model_3_0, intensity="medium")
print(f"{model_3_0} ์ค์ : {config_3_0}")
# ์ถ๋ ฅ: gemini-3.0-flash-preview ์ค์ : {'thinking_level': 'medium'}
response_3_0 = client.chat.completions.create(
model=model_3_0,
messages=[{"role": "user", "content": "์์ ์ฝํ์ ๋ํด ์ค๋ช
ํด์ค"}],
extra_body=config_3_0
)
# ์ด๋ฏธ์ง ๋ชจ๋ธ ํ
์คํธ
model_image = "gemini-2.5-flash-image"
config_image = get_gemini_thinking_config(model_image, intensity="high")
print(f"{model_image} ์ค์ : {config_image}")
# ์ถ๋ ฅ: โ ๏ธ ๊ฒฝ๊ณ : gemini-2.5-flash-image์(๋) ์ฌ๊ณ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๋น ๊ตฌ์ฑ์ ๋ฐํํฉ๋๋ค.
# ์ถ๋ ฅ: gemini-2.5-flash-image ์ค์ : {}
๐ก ์ต์ ์ ๊ดํ: Gemini ๋ชจ๋ธ์ ๋์ ์ผ๋ก ์ ํํด์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด, APIYI(apiyi.com) ํ๋ซํผ์ ํตํด ๋งค๊ฐ๋ณ์ ์ ์ ํ ์คํธ๋ฅผ ์งํํด ๋ณด์๋ ๊ฒ์ ์ถ์ฒํด์. ์ด ํ๋ซํผ์ Gemini 2.5์ 3.0 ์๋ฆฌ์ฆ ๋ชจ๋ธ์ ๋ชจ๋ ์ง์ํ๋ฏ๋ก, ๋ค์ํ ๋งค๊ฐ๋ณ์ ์ค์ ์ ๋ฐ๋ฅธ ์๋ต ํ์ง๊ณผ ๋น์ฉ ์ฐจ์ด๋ฅผ ๊ฐํธํ๊ฒ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
ํด๊ฒฐ์ฑ 2: Gemini 2.5์์ 3.0์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต
์ฌ๊ณ ๋ชจ๋ ๋งค๊ฐ๋ณ์ ๋ง์ด๊ทธ๋ ์ด์ ๋์กฐํ
| Gemini 2.5 Flash ์ค์ | Gemini 3.0 Flash ๋ฑ๊ฐ ์ค์ | ์ง์ฐ ์๊ฐ ๋น๊ต | ๋น์ฉ ๋น๊ต |
|---|---|---|---|
thinking_budget: 0 |
thinking_level: "minimal" |
3.0์ด ๋ ๋น ๋ฆ (์ฝ 2๋ฐฐ) | ๋น์ทํจ |
thinking_budget: 512 |
thinking_level: "low" |
3.0์ด ๋ ๋น ๋ฆ | ๋น์ทํจ |
thinking_budget: 2048 |
thinking_level: "low" |
3.0์ด ๋ ๋น ๋ฆ | ๋น์ทํจ |
thinking_budget: 8192 |
thinking_level: "medium" |
3.0์ด ๋ ๋น ๋ฆ | ์ฝ๊ฐ ๋์ |
thinking_budget: 16384 |
thinking_level: "high" |
3.0์ด ๋ ๋น ๋ฆ | ์ฝ๊ฐ ๋์ |
thinking_budget: -1 (๋์ ) |
thinking_level: "high" (๊ธฐ๋ณธ) |
3.0์ด ๋์ ๋๊ฒ ๋น ๋ฆ | 3.0์ด ๋ ๋์ |
๋ง์ด๊ทธ๋ ์ด์ ์ฝ๋ ์์
def migrate_to_gemini_3(old_model: str, old_config: dict) -> tuple[str, dict]:
"""
Gemini 2.5์์ Gemini 3.0์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํฉ๋๋ค.
Args:
old_model: Gemini 2.5 ๋ชจ๋ธ ์ด๋ฆ
old_config: Gemini 2.5์ extra_body ์ค์
Returns:
(์ ๋ชจ๋ธ ์ด๋ฆ, ์ ์ค์ ๋์
๋๋ฆฌ)
"""
# ๋ชจ๋ธ ์ด๋ฆ ๋งคํ
model_map = {
"gemini-2.5-flash": "gemini-3.0-flash-preview",
"gemini-2.5-pro": "gemini-3.0-pro-preview",
"gemini-2-flash": "gemini-3-flash",
"gemini-2-pro": "gemini-3-pro"
}
new_model = model_map.get(old_model, "gemini-3.0-flash-preview")
# ๋งค๊ฐ๋ณ์ ๋ณํ
if "thinking_budget" in old_config:
budget = old_config["thinking_budget"]
# thinking_level๋ก ๋ณํ
if budget == 0:
new_level = "minimal"
elif budget <= 2048:
new_level = "low"
elif budget <= 8192:
new_level = "medium"
else:
new_level = "high"
# Gemini 3.0 Pro๋ low/high๋ง ์ง์
if "pro" in new_model and new_level in ["minimal", "medium"]:
new_level = "low" if new_level == "minimal" else "high"
new_config = {"thinking_level": new_level}
else:
# ๊ธฐ๋ณธ ์ค์
new_config = {"thinking_level": "medium"}
return new_model, new_config
# ๋ง์ด๊ทธ๋ ์ด์
์์
old_model = "gemini-2.5-flash"
old_config = {"thinking_budget": -1}
new_model, new_config = migrate_to_gemini_3(old_model, old_config)
print(f"๋ง์ด๊ทธ๋ ์ด์
์ : {old_model} {old_config}")
print(f"๋ง์ด๊ทธ๋ ์ด์
ํ: {new_model} {new_config}")
# ์ถ๋ ฅ:
# ๋ง์ด๊ทธ๋ ์ด์
์ : gemini-2.5-flash {'thinking_budget': -1}
# ๋ง์ด๊ทธ๋ ์ด์
ํ: gemini-3.0-flash-preview {'thinking_level': 'high'}
# ์ ์ค์ ์ ์ฌ์ฉํ์ฌ ํธ์ถ
response = client.chat.completions.create(
model=new_model,
messages=[{"role": "user", "content": "์ง๋ฌธ ๋ด์ฉ"}],
extra_body=new_config
)
๐ฏ ๋ง์ด๊ทธ๋ ์ด์ ์ ์: Gemini 2.5์์ 3.0์ผ๋ก ์ ํํ ๋๋ ๋จผ์ APIYI(apiyi.com) ํ๋ซํผ์ ํตํด A/B ํ ์คํธ๋ฅผ ์งํํด ๋ณด์๋ ๊ฒ์ด ์ข์์. ์ด ํ๋ซํผ์ ๋ชจ๋ธ ๋ฒ์ ์ ๋น ๋ฅด๊ฒ ์ ํํ ์ ์์ด ๋ง์ด๊ทธ๋ ์ด์ ์ ํ์ ์๋ต ํ์ง, ์ง์ฐ ์๊ฐ, ๋น์ฉ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌํ๋ฉฐ, ์์ ์ ์ธ ์ ํ์ ๋์์ค๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Q1: ์ ์ฝ๋๊ฐ Gemini 3.0์์๋ ์ ์๋ํ๋๋ฐ, 2.5๋ก ๋ฐ๊พธ๋ฉด ์ ์๋ฌ๊ฐ ๋๋์?
์์ธ: ์ฝ๋์์ thinking_level ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ Gemini 3.0 ์ ์ฉ ํ๋ผ๋ฏธํฐ์ด๋ฉฐ, 2.5 ์๋ฆฌ์ฆ์์๋ ์ ํ ์ง์๋์ง ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:
# ์๋ชป๋ ์ฝ๋ (3.0 ์ ์ฉ)
extra_body = {
"thinking_level": "medium" # โ 2.5์์๋ ์ธ์ํ์ง ๋ชปํจ
}
# ์ฌ๋ฐ๋ฅธ ์ฝ๋ (2.5์ฉ)
extra_body = {
"thinking_budget": 8192 # โ
2.5๋ budget์ ์ฌ์ฉํจ
}
์์์ ์ธ๊ธํ get_gemini_thinking_config() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ต์ ํํ๊ฑฐ๋, APIYI(apiyi.com) ํ๋ซํผ์ ํตํด ํ๋ผ๋ฏธํฐ ํธํ์ฑ์ ๋น ๋ฅด๊ฒ ๊ฒ์ฆํด ๋ณด์๋ ๊ฒ์ ์ถ์ฒ๋๋ ค์.
Q2: Gemini 2.5 Flash์ Gemini 3.0 Flash์ ์ฑ๋ฅ ์ฐจ์ด๋ ์ด๋ ์ ๋์ธ๊ฐ์?
Google ๊ณต์ ๋ฐ์ดํฐ์ ์ปค๋ฎค๋ํฐ ํ ์คํธ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
| ํญ๋ชฉ | Gemini 2.5 Flash | Gemini 3.0 Flash | ํฅ์ ํญ |
|---|---|---|---|
| ์ถ๋ก ์๋ | ๊ธฐ์ค | 2๋ฐฐ ๋ ๋น ๋ฆ | +100% |
| ์ง์ฐ ์๊ฐ | ๊ธฐ์ค | ํ์ ํ ๊ฐ์ | ์ฝ -50% |
| ์ฌ๊ณ ํจ์จ | ๊ณ ์ ์์ฐ ๋๋ ๋์ | ์๋ ์ต์ ํ | ํ์ง ํฅ์ |
| ๋น์ฉ | ๊ธฐ์ค | ์ฝ๊ฐ ๋์ (๊ณ ํ์ง) | +10-20% |
ํต์ฌ ์ฐจ์ด์ : Gemini 3.0์ ๋์ ์ฌ๊ณ ํ ๋น ๋ฐฉ์์ ์ฑํํ์ฌ ํ์ํ ๊ฒฝ์ฐ์๋ง ํ์ํ ๋งํผ ์ฌ๊ณ ํ๋ ๋ฐ๋ฉด, 2.5์ ๊ณ ์ ์์ฐ ๋ฐฉ์์ ๊ณผ๋ํ๊ฒ ์ฌ๊ณ ํ๊ฑฐ๋ ์ฌ๊ณ ๊ฐ ๋ถ์กฑํด์ง ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
์ค์๊ฐ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง๊ณผ ๋น์ฉ ๋ถ์์ ์ ๊ณตํ๋ APIYI(apiyi.com) ํ๋ซํผ์์ ์ค์ ํ ์คํธ๋ฅผ ์งํํด ๋ณด์ธ์. ๋ชจ๋ธ๋ณ ์ค์ ์ฑ๋ฅ์ ๊ฐํธํ๊ฒ ๋น๊ตํ ์ ์์ต๋๋ค.
Q3: Gemini 3.0์์ ์ฌ๊ณ ๋ชจ๋๋ฅผ ์์ ํ ๋ ์ ์๋์?
์ค์: Gemini 3.0 Pro๋ ์ฌ๊ณ ๋ชจ๋๋ฅผ ์์ ํ ๋นํ์ฑํํ ์ ์์ต๋๋ค. thinking_level: "low"๋ก ์ค์ ํ๋๋ผ๋ ๊ฐ๋ฒผ์ด ์ถ๋ก ๋ฅ๋ ฅ์ ์ ์ง๋ฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ :
- Gemini 3.0 Flash:
thinking_level: "minimal"์ ์ฌ์ฉํ๋ฉด ์ ๋ก(0) ์ฌ๊ณ ์ ๊ฐ๊น๊ฒ ์๋ํฉ๋๋ค. (๋จ, ๋ณต์กํ ์ฝ๋ฉ ์์ ์์๋ ์ฌ์ ํ ๊ฐ๋ฒผ์ด ์ฌ๊ณ ๋ฅผ ํ ์ ์์ต๋๋ค.) - Gemini 3.0 Pro: ์ตํ
thinking_level: "low"๊น์ง๋ง ์ค์ ๊ฐ๋ฅํฉ๋๋ค.
์์ ํ ๋นํ์ฑํ๊ฐ ํ์ํ ๊ฒฝ์ฐ:
# Gemini 2.5 Flash๋ง ์์ ๋นํ์ฑํ๋ฅผ ์ง์ํจ
model = "gemini-2.5-flash"
extra_body = {
"thinking_budget": 0 # ์ฌ๊ณ ๋ชจ๋ ์์ ๋นํ์ฑํ
}
๊ทน๊ฐ์ ์๋๊ฐ ํ์ํ๊ณ ์ถ๋ก ๋ฅ๋ ฅ์ด ํ์ ์๋ ์ํฉ(๋จ์ ์ง์ ์ํ ๋ฑ)์ด๋ผ๋ฉด, APIYI(apiyi.com)๋ฅผ ํตํด Gemini 2.5 Flash๋ฅผ ํธ์ถํ๊ณ
thinking_budget: 0์ผ๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ถ์ฒ๋๋ ค์.
Q4: Gemini ์ด๋ฏธ์ง ๋ชจ๋ธ๋ ์ฌ๊ณ ๋ชจ๋๋ฅผ ์ง์ํ๋์?
์ง์ํ์ง ์์ต๋๋ค. ๋ชจ๋ Gemini ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ชจ๋ธ(gemini-2.5-flash-image, gemini-pro-vision ๋ฑ)์ ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
์๋ชป๋ ์์:
# โ ์ด๋ฏธ์ง ๋ชจ๋ธ์ ์ด๋ค ์ฌ๊ณ ํ๋ผ๋ฏธํฐ๋ ์ง์ํ์ง ์์
response = client.chat.completions.create(
model="gemini-2.5-flash-image",
messages=[...],
extra_body={
"thinking_budget": -1 # ์๋ฌ ์ ๋ฐ
}
)
์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ:
# โ
์ด๋ฏธ์ง ๋ชจ๋ธ ํธ์ถ ์์๋ ์ฌ๊ณ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ์ง ์์
response = client.chat.completions.create(
model="gemini-2.5-flash-image",
messages=[...],
# extra_body๋ฅผ ์์ ๋ณด๋ด์ง ์๊ฑฐ๋ ๋ค๋ฅธ ๋น์ฌ๊ณ ํ๋ผ๋ฏธํฐ๋ง ์ ๋ฌ
)
๊ธฐ์ ์ ์ด์ : ์ด๋ฏธ์ง ๋ชจ๋ธ์ ์ถ๋ก ์ํคํ ์ฒ๋ ์๊ฐ์ ์ดํด์ ์ง์ค๋์ด ์์ด, ์ธ์ด ๋ชจ๋ธ์ ์ฌ๊ณ ์ฌ์ฌ(Chain of Thought) ๋ฉ์ปค๋์ฆ์ ํฌํจํ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ฝ
Gemini 2.5 Flash์์ thinking_level not supported ์๋ฌ๊ฐ ๋ฐ์ํ๋ ํต์ฌ ์์ฝ:
- ํ๋ผ๋ฏธํฐ ๊ฒฉ๋ฆฌ: Gemini 2.5๋
thinking_budget๋ง, 3.0์thinking_level๋ง ์ง์ํ๋ฉฐ ์๋ก ํธํ๋์ง ์์ต๋๋ค. - ๋ชจ๋ธ ์๋ณ: ๋ชจ๋ธ ์ด๋ฆ์ผ๋ก ๋ฒ์ ์ ํ๋จํ์ธ์. 2.5 ์๋ฆฌ์ฆ๋
thinking_budget์, 3.0 ์๋ฆฌ์ฆ๋thinking_level์ ์ฌ์ฉํฉ๋๋ค. - ์ด๋ฏธ์ง ๋ชจ๋ธ ์ ํ: ๋ชจ๋ ์ด๋ฏธ์ง ๋ชจ๋ธ(์:
gemini-2.5-flash-image)์ ์ด๋ ํ ์ฌ๊ณ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ ์ง์ํ์ง ์์ต๋๋ค. - ๋นํ์ฑํ ์ฐจ์ด: ์ค์ง Gemini 2.5 Flash๋ง ์ฌ๊ณ ๋ชจ๋ ์์ ๋นํ์ฑํ(
thinking_budget: 0)๊ฐ ๊ฐ๋ฅํ๋ฉฐ, 3.0 ์๋ฆฌ์ฆ๋minimal์ด ์ตํ ๋จ๊ณ์ ๋๋ค. - ๋ง์ด๊ทธ๋ ์ด์
์ ๋ต: 2.5์์ 3.0์ผ๋ก ์ ํํ ๋๋
thinking_budget์thinking_level๋ก ๋งคํํ๊ณ , ์ฑ๋ฅ๊ณผ ๋น์ฉ ๋ณํ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ค์ํ ๋ชจ๋ธ์ ์ฌ๊ณ ํ๋ผ๋ฏธํฐ ํธํ์ฑ๊ณผ ์ค์ ํจ๊ณผ๋ฅผ APIYI(apiyi.com)์์ ๋น ๋ฅด๊ฒ ํ์ธํด ๋ณด์ธ์. Gemini ์ ์๋ฆฌ์ฆ ๋ชจ๋ธ์ ์ง์ํ๋ฉฐ, ํตํฉ ์ธํฐํ์ด์ค์ ์ ์ฐํ ๊ณผ๊ธ ๋ฐฉ์์ ํตํด ๋น ๋ฅธ ๋น๊ต ํ ์คํธ์ ์ด์ ํ๊ฒฝ ๋ฐฐํฌ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
์์ฑ์: APIYI ๊ธฐ์ ํ | ๊ธฐ์ ์ ์ธ ๋ฌธ์๊ฐ ์์ผ์๋ฉด APIYI(apiyi.com)๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ๋ ๋ง์ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ ์ฐ๋ ์๋ฃจ์ ์ ํ์ธํด ๋ณด์ธ์.
