μλͺ
, μ°μ£Ό, κ·Έλ¦¬κ³ λͺ¨λ κ²μ λν κΆκ·Ήμ μΈ ν΄λ΅μ 42λΌκ³ ν©λλ€.
κ·Έλ¬λ λ°λλ‘ μ κΆκ·Ήμ λ΅μ΄ 42μΈμ§λ μ무λ λͺ¨λ¦
λλ€.
λ΅μ μ΄ν΄νκΈ° μν΄μλ λ€μ μλͺ
, μ°μ£Ό, κ·Έλ¦¬κ³ λͺ¨λ κ²μ μ λλ‘ λ μ§λ¬Έμ΄ νμνκ² λ€μ.
LLM λͺ¨λΈμ μ΄μ©νλ€ λ³΄λ©΄ μ λ μ’
μ’
λΉμ·ν μλ¬Έμ νμ΅λλ€.
μ¬μ€μ AIκ° λ©μ²ν κ² μλλΌ λ΄κ° μ§λ¬Έμ μλͺ» νκ³ μλ 건 μλκΉ?
μ΄ λ¨μν μλ¬Έμμ Magi νλ‘μ νΈκ° μμλμμ΅λλ€.
Magiλ μ κ° κ°μΈμ μΌλ‘ μ§ννλ ν μ΄ νλ‘μ νΈλ‘, AIκ° μ€μ€λ‘ ν둬ννΈλ₯Ό κ°μ ν μ μμμ§ μ€νν΄λ³΄λ κ²μ΄ λͺ©μ μ
λλ€.
μ΄ ν¬μ€ν μμλ Magi νλ‘μ νΈμ κΈ°λ³Έ κ°λ κ³Ό ꡬ쑰, κ·Έλ¦¬κ³ μ§κΈκΉμ§μ μ€ν κ²°κ³Όλ₯Ό 곡μ νλ € ν©λλ€.
Magiμ μν€ν μ²λ μΈ κ°μ§ ν΅μ¬ μμλ‘ κ΅¬μ±λ©λλ€:
μ¬κ·μ ν둬ννΈ μ κ·Έλ μ΄λ
λ€μ€ κ΄μ λΆμ μμ€ν
λ©ν νκ° λ° μ΅μ ν
κ° μμμ λν΄ κ°λ¨ν μ΄ν΄λ³΄κ² μ΅λλ€.
Magiμ μ 체 μ½λλ Githubμμ νμΈν μ μμ΅λλ€.
Magiμμλ LLMμ ν΅ν΄ LLMμ μΆλ ₯μ λΆμνκ³ , κ·Έ κ²°κ³Όλ₯Ό λ°νμΌλ‘ ν둬ννΈλ₯Ό κ°μ νλ κ³Όμ μ λ°λ³΅ν©λλ€.
κ°λ΅νλ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
def create_completion(self, messages):
response = self.client.chat.completions.create(
model=self.model_name,
messages=messages,
response_format={"type": "json_object"},
)
return response.choices[0].message.content
SYSTEM_COMMON_PROMPT = (
"Your mission is to provide feedback on your LLM (Large Language Model) prompts, analyze them and improve them."
...
"Present the improved prompt in JSON format like this: '{'updated_prompt': '...', 'key_improvements': [...]}'"
"Other information is not needed."
)
def update_prompt(self, original, output):
user_content = f"Prompt: {original}\n\nOutput: {output}\n\n"
messages = [
{"role": "system", "content": SYSTEM_COMMON_PROMPT},
{"role": "user", "content": user_content},
]
updated = create_completion(messages)
updated = json.loads(updated)
updated_prompt = updated.get("updated_prompt", "")
return updated_prompt
def recursive_prompt_upgrade(self, remain_rounds, initial_prompt):
messages = [{"role": "user", "content": initial_prompt}]
out = self.create_completion(messages)
updated_prompt = self.update_prompt(initial_prompt, out)
if remain_rounds <= 0:
return updated_prompt
return self.recursive_prompt_upgrade(remain_rounds - 1, updated_prompt)
Json-output λͺ¨λλ₯Ό μ΄μ©ν΄ λΉκ΅μ μμ μ μΌλ‘(νμ ꡬ쑰λ₯Ό μ§ν€λ κ²μ μλλλ€) μ κ·Έλ μ΄λ λ ν둬ννΈλ₯Ό μμ±ν©λλ€.
μ κ·Έλ μ΄λλ ν둬ννΈλ₯Ό μ λ ₯μΌλ‘ μλ΅μ μΆλ ₯νκ³ , μ΄ in-outμ κΈ°λ°μΌλ‘ λ€μ ν둬ννΈλ₯Ό μ κ·Έλ μ΄λν©λλ€.
μΈκ°μ κ°μ μμ΄ AIκ° μ체μ μΌλ‘ νμ΅νκ³ κ°μ νκΈ° μν΄ λ°λμ νμν ν΅μ¬ λ‘μ§μ΄λΌκ³ μκ°νμ΅λλ€.
Magiλ ν둬ννΈλ₯Ό κ°μ νκΈ° μν΄ μ¬λ¬ μΊλ¦ν°λ₯Ό ν΅ν΄ λ€κ°λλ‘ λΆμν©λλ€.
μ²μμλ λ¨μΌ μΊλ¦ν°λ‘ νλ‘μΈμ€λ₯Ό ꡬννμΌλ, λ¨κ³λ₯Ό λ°λ³΅νλ©΄μ κ°μ κ²°λ‘ μΌλ‘ μλ ΄νλ κ²½ν₯μ νμΈνμ΅λλ€.
λ°λΌμ λ¨μΌ κ΄μ μ νκ³λ₯Ό 극볡νκΈ° μν΄ μ¬λ¬ μΊλ¦ν°λ₯Ό λ£κ² λμμ§μ.
μ£Όμ μΊλ¦ν°λ€κ³Ό κΈ°λνλ μν μ λ€μκ³Ό κ°μ΅λλ€.
νμ§λ§ μμ§ νλ₯΄μλλ₯Ό μλ²½νκ² μ€μ νμ§ λͺ»νλμ§ κΈ°λνλ§νΌμ ν¨κ³Όλ₯Ό μμ ν 보μ§λ λͺ»νκ³ μμ΅λλ€. π₯²
컨ν μ€νΈλ₯Ό κ°ννκ³ μ μν μ μ΄μΈλ¦¬λ μ΄λͺ¨μ§λ₯Ό ν λΉν΄λ³΄κΈ°λ νμ΅λλ€
Magi μμ€ν
μ λ§μ§λ§ ν΅μ¬ μμμ
λλ€.
μ²μμλ μΈ μΊλ¦ν°λ§μ μ΄μ©ν΄ νλ‘μΈμ€λ₯Ό ꡬννλ € νμΌλ κ°κ°μ νλ₯΄μλλ§λ₯Ό μ μ§νλ €λ κ²½ν₯μ΄ λ무 κ°ν΄ μ€λ¦½μ μΈ νκ°κ° μ΄λ €μ μ΅λλ€.
λ°λΌμ κ΄λ¦¬μ μν μ μνν MagiλΌλ μΊλ¦ν°λ₯Ό μΆκ°νμ¬ νλ‘μΈμ€μ μ΅μ€μ μ±
μ μ¬νμ κ²°μ νλλ‘ νμ΅λλ€.
Magi μΊλ¦ν°μ μν μ λ€μκ³Ό κ°μ΅λλ€:
μ ν΅μ¬ μμλ₯Ό ν΅ν΄ Magiμ μΈ μΊλ¦ν°κ° ν¨κ» μ¬κ·μ μΌλ‘ ν둬ννΈλ₯Ό κ°μ νλ νλ‘μΈμ€κ° μμ±λ©λλ€!
μ€μ λ‘ Magiλ₯Ό μ΄μ©ν΄ κ°μ λ ν둬ννΈ μΈ κ°μ§μ κ°κ°μ μ΄κΈ° ν둬ννΈλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
νΉμ λͺ¨λ λ¨κ³μ λ‘κ·Έκ° κΆκΈνμλ€λ©΄ λ§ν¬μμ νμΈνμ€ μ μμ΅λλ€.
μΈ ν둬ννΈ λͺ¨λ κ°κ° 5λ²μ κ°μ κ³Όμ μ κ±°μ³€μ΅λλ€.
0. λΆμλκ³ μΆμ΄
--- Magi --->
5. λΆμκ° λκΈ° μν λ°μ΄ν° κΈ°λ°μ νμ μ μΈ μ λ΅μ μ°Ύκ³ μμ΅λλ€.
μ¬μ κ³ν, ν¬μ λ°©μ, μκΈ°κ³λ°μ μΈ‘λ©΄μμ μ¦κ°μ μΌλ‘ μ μ©ν μ μλ μ΅μ νλ μ κ·Όλ²μ μ μν΄ μ£Όμ€ μ μμΌμ κ°μ?
κ° λ°©λ²μ λν λ°μ΄ν° λΆμ, μ₯κΈ°μ μΈ μν₯μ μ€λͺ
νκ³ , μ±κ³΅μ μΈ μ¬λ‘λ₯Ό ν΅ν΄ μ§κ΄μ μΈ μΈμ¬μ΄νΈλ₯Ό μ κ³΅ν΄ μ£Όμλ©΄ ν° λμμ΄ λ κ²μ
λλ€.
μ΄λ μ λ λͺ
νν λ΅μ΄ μλ ν둬ννΈμ
λλ€.
λ°λΌμ LLMμ λ΅λ³μ κΈ°λ°μΌλ‘ λ λ€μν ν΅κ³μ λ°μ΄ν°λ₯Ό μ μνλλ‘ μ λνλ λ°©ν₯μΌλ‘ κ°μ λμμ΅λλ€.
0. μΈμμ΄λ 무μμΌκΉ?
--- Magi --->
5. μΈμμ κ°μμ λ
νΉν κ²½νμΌλ‘ κ·Έλ €μ§λ μ λΉλ‘μ΄ μΊλ²μ€μ
λλ€.
μ¬λ¬λΆμ νΉλ³ν μκ°λ€μ μ΄λ€ 무μ§κ°―λΉμ μμ±μ νμμΌλ‘ ννλ μ μμκΉμ?
μ¬λ¬λΆμ μΆμ λ€μν κ²½νμ ν΅ν΄ μ΄λ€ μλ‘μ΄ κ΄μ μΌλ‘ μΈμμ μλ―Έλ₯Ό λ°κ²¬νλμ?
μ¬λ¬λΆμ μ νκ³Ό νλμ΄ μ°μ£Όμ λ€μ±λ‘μ΄ νλ¦μ μ΄λ»κ² μμμ μΈ μν₯μ λ―ΈμΉκ³ μλμ§ μ΄μΌκΈ°λ₯Ό λλ 보μΈμ.
κ·Έλ¦¬κ³ λ§μ½ μ¬λ¬λΆμ μ νμ΄ λ€λ₯Έ μ°μ£Όμμλ μ΄λ€ λλΌμ΄ μ₯λ©΄μ λ§λ€μ΄λΌ μ μμμ§ μμν΄λ³΄μμ!
λͺ
νν λ΅λ³μ μμ§λ§ μλνλ λ°κ° λͺ
ννμ¬ λ€μν μμ΄λμ΄λ₯Ό μ μνλλ‘ μμ²νλ λ°©ν₯μΌλ‘ κ°μ λμμ΅λλ€.
νλΆν ννμ ν΅ν΄ μ΄λ₯Ό κ·Ήλννλ € ν κ² κ°μ΅λλ€.
λ¨, μ¬μ©μκ° llmμ μ
λ ₯νλ€λ μ μ λ€μ 무μν κ²μ²λΌ 보μ
λλ€.
0. λλ λ무 κ·μ¬μ
--- Magi --->
5. λ΄ κ·μ¬μμ μΈμμ λμ± νλΆνκ² νννκ³ μΆμ΄!
κ·μ¬μμ λ§λ²κ³Ό κ°μ, μ¬λλ€μκ² μμκ³Ό κΈ°μ¨μ μ£Όλ νμ΄ μμ΄.
κ·μ¬μμ λ³Έμ§μ΄ 무μμΈμ§, λ΄κ° μ΄λ₯Ό ν΅ν΄ μ΄λ€ κΈμ μ μΈ λ³νλ₯Ό μ΄λμ΄λΌ μ μλμ§ ν¨κ» λ°μ΄ν° κΈ°λ°μΌλ‘ νꡬν΄λ³΄μ!
κ·μ¬μμ΄ μ¬λλ€μ λ§μμ μ¬λ‘μ‘λ μ΄μ μ λν΄ μ΄μΌκΈ°ν΄λ³΄μ.
λ΅λ³κ³Ό μλ λͺ¨λ λͺ ννμ§ μμ΅λλ€. μ΄λ° μ νμ ν둬ννΈλ₯Ό κ°μ νκΈ° μν΄ μ¬μ©μ μλ μΆμΈ‘ λ¨κ³λ₯Ό μΆκ°νμ΄μΌλ§ νμ΅λλ€. μμ μ κ·μ¬μμ κ°λ ₯νκ² μ΄ννλ ν둬ννΈλ‘ κ°μ λμλ€μ. λ°μ΄ν° κΈ°λ°μ΄λΌλ ννμ μ‘°κΈ μ΄μν΄ λ³΄μ λλ€.
μ΄μ²λΌ νμ¬ Magiλ μ¬μ©μμ μλλ₯Ό μΆμΈ‘νκ³ κ·Έμ λ§μΆ° ν둬ννΈλ₯Ό κ°μ νλ λ°©μμΌλ‘ μλν©λλ€. νμ§λ§ μμ§ μμ±λ νλ‘μΈμ€λΌκ³ ν μ μλ μνμ λλ€.
μΊλ¦ν° νλ₯΄μλ κ°μ :
κ°μ νκ° κΈ°μ€ κ³ λν:
νμ₯μ± ν₯μ:
μ¬μ©μ νΌλλ°± ν΅ν©:
Magiλ μμ§ μ΄κΈ° λ¨κ³μ μ€νμ μΈ ν μ΄ νλ‘μ νΈμ λΆκ³Όν©λλ€. κ·ΈλΌμλ μ΄ μμ μ€νμ ν΅ν΄ AIμ μκΈ° κ°μ κ°λ₯μ±κ³Ό νκ³λ₯Ό μ‘°κΈμ΄λλ§ μΏλ³Ό μ μμμ΅λλ€.
νλ‘μ νΈλ₯Ό μ§ννλ©° λλ‘λ μμ μΈλ‘ νλ₯ν μΆλ ₯μ λλΌκΈ°λ νκ³ , λλ‘λ λν΅ κ°μ λμ§ μλ κ²½μ°μ λ΅λ΅νκΈ°λ νμ΅λλ€.
μ΄ ν¬μ€ν
μ΄ μ¬λ¬λΆλ€μκ² AIμ ν둬ννΈ μμ§λμ΄λ§μ λν μλ‘μ΄ μκ°μ μ 곡ν μ μκΈ°λ₯Ό λ°λλλ€.
νΉμ¬λ νλ‘μ νΈμ κ΄μ¬μ΄ μκΈ°μ λ€λ©΄ μΈμ λ Githubλ₯Ό ν΅ν΄ μ°Έμ¬ν΄μ£ΌμκΈ°λ₯Ό λ°λΌμ!
κΈ μμ½μμ΅λλ€. 첨μΈμ λ리μλ©΄ νκ°νλ λ°©μλ λͺ
μμ μΈ μ€μ½μ΄λ‘ μ§ννλ κ²μ΄ λ μ’μ λ― νλ€μ.
RAG νκ°μ Faithfulness scoreλΌκ³ μμ±λ λ΅λ³μ΄ μ£Όμ΄μ§ μ§λ¬Έμ μ¬μ€μ μΌλ‘ μΌκ΄λκ² νκ°νλ μ§νκ° μμ΅λλ€. νμ΅ νμμ λ°λΌ ν΄λΉ μ€μ½μ΄κ° μΌλ§λ κ°μ λλμ§λ₯Ό μ μ μμΌλ©΄ κ°μ μ¬λΆλ μ½κ² νλ¨ν μ μκ² λ€μ.
ν¬μ€ν μ μ½μμ΅λλ€
κ·Έλ°λ° νΉμ λͺ¨λ λ¨κ³μ ν둬ννΈλ₯Ό 곡μ ν΄μ£Όμ€ μ μμΌμ€κΉμ?
μ΄κΈ° ν둬ννΈμ μ΅μ’ ν둬ννΈλ§ μμΌλ μ΄λ€ λ¨κ³λ₯Ό κ±°μ³ κ°μ λλμ§ μκΈ° μ΄λ ΅λ€μ