μ•ˆλ…•ν•˜μ„Έμš”, AIλ₯Ό 톡해 창의적인 λ§ˆλ²•μ„ λΆ€λ¦¬λŠ” 방법을 μ•Œλ €λ“œλ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€! μš°λ¦¬λŠ” AIκ°€ λ˜‘λ˜‘ν•˜κ²Œ μΆ”λ‘ ν•˜κ³  문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ‹€μ–‘ν•œ 방법을 λ°°μ› μ£ . μ˜€λŠ˜μ€ AIμ—κ²Œ 마치 μ˜ˆμˆ κ°€λ‚˜ κ³Όν•™μžμ²˜λŸΌ '생각'ν•˜κ³ , 'κ³„νš'ν•˜κ³ , 'μ‹€ν–‰'ν•˜λ„λ‘ μ‹œν‚€λŠ” μ•„μ£Ό νŠΉλ³„ν•œ 기술, λ°”λ‘œ 'ART ν”„λ‘¬ν”„νŒ…'(ART Prompting)에 λŒ€ν•΄ 이야기해볼 κ±°μ˜ˆμš”.

❓ 'ART ν”„λ‘¬ν”„νŒ…', 그게 λ­”κ°€μš”?

ARTλŠ” "Analyse, Reason, and Act"의 μ€„μž„λ§μ΄μ—μš”. 우리말둜 ν•˜λ©΄ "λΆ„μ„ν•˜κ³ , μΆ”λ‘ ν•˜κ³ , ν–‰λ™ν•˜λΌ" μ •λ„λ‘œ λ²ˆμ—­ν•  수 μžˆκ² λ„€μš”. 즉, AIμ—κ²Œ λ³΅μž‘ν•œ λ¬Έμ œλ‚˜ μž‘μ—…μ„ ν•΄κ²°ν•  λ•Œ, λ‹€μŒκ³Ό 같은 3단계 과정을 κ±°μΉ˜λ„λ‘ λͺ…ν™•ν•˜κ²Œ μ§€μ‹œν•˜λŠ” ν”„λ‘¬ν”„νŒ… λ°©λ²•μž…λ‹ˆλ‹€.

  1. A (Analyse): λΆ„μ„ν•˜κΈ°
    • λ¬Έμ œκ°€ 무엇인지, λͺ©ν‘œκ°€ 무엇인지, μ–΄λ–€ 정보가 μ£Όμ–΄μ‘ŒλŠ”μ§€ κΌΌκΌΌν•˜κ²Œ νŒŒμ•…ν•˜κ²Œ ν•©λ‹ˆλ‹€.
  2. R (Reason): μΆ”λ‘ ν•˜κΈ° / κ³„νšν•˜κΈ°
    • 문제λ₯Ό μ–΄λ–»κ²Œ ν’€μ§€, μ–΄λ–€ λ‹¨κ³„λ‘œ μ§„ν–‰ν• μ§€, μ–΄λ–€ μ „λž΅μ„ μ‚¬μš©ν• μ§€ λ…Όλ¦¬μ μœΌλ‘œ μƒκ°ν•˜κ³  κ³„νšμ„ μ„Έμš°κ²Œ ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ '트리 였브 μ†ŒνŠΈ'처럼 μ—¬λŸ¬ κ°€μ§€ κ°€λŠ₯성을 νƒμƒ‰ν•˜κ³  졜적의 길을 μ°ΎλŠ” 과정이 포함될 수 μžˆμ–΄μš”.
  3. T (Act): ν–‰λ™ν•˜κΈ° / μ‹€ν–‰ν•˜κΈ°
    • μ„Έμš΄ κ³„νšκ³Ό 좔둠을 λ°”νƒ•μœΌλ‘œ μ‹€μ œλ‘œ 문제 ν•΄κ²° 단계λ₯Ό μ‹€ν–‰ν•˜κ³  μ΅œμ’… 결과물을 λ§Œλ“€μ–΄λ‚΄κ²Œ ν•©λ‹ˆλ‹€.

우리 μ‚¬λžŒμ΄ μ–΄λ–€ μ€‘μš”ν•œ ν”„λ‘œμ νŠΈλ₯Ό ν•  λ•Œ, λ¬΄μž‘μ • μ‹œμž‘ν•˜μ§€ μ•Šκ³  λ¨Όμ € 상황을 λΆ„μ„ν•˜κ³ , μ „λž΅μ„ μ„Έμš°κ³ (μΆ”λ‘ ), κ·Έ λ‹€μŒμ— μ‹€ν–‰ν•˜λŠ” 것과 μ•„μ£Ό λΉ„μŠ·ν•˜λ‹€κ³  생각할 수 μžˆμŠ΅λ‹ˆλ‹€. ART ν”„λ‘¬ν”„νŒ…μ€ AI도 μ΄λ ‡κ²Œ μ²΄κ³„μ μœΌλ‘œ μ‚¬κ³ ν•˜λ„λ‘ ν›ˆλ ¨μ‹œν‚€λŠ” 방법이죠.

✨ AIκ°€ 'ART'처럼 μž‘λ™ν•˜λŠ” μ˜ˆμ‹œ

AIμ—κ²Œ λ³΅μž‘ν•œ μ½”λ”© μž‘μ—…μ„ μ‹œν‚€λŠ” 상황을 κ°€μ •ν•΄ λ³Όκ²Œμš”.

[ART ν”„λ‘¬ν”„νŒ… μ˜ˆμ‹œ]

우리: "λ„ˆλŠ” μ΄μ œλΆ€ν„° 파이썬 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 유λŠ₯ν•œ κ°œλ°œμžμ•Ό. λ‹€μŒ μš”κ΅¬μ‚¬ν•­μ— 맞좰 μ½”λ“œλ₯Ό μž‘μ„±ν•΄ 쀘.

[Analyse] λ¨Όμ € μš”κ΅¬μ‚¬ν•­μ„ μ² μ €νžˆ λΆ„μ„ν•˜κ³ , μ–΄λ–€ κΈ°λŠ₯듀이 ν•„μš”ν•œμ§€ λͺ…ν™•νžˆ μ •μ˜ν•΄. [Reason] λ‹€μŒμœΌλ‘œ, 각 κΈ°λŠ₯듀을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ 졜적의 파이썬 μ½”λ“œ ꡬ쑰와 λ‘œμ§μ„ 섀계해. μ–΄λ–€ ν•¨μˆ˜κ°€ ν•„μš”ν•˜κ³ , λ°μ΄ν„°λŠ” μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ λ‹¨κ³„λ³„λ‘œ κ³„νšμ„ μ„Έμ›Œ. [Act] λ§ˆμ§€λ§‰μœΌλ‘œ, μ„Έμš΄ κ³„νšμ— 따라 파이썬 μ½”λ“œλ₯Ό μž‘μ„±ν•΄ 쀘.

μš”κ΅¬μ‚¬ν•­: μ‚¬μš©μžκ°€ 숫자λ₯Ό μž…λ ₯ν•˜λ©΄, ν•΄λ‹Ή μˆ«μžκ°€ μ†Œμˆ˜(prime number)인지 μ•„λ‹Œμ§€ νŒλ³„ν•˜λŠ” 파이썬 ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜κ³ , 이λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν…ŒμŠ€νŠΈν•˜λŠ” μ½”λ“œλ„ ν•¨κ»˜ μ œκ³΅ν•΄."

AIλŠ” 이 ν”„λ‘¬ν”„νŠΈλ₯Ό λ°›μœΌλ©΄ λ‹€μŒκ³Ό 같은 ART 과정을 거쳐 닡변을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.


[AI의 생각 κ³Όμ •: ART]

1. πŸ”Ž Analyse (뢄석)

  • λͺ©ν‘œ: μˆ«μžκ°€ μ†Œμˆ˜μΈμ§€ νŒλ³„ν•˜λŠ” 파이썬 ν•¨μˆ˜ μž‘μ„± 및 ν…ŒμŠ€νŠΈ.
  • 핡심 κΈ°λŠ₯:
    • 숫자 μž…λ ₯ λ°›κΈ°.
    • μ†Œμˆ˜ νŒλ³„ 둜직 (ν•¨μˆ˜).
    • κ²°κ³Ό 좜λ ₯.
  • μ†Œμˆ˜ μ •μ˜: 1보닀 큰 μžμ—°μˆ˜ 쀑 1κ³Ό 자기 μžμ‹ λ§Œμ„ μ•½μˆ˜λ‘œ κ°€μ§€λŠ” 수.
  • μ˜ˆμ™Έ 처리: 1 μ΄ν•˜μ˜ μˆ«μžμ— λŒ€ν•œ 처리 (μ†Œμˆ˜ μ•„λ‹˜).

2. πŸ€” Reason (μΆ”λ‘  / κ³„νš)

  • ν•¨μˆ˜ μ •μ˜: is_prime(number) ν˜•νƒœμ˜ ν•¨μˆ˜κ°€ ν•„μš”.
  • κΈ°λ³Έ μΌ€μ΄μŠ€: number <= 1이면 False λ°˜ν™˜.
  • νŒλ³„ 둜직: 2λΆ€ν„° number의 μ œκ³±κ·ΌκΉŒμ§€ λ°˜λ³΅ν•˜λ©° μ•½μˆ˜κ°€ μžˆλŠ”μ§€ 확인. (μ œκ³±κ·ΌκΉŒμ§€λ§Œ 확인해도 됨. 더 효율적).
  • 루프: for i in range(2, int(number*0.5) + 1):
  • μ•½μˆ˜ 확인: if number % i == 0: 이면 False λ°˜ν™˜.
  • μ΅œμ’… λ°˜ν™˜: 루프λ₯Ό ν†΅κ³Όν•˜λ©΄ True λ°˜ν™˜ (μ†Œμˆ˜).
  • ν…ŒμŠ€νŠΈ μ½”λ“œ: μ‚¬μš©μž μž…λ ₯을 λ°›κ³ , ν•¨μˆ˜ 호좜 ν›„ κ²°κ³Ό 좜λ ₯.

3. πŸš€ Act (행동 / μ‹€ν–‰)

Python

import math

def is_prime(number):
    """
    μ£Όμ–΄μ§„ μˆ«μžκ°€ μ†Œμˆ˜μΈμ§€ νŒλ³„ν•˜λŠ” ν•¨μˆ˜.
    μ†Œμˆ˜λŠ” 1보닀 큰 μžμ—°μˆ˜ 쀑 1κ³Ό 자기 μžμ‹ λ§Œμ„ μ•½μˆ˜λ‘œ κ°€μ§‘λ‹ˆλ‹€.
    """
    if number <= 1:
        return False
    if number == 2:  # 2λŠ” μœ μΌν•œ 짝수 μ†Œμˆ˜
        return True
    if number % 2 == 0: # 2λ₯Ό μ œμ™Έν•œ μ§μˆ˜λŠ” μ†Œμˆ˜κ°€ μ•„λ‹˜
        return False
    
    # 2λ₯Ό μ œμ™Έν•œ ν™€μˆ˜ μ•½μˆ˜λ“€λ§Œ 확인 (μ œκ³±κ·ΌκΉŒμ§€λ§Œ)
    # 3λΆ€ν„° μ‹œμž‘ν•˜μ—¬ 2μ”© 증가 (ν™€μˆ˜λ§Œ 확인)
    for i in range(3, int(math.sqrt(number)) + 1, 2):
        if number % i == 0:
            return False
    return True

# ν…ŒμŠ€νŠΈ μ½”λ“œ
if __name__ == "__main__":
    try:
        user_input = int(input("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: "))
        if is_prime(user_input):
            print(f"{user_input}은(λŠ”) μ†Œμˆ˜μž…λ‹ˆλ‹€.")
        else:
            print(f"{user_input}은(λŠ”) μ†Œμˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.")
    except ValueError:
        print("μœ νš¨ν•œ 숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.")


μ–΄λ•Œμš”? AIκ°€ λ‹¨μˆœνžˆ μ½”λ“œλ₯Ό '생성'ν•˜λŠ” 것을 λ„˜μ–΄, 마치 κ°œλ°œμžκ°€ 문제λ₯Ό λΆ„μ„ν•˜κ³ , 섀계λ₯Ό 거쳐 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ²ƒμ²˜λŸΌ μ²΄κ³„μ μœΌλ‘œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ£ ? μ΄λ ‡κ²Œ ν•˜λ©΄ AI의 결과물이 훨씬 더 μ •ν™•ν•˜κ³ , 효율적이며, 우리의 μ˜λ„μ— λΆ€ν•©ν•˜κ²Œ λ©λ‹ˆλ‹€.

πŸ’‘ 'ART ν”„λ‘¬ν”„νŒ…'의 μž₯점은?

  1. λ³΅μž‘ν•œ 문제 ν•΄κ²° λŠ₯λ ₯ κ·ΉλŒ€ν™”: μ—¬λŸ¬ λ‹¨κ³„μ˜ 심측적인 사고와 κ³„νšμ΄ ν•„μš”ν•œ λ³΅μž‘ν•œ μž‘μ—…μ„ AIκ°€ 슀슀둜 μ²΄κ³„μ μœΌλ‘œ ν•΄κ²°ν•˜λ„λ‘ λ•μŠ΅λ‹ˆλ‹€.
  2. 였λ₯˜ κ°μ†Œ 및 ν’ˆμ§ˆ ν–₯상: 쀑간 λ‹¨κ³„μ—μ„œ 뢄석과 좔둠을 거치기 λ•Œλ¬Έμ—, μ΅œμ’… 결과물의 였λ₯˜κ°€ 쀄어듀고 ν’ˆμ§ˆμ΄ ν–₯μƒλ©λ‹ˆλ‹€.
  3. λͺ…ν™•ν•œ μž‘μ—… μ§€μ‹œ: AIμ—κ²Œ 'μƒκ°ν•˜λŠ” 방법'을 κ°€λ₯΄μ³μ£Όμ–΄, μš°λ¦¬κ°€ μ›ν•˜λŠ” 결과물을 얻을 κ°€λŠ₯성이 λ†’μ•„μ§‘λ‹ˆλ‹€.
  4. λ‹€μ–‘ν•œ λΆ„μ•Ό 적용: μ½”λ”©, κΈ€μ“°κΈ°, 기획, 문제 ν•΄κ²° λ“± λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ AI의 μ„±λŠ₯을 λŒμ–΄μ˜¬λ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“ μš°λ¦¬λ„ 'ART ν”„λ‘¬ν”„νŒ…'을 ν™œμš©ν•΄λ³΄μž!

μ•žμœΌλ‘œ AIμ—κ²Œ λ³΅μž‘ν•˜κ±°λ‚˜ μ€‘μš”ν•œ μž‘μ—…μ„ μ‹œν‚¬ λ•ŒλŠ”, ν•œ λ²ˆμ— λͺ…λ Ήν•˜μ§€ 말고 λ‹€μŒκ³Ό 같은 'ART' μ§€μ‹œλ₯Ό ν¬ν•¨μ‹œμΌœ λ³΄μ„Έμš”.

  • "λ¨Όμ € 이 문제의 핡심을 [뢄석]ν•΄ 쀘."
  • "κ·Έ 뢄석을 λ°”νƒ•μœΌλ‘œ μ–΄λ–»κ²Œ ν•΄κ²°ν• μ§€ [κ³„νšμ„ μ„Έμš°κ³  μΆ”λ‘ ]ν•΄ 쀘."
  • "μ„Έμ›Œμ§„ κ³„νšμ— 따라 [μ‹€ν–‰]ν•΄μ„œ μ΅œμ’… κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄ 쀘."

μ΄λ ‡κ²Œ AIμ—κ²Œ 체계적인 사고 과정을 κ°•μš”ν•˜λ©΄, AIλŠ” μ—¬λŸ¬λΆ„μ˜ κ°€μž₯ 유λŠ₯ν•œ ν”„λ‘œμ νŠΈ λ§€λ‹ˆμ €μ΄μž 해결사가 λ˜μ–΄μ€„ κ±°μ˜ˆμš”!

πŸ“š μ°Έκ³  λ…Όλ¬Έ

  • "ART: Automatic Multi-Step Reasoning with Transformers" (Paranjape et al., 2023) 이 논문은 'ART' (Analyse, Reason, and Act) ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œμ•ˆν•˜λ©°, λ³΅μž‘ν•œ μΆ”λ‘  λ¬Έμ œμ—μ„œ λŒ€κ·œλͺ¨ μ–Έμ–΄ λͺ¨λΈμ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 효과적인 방법을 μ œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.