๐ Gato GraphQL v18.0 ์ถ์: ํ์ฑ๋ ์ฟผ๋ฆฌ ์บ์ฑ, ๊ฐํ๋ ๋ณด์, ์๋ก์ด Gemini ๋ฒ์ญ ๊ณต๊ธ์
Gato GraphQL v18.0์ด ์ถ์๋์์ต๋๋ค ๐
์ด๋ฒ ๋ฆด๋ฆฌ์ค๋ ์ฒ๋ฆฌ ์๋๊ฐ ๋์ ๋๊ฒ ๋นจ๋ผ์ง๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํฌ๊ฒ ์ค์์ผ๋ฉฐ, ๋ฐ๋ณต์ ์ธ ํ์ฑ ๋ฐ ์ปดํ์ผ ์์ ์ ๊ฑด๋๋ฐ๊ธฐ ์ํด ํ์ฑ๋ GraphQL ์ฟผ๋ฆฌ๋ฅผ ๋์คํฌ์ ์บ์ํ ์ ์๊ฒ ๋์์ต๋๋ค. ๋ํ Email SenderยทHTTP ClientยทEnvironment Variable ํ๋์ ๊ธฐ๋ณธ capability ๊ฒ์ฌ๊ฐ ๊ฐํ๋๊ณ , ์ฌ๋ฌ ๋ฒ๊ทธ ์์ ๋ฐ ๋ณด์ ํจ์น๊ฐ ํฌํจ๋์์ผ๋ฉฐ, ์๋ก์ด Gemini ๋ฒ์ญ ๊ณต๊ธ์์ ๋ฒ์ญ์ฉ ์ค์ ๊ฐ๋ฅํ Request ๋ฐ Connection ํ์์์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ฃผ์ ๋ด์ฉ์ ์ดํด๋ณด์ธ์.
โก ํ์ฑ๋ GraphQL ์ฟผ๋ฆฌ๋ฅผ ๋์คํฌ์ ์บ์
๋ชจ๋ ์์ฒญ์ GraphQL ์ฟผ๋ฆฌ๋ฅผ ํ์ฑํ๊ณ , ์คํค๋ง์ ๋ํด ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ฉฐ, ์คํ ๊ณํ์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค. v18์์๋ ์ค๋น๋ ์ฟผ๋ฆฌ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๊ณ ์ดํ ์คํ ์ ๋ค์ ๋ถ๋ฌ์ด์ผ๋ก์จ ๋ฐ๋ณต์ ์ธ ํ์ฑ ๋ฐ ์ปดํ์ผ ์์ ์ ์์ ํ ๊ฑด๋๋ธ ์ ์๊ฒ ๋์์ต๋๋ค.
Settings ํ์ด์ง์ Server Configuration > Caching > Cache parsed GraphQL queries? ์์ ํ์ฑํํ ์ ์์ต๋๋ค:

์ด๊ฒ์ ์ฟผ๋ฆฌ์ ์ค๋น ์ฒ๋ฆฌ(ํ์ฑ ๋ฐ ์ปดํ์ผ)๋ฅผ ์บ์ํ๋ ๊ฒ์ด์ง, ์๋ต ๋ฐ์ดํฐ๋ฅผ ์บ์ํ๋ ๊ฒ์ด ์๋๋๋ค. ์๋ต์ HTTP ์บ์ฑ์ ๋ํด์๋ HTTP ์บ์ฑ ์ถ๊ฐํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ผ์ ํ๋ฌ๊ทธ์ธ ์บ์ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ํ๋ฌ๊ทธ์ธ ํด๋์ ์ฐ๊ธฐ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ์บ์ ์ ์ฅ ์์น๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค โ ์บ์ ํด๋ ์ฌ์ ์ํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
โก๏ธ ์์ธํ ๋ด์ฉ์ ํ์ฑ๋ GraphQL ์ฟผ๋ฆฌ ์บ์ฑ์ ์ฐธ์กฐํ์ธ์.
โก ์ ๋ฐ์ ์ธ ๊ณ ์ํ ๋ฐ ๊ฒฝ๋ํ
ํ์ฑ๋ ์ฟผ๋ฆฌ ์บ์ ์ธ์๋, v18์์๋ ํ๋ฌ๊ทธ์ธ ๋ด๋ถ ์ฒ๋ฆฌ๊ฐ ์ ๋ฉด์ ์ผ๋ก ๊ฐ์ ๋์์ต๋๋ค: ๋ชจ๋ GraphQL ์์ฒญ์ด ๋์ ๋๊ฒ ๋นจ๋ผ์ง๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํฌ๊ฒ ์ค์์ต๋๋ค.
์ด ๊ฐ์ ์ ์ ์ฒด์ ์ผ๋ก ์ ์ฉ๋์ด ๋ชจ๋ ์ฟผ๋ฆฌ, ๋ชจ๋ ๋๋ ํฐ๋ธ, ๋ชจ๋ persisted query์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ํนํ ๋๊ท๋ชจ ์คํค๋ง, ๊ธด ์ฟผ๋ฆฌ, ํ์ด์ง๋น ๋ง์ GraphQL ์์ฒญ์ ์คํํ๋ ์ฌ์ดํธ(์: ํค๋๋ฆฌ์ค WordPress, ๋ด๋ถ API)์์ ๋๋๋ฌ์ง ํจ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
์ด์ ์ PHP ๋ฉ๋ชจ๋ฆฌ ํ๋์ ๋ถ๋ชํ๊ฑฐ๋ ์๋ต์ด ๋๋ ธ๋ ๋๊ท๋ชจ ์ฌ์ดํธ์์๋ ์ค์ ๋ณ๊ฒฝ ์์ด ์ค์ง์ ์ธ ์ฐจ์ด๋ฅผ ๋๋ ์ ์์ ๊ฒ์ ๋๋ค โ ํ๋ฌ๊ทธ์ธ๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋ฉ๋๋ค.
๐ ๋ณด์ ๊ธฐ๋ณธ๊ฐ ๊ฐํ
ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ์์ ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ธ ๊ฐ์ง ์์ญ์์ ๊ธฐ๋ณธ ์ค์ ์ด ๊ฐํ๋์์ต๋๋ค.
Email Sender โ ํ์ํ capability
_sendEmail mutation์ ์ด์ Plugin Configuration > Email Sender์์ ์ค์ ๋ ํน์ WordPress capability๋ฅผ ๊ฐ์ง ์ฌ์ฉ์๋ก ์ ํํ ์ ์์ต๋๋ค.

๊ธฐ๋ณธ๊ฐ์ manage_options์ด๋ฏ๋ก ๊ตฌ๋ ์๊ฐ mutation์ ์ฌ์ฉํ์ฌ ์์์ ์์ ์์๊ฒ ์คํธ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด **(any logged-in user)**๋ฅผ ์ ํํ์ธ์.
HTTP Client โ ๋ด๋ถ URL ์ ๊ทผ์ ํ์ํ capability
์ผ๋ถ URL์ ๋ด๋ถ ์ฃผ์(127.0.0.1, ๋งํฌ-๋ก์ปฌ ๋ฒ์, ํด๋ผ์ฐ๋ ๋ฉํ๋ฐ์ดํฐ ์๋ํฌ์ธํธ ๋ฑ)๋ก ํด์๋์ด ์ ๊ทผ ์ ๋ด๋ถ ์๋น์ค๊ฐ ๋
ธ์ถ๋ ์ ์์ต๋๋ค. Plugin Configuration > HTTP Client์ ์ ์ค์ ์ ํตํด ํด๋น ์ฃผ์์ ๋ํ ์ ๊ทผ์ ํน์ WordPress capability๋ฅผ ๊ฐ์ง ์ฌ์ฉ์๋ก ์ ํํ ์ ์์ต๋๋ค.

๊ธฐ๋ณธ๊ฐ์ manage_options์ด๋ฏ๋ก ๋น๊ด๋ฆฌ์ ์ฌ์ฉ์๊ฐ HTTP Client ํ๋๋ฅผ ํตํด ๋ด๋ถ ์๋น์ค์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด **(any logged-in user)**๋ฅผ ์ ํํ์ธ์.
Environment Variables โ ๋น๊ด๋ฆฌ์ ์ฌ์ฉ์๋ฅผ ์ํ denylist
_env ํ๋๋ ์ด๋ฏธ ๋ช
์์ ์ธ allow-list๋ฅผ ํ์๋ก ํ๋ฉฐ, ํด๋น ๋ชฉ๋ก์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ด ์์ต๋๋ค. v18์์๋ ๋น๊ด๋ฆฌ์ ์ฌ์ฉ์๋ฅผ ์ํ ์ถ๊ฐ ์์ ๋ง์ด ๋์
๋์์ต๋๋ค: ์ด๋ฌํ ์ด๋ฆ์ด ์ค์ ์ allow-list์ ํฌํจ๋์ด ์๋๋ผ๋ ์ ๊ทผ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค.
ํญ์ ๊ฑฐ๋ถ๋จ (WordPress ์ํฌ๋ฆฟ):
AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT, DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_CHARSET, DB_COLLATE.
๋ํ ๊ฑฐ๋ถ๋จ โ ์ด๋ฆ์ ๋ค์์ ํฌํจํ๋ ๋ณ์: PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.
๊ด๋ฆฌ์ ์ฌ์ฉ์๋ ๊ณ์ํด์ ์ ์ฒด ์ ๊ทผ ๊ถํ์ ๊ฐ์ง๋๋ค.
โก๏ธ ์ ์ฒด ๋ชฉ๋ก์ ๋ฌธ์์ ๋ณด์ ์น์ ์ ์ฐธ์กฐํ์ธ์.
๐ ๋ฒ์ญ: ์๋ก์ด Gemini ๊ณต๊ธ์
@strTranslate ๋๋ ํฐ๋ธ๊ฐ ChatGPT, Claude, DeepL, DeepSeek, Google Translate, Mistral, OpenRouter ๋ฐ ์
ํ ํธ์คํ
LLM๊ณผ ํจ๊ป ๋ฒ์ญ ๊ณต๊ธ์๋ก Google Gemini๋ฅผ ์ง์ํ๊ฒ ๋์์ต๋๋ค.
๋ชจ๋ String ํ๋๋ฅผ ์ํ๋ ์ธ์ด๋ก ๋ฒ์ญํ ์ ์์ต๋๋ค:
{
posts {
title @strTranslate(
from: "en",
to: "fr",
provider: gemini
)
content @strTranslate(
from: "en",
to: "fr",
provider: gemini
)
}
}๋ค์ Gemini ๋ชจ๋ธ์ด ์ง์๋ฉ๋๋ค:
- Gemini 2.0 Flash (
gemini-2.0-flash) - Gemini 2.0 Flash-Lite (
gemini-2.0-flash-lite) - Gemini 2.5 Flash (
gemini-2.5-flash) - Gemini 2.5 Flash-Lite (
gemini-2.5-flash-lite) - Gemini 2.5 Pro (
gemini-2.5-pro) - Gemini 3.1 Flash-Lite (
gemini-3.1-flash-lite)
Google API ํค๋ฅผ ์ค์ ํ๊ณ (Settings, wp-config.php, ๋๋ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด), ๋ชจ๋ธ์ ์ ํํ๋ฉด ๋ฒ์ญ ์ค๋น๊ฐ ์๋ฃ๋ฉ๋๋ค.
โก๏ธ Gemini ๋ฒ์ญ ๋ ํผ๋ฐ์ค ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
โฑ๏ธ ๋ฒ์ญ: Request ๋ฐ Connection ํ์์์
๊ธด ๋ฌธ์๋ฅผ ์๋ํํฐ ๊ณต๊ธ์๋ฅผ ํตํด ๋ฒ์ญํ๋ ๋ฐ๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ, ์ ์คํธ๋ฆผ์ด ์๋ตํ์ง ์์ผ๋ฉด PHP๊ฐ ์์ฒญ์ ๊ฐ์ ์ข ๋ฃํ ๋๊น์ง PHP ์์ปค๊ฐ ์ ์ ๋์ด ์ผ๋ฐ์ ์ธ HTTP 502/504 ์ค๋ฅ๋ ๋น ใMaximum execution time exceededใ ํ์ด์ง๊ฐ ํ์๋ ์ ์์ต๋๋ค.
v18์์๋ Plugin Configuration > Translation์ ๋ ๊ฐ์ง ํ์์์ ์ค์ ์ด ์ถ๊ฐ๋์์ต๋๋ค:
- Request timeout: ๋ฒ์ญ ๊ณต๊ธ์๋ก๋ถํฐ ์ ์ฒด ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ต๋ ์๊ฐ(์ด ๋จ์).
- Connection timeout: ์ฐ๊ฒฐ์ ์๋ฆฝํ ๋ ๊ธฐ๋ค๋ฆฌ๋ ์ต๋ ์๊ฐ(์ด ๋จ์).

์๋ฒ์ ์ผ๋ฐ ํ์์์์ด ๋ฐ์ํ๋ ๋์ ๋ฒ์ญ์ด ์ค๋จ๋ ๋ ๋ก๊ทธ์ ์ ์ด๋ ์ค๋ฅ๋ก ๊ธฐ๋ก๋๋๋ก, ๋ ๊ฐ ๋ชจ๋ ์๋ฒ์ max_execution_time๋ณด๋ค ์ฝ๊ฐ ๋ฎ๊ฒ ์ค์ ํ์ธ์. ๋ฒ์ญ์ด ์์ฃผ ํ์์์๋๋ ๊ฒฝ์ฐ, ๋ ๊ฐ๊ณผ ์๋ฒ์ max_execution_time์ ํจ๊ป ๋์ด์ธ์.
๐ ๋ฒ๊ทธ ์์ ๋ฐ ๋ณด์ ํจ์น
์์ ์ ๊ธฐ๋ฅ ์ธ์๋, v18.0์๋ ์ฌ๋ฌ ๋ฒ๊ทธ ์์ ๊ณผ ๋ช ๊ฐ์ง ๋ณด์ ์ทจ์ฝ์ ํจ์น๋ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ v18๋ก ์ ๋ฐ์ดํธํ์ค ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
์ ๊ทธ๋ ์ด๋
๋ฆด๋ฆฌ์ค๋ ํ์ฌ WordPress ํ๋ฌ๊ทธ์ธ ๋๋ ํฐ๋ฆฌ์ ๊ณ ๊ฐ ๋์๋ณด๋๋ฅผ ํตํด ๋ฐฐํฌ ์ค์ ๋๋ค. WordPress ๊ด๋ฆฌ์ ํ๋ฉด(ํ๋ฌ๊ทธ์ธ โ ์ ๋ฐ์ดํธ)์์ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ๊ณ์ ์์ ์ต์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํ์ธ์.
๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฒด ๋ชฉ๋ก์ changelog๋ฅผ ์ฐธ์กฐํ์ธ์.
v18์ ์ฆ๊ฒจ ์ฌ์ฉํ์ธ์! ๐