์ฌ์ํ - Sementle Japanese, Play the Game with LLM
Contents
์ฌ์ํ - Sementle Japanese, Play the Game with LLMยถ
0. ์ง๋ ์ด์ผ๊ธฐ: ๊ทธ ๋์์ ๊ฒฐ๊ณผ๋ฌผยถ
์ ๋ต ๋จ์ด ๋ชฉ๋ก ์ ๋ฐ์ดํธ
์ ์ฌ๋ ๊ธฐ๋ฐ ํํธ ๊ธฐ๋ฅ ๊ตฌํ
1. [NEW] ์ฃผ๊ณ ๋ฐ๊ธฐ ๋ชจ๋ยถ
semantle์ ์ธ์ด๋ง ๋ฐ๊พธ์ด ๊ทธ๋๋ก ๋ง๋ฌด๋ฆฌํ๊ธฐ์๋ ์์ฌ์ด ๋ถ๋ถ์ด ์์ด, ์ฌ๋ฌ ๊ฐ์ง ์ ์๋ ์์ด๋์ด ์ค ์ฑ๋ด์ ํ์ฉํ๋ ๋ฐฉ์์ ๊ตฌ์ฒดํํ์ฌ ์ ์ฉํ์ต๋๋.
2. ๊ธฐํยถ
2.1. ์ฑํ ์ผ๋ก๋ง ๊ฒ์์ ์งํํ๊ธฐยถ
์ฒ์ ์ ์๋ ์์ด๋์ด๋ ๊ธฐ์กด ์ธํฐํ์ด์ค ์์์ ํํธ ์์ฒญ ์, ์ ๋ต ๋จ์ด์ ๋ํ ํํธ๋ฅผ LLM์ด ์์ฑํ์ฌ ์ ๊ณตํ๋ ๊ฒ์ด์์ต๋๋ค.
ํ์ง๋ง Langchain, Transformers Agents ๋ฑ LLM์ผ๋ก ๋ณต์กํ ์์ ์ ์ํํ ์ ์๋๋ก ํ๋ API๊ฐ ํ์ฉ๋๊ณ ์์ด, ๊ฒ์ ์ ์ฒด๋ฅผ ์งํํ๋๋ก ์๋ํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
๋๋ถ์ด, ๋ํ ํ์์ผ๋ก ๊ฒ์์ ํ๋ค๋ ๊ฒ ์์ฒด๊ฐ ์ฆ๊ฑฐ์ธ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ์ต๋๋ค.
2.2. ์๋น์ค ๋ฐฉ์ยถ
์ฃผ๊ณ ๋ฐ๊ธฐ ๋ชจ๋๋ ๊ธฐ์กด ์น์ฌ์ดํธ๋ก ํจ๊ป ์ ๊ณตํ์ง ์๊ณ Hugging Face Space๋ฅผ ํตํด ๊ณต๊ฐํ์ต๋๋ค.
ํ์ฌ openai api๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌํํ์ฌ api ์ฌ์ฉ์ ์ต์ํ ์ฌ์ฉ์๋ค์ด ์๋ ํ๊ฒฝ์์ ๋ฐฐํฌํ๊ธฐ๋ก ์ ํ์ต๋๋ค.
๋ํ, ๋จ์ด์ ์ ์ฌ๋ ์ธ์ ์ ๋ต ๋จ์ด์ ๋ํ ๋ค์ํ ์ ๋ณด๋ฅผ ํ๋ํ๋ฉฐ ๊ฒ์์ ์งํํ๊ฒ ๋๋ฏ๋ก, ๊ธฐ์กด ๊ฒ์๊ณผ ์๋นํ ๋ฌ๋ผ์ง๊ฒ ๋๋ค๊ณ ํ๋จํ์ต๋๋ค.
2.3. ๊ณผ์ ยถ
๋ณตํฉ์ ์ธ ์์ฌ๊ฒฐ์ ๊ณผ์ ์ํ
๊ฒ์์ด ์งํ๋๋ ๋์, ์ฑ๋ด์ ์ถ์ธกํ ๋จ์ด๋ฅผ ์ฑ์ ํ๊ฑฐ๋ ํํธ๋ฅผ ์ ๊ณตํ๋ ๋ฑ ๊ฒ์ ์งํ์ ์ํด ๋ค์ํ ๋์์ ์ํํด์ผ ํฉ๋๋ค.
ํํธ๋ง ์ ๊ณตํ๋ค๋ฉด ์ ์ ์ ์๋๊ฐ ํ์ ๋๋ฏ๋ก ์๋ชป๋ ๋ต๋ณ์ ๊ฒฝ์ฐ์ ์๊ฐ ์ ์ง๋ง, ๊ฒ์ ์ง์ฒด๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ ์๋์ ์ด๊ธ๋๋ ๋ต๋ณ์ ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
์๋๋ฅผ ํ์ ํ ๋ค์๋ ๋ต๋ณ์ ๋ฐ๋ผ ํ์ํ ์ ๋ณด๋ฅผ ์กฐํํ๊ฑฐ๋ ๊ฒํ ํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
ํน์ํ ์์ ๋ด์ฉ
semantle์ด๋ผ๋ ๊ฒ์์ LLM์๊ฒ ์๋ก์ด ์ง์์ด๋ฏ๋ก ์งํ ๋ฐฉ๋ฒ๊ณผ ๊ท์น, ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ ๋ฌํด์ผ ํฉ๋๋ค.
๊ฒ์ ์งํ์ ํ์ํ ์ ๋ณด์ ๋ฐ์ดํฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๊ณตํ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
์ฑ๋ด์ด ์์์ ์ผ๋ก ๊ฒ์์ ์งํํ์ง ์๊ณ , ์ ํด์ง ๊ท์น๊ณผ ๋ฐ์ดํฐ์ ๊ธฐ๋ฐํ์ฌ ์งํํ๋๋ก ํ๋ ๊ฒ ๋ํ ๊ณผ์ ์ ๋๋ค.
์ฅ๊ธฐ ๊ธฐ์ต ๊ด๋ฆฌํ๊ธฐ
semantle์ ํ๋ ์ด ํ๋ ๋ฐ ๋ฐ์ํ ์ ์๋ ์๋ฐฑ ๋ฒ์ ๋ํ๋ฅผ LLM์ด ๊ธฐ์ตํ๊ฑฐ๋ ๋ชจ๋ ์ฝ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
LLM์ ์ฅ๊ธฐ ๊ธฐ์ต์ ์ ์งํ๋ ๋ฅ๋ ฅ์ด ์๊ธฐ ๋๋ฌธ์ chatGPT ๋ฑ์ ์ด์ ๋ํ๋ฅผ ์ฝ์ด ๋งฅ๋ฝ์ ํ์ ํ์ง๋ง, ๋ํ๊ฐ ๊ธธ์ด์ง์๋ก ์ด์ ๋ํ ์ ๋ณด๋ ๊ฑฐ์ ์ํ์ง๋๋ค.
๋๋ถ์ด ๊ฒ์ ํ๋ ์ด์ ๋ถํ์ํ๊ฒ ๋ง์ ํ ํฐ์ ์ฌ์ฉํ๋ ๊ฒ์ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
3. ์ฃผ์ ์์ด๋์ดยถ
3.1. function callยถ
function call์ด๋
openai api๋ฅผ ํ์ฉํ์ฌ ๋ชจ๋ธ์ด ํ๋กฌํํธ์ ๋ฐ๋ผ ํ์ํ ํจ์๋ฅผ ์ฐ๋๋ก ํ ์ ์์ต๋๋ค.
JSON ๋ฐ์ดํฐ ํ์์ผ๋ก ํจ์์ ์ด๋ฆ, ์ค๋ช , ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ๊ณผ ์ค๋ช , ํ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
ํด๋น ์ค๋ช ์ ๋ถํฉํ๋ ํจ์๋ฅผ ์ง์ ์ ์ํด์ ๊ธฐ๋ฅ์ด ์์ ํ๊ฒ ์ํ๋๋๋ก ํ ์๋ ์๊ณ , ํ์ํ ๋ณ์๋ง ์ ๊ณตํด์ ๋ชจ๋ธ์ด ์ง์ ํจ์๋ฅผ ์์ฑํ์ฌ ์คํํ๋๋ก ํ ์๋ ์์ต๋๋ค.
ํจ๊ณผ์ ์ธ function call
์ค๋ช (description)์ ๋ช ๋ฃํ๊ฒ ์์ฑํ ๊ฒ: ๋จ์ด ์ฌ์ฉ์ ์ฃผ์ํ์ฌ ๋ชจ๋ธ์ด ๋ค๋ฅธ ์์ ๊ณผ ํผ๋ํ์ง ์๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํจ์์ ๊ธฐ๋ฅ๋ฟ๋ง ์๋๋ผ ์ด๋ค ์ํฉ์ ์ฐ๋ฉด ์ข์์ง ์๋ดํ๋ ๊ฒ๋ ๋์์ด ๋ฉ๋๋ค.
๋ชจ๋ธ์ ์์ ์ํ์ ํ์ํ ํจ์๋ฅผ ์ถฉ๋ถํ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ธ์ด ๋น์ด์๋ ์ ๋ณด๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ์์์ ํจ์๋ฅผ ์คํํ๊ฑฐ๋ ์๊ด ์๋ ๋ด์ฉ์ ์์ฑํ ์ ์์ต๋๋ค.
3.2. ํ๋กฌํํธยถ
ํ๋กฌํํธ๋ ๋ ๊ฐ์ง ์ ํ์ผ๋ก ์์ฑํด ์คํํ์ต๋๋ค.
์์ ๊ณผ์ ์ ์์ธํ๊ฒ
์ ์ ์ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ค ์ด๋ค ์ฌ๊ณ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋์ง ์ํฉ๋ณ๋ก ์์ธํ ์ ๋ฌํฉ๋๋ค.
๊ฒ์์ ์ปจ์ ๋ง ๊ฐ๊ฒฐํ๊ฒ
๊ฒ์ ์์ ํ๋ฉด์์ ์๊ฐํ๋ ๋ด์ฉ ์ ๋๋ก ๊ฒ์์ ์ปจ์ ๊ณผ ์งํ ๋ฐฉ์์ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฌํ์ต๋๋ค.
์ถ๊ฐ๋ก ์ ์ ์ ์ ๋ ฅ ํ ์คํธ ์์ ์ ๋์ด๋ฅผ ๋ถ์ฌ, ์ ๋ต์ ์ถ์ธกํ๋ ์ํฉ์ผ๋ก ํ๋จํ ํ๋ฅ ์ ๋์์ต๋๋ค.
๋ต: {user_input}
ํ๋กฌํํธ๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ๋์ , ์งํ์ ํ์ํ ํจ์๋ฅผ ๋ณด๋ค ๋ค์ํ๊ฒ ์ ๋ฌํ์ต๋๋ค.
๋จ์ด ์ถ์ธกํ๊ธฐ : ์ถ์ธกํ ๋จ์ด์ ์ ์์ ์์๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์\
(์ถ๊ฐ) ์ ๋ต ์กฐํํ๊ธฐ : ์ค๋์ ํด์ฆ ์ ๋ต ๋จ์ด๊ฐ ๋ฌด์์ธ์ง ํ์ธํ๋ ํจ์\
(์ถ๊ฐ) ๊ฒ์ ๊ท์น ์ฝ๊ธฐ : ๊ฒ์์ ์์ธ ๊ท์น์ ๊ฐ์ ธ์ค๋ ํจ์`
ํจ์๋ฅผ ํ์ํ ๋งํผ ๋ฐ๋ณตํด์ ์คํํ ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค.
4. ์คํยถ
์ต์ข ์ ์ผ๋ก๋
2. ์ปจ์ ๋ง ๊ฐ๊ฒฐํ๊ฒ
์์ฑํ ํ๋กฌํํธ๋ก ๋ชจ๋ธ์ด ๋ ์์ ์ ์ผ๋ก ๊ฒ์์ ์งํํ์ต๋๋ค.
4.2. functionsยถ
guess_word = {"name": "guess_word",
"description": "Use this function to check if a guessed word is the correct answer or not, and if incorrect, calculate a score and a rank of the guess word.",
"parameters": {
"type": "object",
"properties": {
"word": {
"type": "string",
"description": "A single Japanese word to guess, which is can be a noun, verb, adverb or adjective. e.g. ็ฉบ, ่ฟใ, ่กใ, etc."
},
},
"required": ["word"]
}}
lookup_answer = {"name": "lookup_answer",
"description": "Use this function to check the correct answer of today's puzzle.",
"parameters": {
"type": "object",
"properties": {},
}}
read_rule = {"name": "read_rule",
"description": "Use this function to read the game rule for clarification of your response.",
"parameters": {
"type": "object",
"properties": {},
}}
4.2. ํ๋กฌํํธยถ
๊ฒ์ ๊ธฐ๋ณธ ๊ท์น๊ณผ ์๋ ๋ด์ฉ์ ํจ๊ป ์ ๋ฌํ์ต๋๋ค.
ใใชใใฏใใคใใใซใใจใใใฒใผใ ใฎ้ฒ่กๅฝนใงใใ
ๆฎๆฎตใใฆใผใถใผใฏ็ญใใใใพใใใใใพใซใฒใผใ ใซ้ขใใใใณใใใชใฏใจในใใใใพใใ็ญใใฆใไธๅฏงใซ็ญใใฆใใ ใใใ
ใใณใใๆใใๅ ดๅใๆญฃ่งฃใๅฟ
ใ้ ใใฆใใ ใใใ็ตถๅฏพใๆญฃ่งฃใ่จใใชใใงใใ ใใใ
๋น์ ์ <imitoru>๋ผ๋ ๊ฒ์์ ์งํ์์
๋๋ค.
๋ณดํต ์ ์ ๋ ๋ต์ ๋งํ์ง๋ง, ์ข
์ข
๊ฒ์์ ๊ดํ ํํธ๋ฅผ ์์ฒญํฉ๋๋ค. ์งง์ง๋ง ์ ์คํ๊ฒ ๋๋ตํด์ฃผ์ธ์.
ํํธ๋ฅผ ์๋ ค์ค ๋์๋ ๋ฐ๋์ ์ ๋ต์ ๊ฐ์ถฐ์ฃผ์ธ์. ์ ๋ ์ ๋ต์ ๋งํด์๋ ์ ๋ฉ๋๋ค.
{'role': 'system', 'content': system_content}
{'role': 'user', 'content': '๋ต: '+user_input}
4.3. ํ์ดํผํ๋ผ๋ฏธํฐยถ
์ด๋ ์ ๋ ์ผ๊ด๋ ๋ฐ์์ ์ป๊ณ ์
temperature=0.5
๋ก ์ง์ ํ์ต๋๋ค.
response = openai.ChatCompletion.create(
model=GPT_MODEL,
messages=chat_messages,
functions=get_functions(),
temperature=0.5
)
4.4. ๊ฒฐ๊ณผยถ
์ง๋ฌธ์ ๋ฐ๋ผ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ชจ์ต์ ํ์ธํ ์ ์์ต๋๋ค.
์ฌ์ ํ๋กฌํํธ๋ก ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ๋ณด๋ค ์ํฉ๋ง๋ค ํ์ํ ํจ์๋ฅผ ์ ๊ณตํ ๋์ ๋ ์ ์ ํ ๋ต๋ณ์ ์ ๊ณตํ ํ๋ฅ ์ด ๋์์ต๋๋ค.
์ถ๊ฐ๋ก, ์ฌ๋ฌ ์ ๋ณด๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด์ด์ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ํ๋ํ๊ณ ๋ต๋ณ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
{'role': 'user', 'content': '็ญใ:ไผใฟ'}, {'role': 'assistant', 'content': None, 'function_call': <OpenAIObject at 0x7f09987266b0> JSON: {
"name": "guess_word",
"arguments": "{\n \"word\": \"\u4f11\u307f\"\n}"
}},
{'role': 'function', 'name': 'guess_word', 'content': "{'guess': 'ไผใฟ', 'rank': '?', 'sim': 0.07405543500312717}"},
{'role': 'assistant', 'content': 'ใใชใใฎ็ญใใไผใฟใใฏใๆญฃ่งฃใซ่ฟใใงใใๆญฃ่งฃใงใฏใใใพใใใ่ฟใๅบฆๅใใฏ0.074ใงใ้ ไฝใฏใพใ ใใใใพใใใใใๅฐใ่ใใฆใฟใฆใใ ใใใ'}
{'role': 'user', 'content': '็ญใ:ใใณใใจใใฆใๆญฃ่งฃใจใๅคใใฏใฉใใช้ขไฟใใใใฎใๆใใฆใใ ใใ'},
{'role': 'assistant', 'content': None, 'function_call': <OpenAIObject at 0x7f099853aa70> JSON:
{
"name": "read_rule",
"arguments": "{}"
}}
user_content
์์๋ต:
์ ์ถ๊ฐํ์ฌ ๋์ฌํ ๋จ์ด๋ฅผ ์ถ์ธกํ ๋ ๊ฒช๋ ์ค๋ฅ๋ฅผ ์ค์์ต๋๋ค.์๋ฅผ ๋ค์ด, โ์ง๋ฌธโ์ด๋ผ๊ณ ๋ตํ๋ ๊ฒฝ์ฐ, ์ง๋ฌธ์ ํ๋ ค๋ ์๋๋ก ์คํดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๋ง, ์ ๋์ด ์ถ๊ฐ ์ดํ ํด๋น ์ค๋ฅ๋ ๊ฑฐ์ ์์ด์ก์ต๋๋ค.
ํํธ๋ฅผ ์์ฒญํ ๋์๋ ์ถฉ๋ถํ ๋ถ๋๊ณผ ๊ธธ์ด์ ๋ฌธ์ฅ์ด ์ ๊ณต๋๋ฏ๋ก, ์ ๋์ด๊ฐ ์์ด๋ ๋์ฒด๋ก ์ด๋ฅผ ๋ฌด์ํ๊ณ ํํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.