반응형
Notice
Recent Posts
Recent Comments
Link
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags more
Archives
Today
Total
관리 메뉴

아톨러브

II. AI Agent를 만들 때 자주 사용하는 패턴들 본문

AI, 클라우드, 문서, 자동화/AI_AGENT

II. AI Agent를 만들 때 자주 사용하는 패턴들

아톨 2026. 8. 22. 17:25
반응형

    

    #------- 1. 변수 f-string

    user_name = "스티븐"

    task = "분기별 판매 보고서를 요약하세요."

    step = 2

    max_steps = 5

 

    prompt = f"User: {user_name} \nTask: {task} \nStep {step} of {max_steps}"

    print(prompt)

 

    #------- 2. 숫자 formatting

    tokens_used = 25123

    cost_per_token = 0.000003

    print(f"사용한 토큰수: {tokens_used:,}")

    print(f"현재까지 비용: ${tokens_used * cost_per_token:.4f}")

    print(f"남아있는 예산: ${100-(tokens_used/1000):.4f}")  

 

    #------- 3. 여러 줄 문자열과 시스템 프롬프트

    tools = "search , calculator, read_file"

    system_prompt = f"""

    당신은 사려깊은 검색 어시스턴트입니다.

 

    Available tools: {tools}

 

    Rules:

    - 한번에 하나의 tool 사용하세요.

    - 작업을 마치면, FINISH 사용해서 응답하세요.

    """ 

    print(system_prompt)

    print("시스템 프롬프트의 문자수: ", len(system_prompt))

 

    #------- 4. 문자열 다루기

    reply = " TOOL:Search \n"

 

    clean = reply.strip()

    print(repr(clean))

    print(clean.lower())

    print(clean.replace("TOOL:",""))

    print(clean.split(":"))

    print(clean.startswith("TOOL"))

 

    #------- 5. 빈 응답 검사

    responses = ["", " ", "FINISH", None]

    for r in responses:

        if r and r.strip():

            print(f"사용가능한 응답: {r.strip()}")

        else:

            print(f"비어있는 응답, 재시도(Value was {r!r})")

 

    #------- 6. 문자열 → 숫자 변환과 예외처리

    raw = "12"

    print(raw + "3")

    print(int(raw) + 1)

 

    for value in ["10", "7.3", "여섯"]:

        try:

            print(f"문자 {value!r}/  실수 {float(value)}() 변환합니다.")

        except ValueError:

            print(f"{value!r} 숫자가 아닙니다.")

 

    #------- 7. 함수로 Prompt 생성하

    def build_prompt(name, task, tools, tone="friendly"):

        tool_list = ", ".join(tools)

        prompt = f"""

    당신은 {name} 도와주는 어시스턴트입니다.

    tone: {tone}

    task: {task}

    Tools: {tool_list}

    작업을 마치면, FINISH 사용해서 응답하세요.

    """

        return prompt.strip()

 

    result = build_prompt(

        name="스티븐",

        task="지난달 최고 판매 제품 3개를 찾아라.",

        tools = {"검색", "계산기", "파일읽기"},

        tone = "직접적이지만 친절한",

    )

 

    print(result)

    print("-"*40)

    print(f"프롬프트 길이: {len(result)} ")

 

1. 변수 + f-string

 
user_name = "스티븐"
task = "분기별 판매 보고서를 요약하세요."
step = 2
max_steps = 5

prompt = f"User: {user_name} \nTask: {task} \nStep {step} of {max_steps}"
print(prompt)
 

먼저 4개의 변수를 만들었습니다.

 
user_name = "스티븐"
 

user_name이라는 변수에 "스티븐"라는 문자열을 저장합니다.

 
task = "분기별 판매 보고서를 요약하세요."
 

task에는 AI가 수행해야 할 작업을 저장합니다.

즉,

"분기별 판매 보고서를 요약해라."

라는 작업입니다.

그리고:

 
step = 2
max_steps = 5
 

현재 작업 단계와 최대 작업 단계를 저장합니다.

즉:

현재 단계 = 2
전체 단계 = 5
 

입니다.


f"..."가 핵심

 
prompt = f"User: {user_name} \nTask: {task} \nStep {step} of {max_steps}"
 

앞에 f가 붙었습니다.

이것을 f-string이라고 합니다.

문자열 안에 변수의 값을 집어넣을 수 있습니다.

예를 들어:

 
name = "Dana"

print(f"안녕하세요 {name}님")
 

결과:

안녕하세요 Dana님
 

입니다.

따라서 이 코드:

 
f"User: {user_name} \nTask: {task} \nStep {step} of {max_steps}"
 

는 실제로 다음과 같은 문자열을 만들어냅니다.

User: Dana
Task: summarize the quarterly sales report
Step 2 of 5
 

2. \n은 줄바꿈

여기서:

 
\n
 

도 중요합니다.

\n은 new line, 즉 줄바꿈을 의미합니다.

 
print("A\nB")
 

결과:

A
B
 

따라서:

 
"User: Dana \nTask: ..."
 

라고 하면 User와 Task가 서로 다른 줄에 표시됩니다.


3. Agent에서 왜 이런 형식이 중요한가?

이것은 단순한 문자열 연습 같지만 실제 Agent에서는 굉장히 흔합니다.

예를 들어 Agent에게 다음과 같은 정보를 전달할 수 있습니다.

User: 스티븐
Task: 분기별 판매 보고서를 요약하세요.
Step 2 of 5
 

현재 Agent의 상태를 하나의 prompt로 만들어 모델에게 전달하는 것입니다.

최근 공부하신 Agent Loop와 연결하면:

사용자 요청
    ↓
현재 task
    ↓
현재 step
    ↓
사용 가능한 tool
    ↓
Prompt 생성
    ↓
LLM 호출
 

같은 구조가 됩니다.


4. 토큰과 비용 계산

다음 코드입니다.

 
tokens_used = 25123
cost_per_token = 0.000003
 

현재까지 사용한 토큰 수가:

25,123 tokens
 

이라고 가정합니다.

그리고 토큰 하나당 비용을:

$0.000003
 

이라고 가정합니다.


토큰 수 출력

 
print(f"사용한 토큰수: {tokens_used:,}")
 

여기서 아주 중요한 formatting이 있습니다.

 
:, 
 

입니다.

숫자에 천 단위 콤마를 넣으라는 의미입니다.

예를 들어:

 
tokens_used = 25123
print(f"{tokens_used:,}")
 

결과:

25,123
 

입니다.

즉:

25123
 

25,123
 

으로 보여주는 것입니다.


5. .4f

다음입니다.

 
print(f"현재까지 비용: ${tokens_used * cost_per_token:.4f}")
 

먼저 계산부터 해보면:

 
tokens_used * cost_per_token
 

즉:

25123 × 0.000003
 

입니다.

결과는:

0.075369
 

정도입니다.

그런데 뒤에:

 
:.4f
 

가 붙어 있습니다.

이것은 소수점 이하 4자리까지 표시하라는 뜻입니다.

그래서:

0.075369
 

0.0754
 

로 표시됩니다.

결과:

현재까지 비용: $0.0754
 

6. :.4f의 의미

이것은 앞으로 자주 만나게 됩니다.

 
f"{number:.4f}"
 

의 의미는:

number를 소수점 이하 4자리까지 표시

입니다.

예:

 
x = 3.141592

print(f"{x:.2f}")
print(f"{x:.4f}")
 

결과:

3.14
3.1416
 

7. 예산 계산

 
print(f"남아있는 예산: ${100-(tokens_used/1000):.4f}")
 

여기에는 약간 이상한 부분이 있습니다.

코드 그대로 계산하면:

 
100 - (25123 / 1000)
 

입니다.

먼저:

25123 / 1000 = 25.123
 

그러므로:

100 - 25.123 = 74.877
 

결과는:

남아있는 예산: $74.8770
 

정도가 됩니다.

하지만 이것은 실제 토큰 비용을 계산한 예산은 아닙니다. 교육용 예제에서 단순하게 만든 계산식입니다.

실제라면:

 
remaining_budget = budget - tokens_used * cost_per_token
 

처럼 계산하는 것이 자연스럽습니다.


8. 시스템 프롬프트 만들기

다음 코드가 AI Agent와 직접적으로 연결됩니다.

 
tools = "search , calculator, read_file"

system_prompt = f"""
당신은 사려깊은 검색 어시스턴트입니다.

Available tools: {tools}

Rules:
- 한번에 하나의 tool만 사용하세요.
- 작업을 마치면, FINISH를 사용해서 응답하세요.
"""
 

여기서 새로운 문법이 나옵니다.

 
f"""
...
"""
 

이것은 여러 줄 문자열 + f-string입니다.


9. """ """는 무엇인가?

일반적인 문자열은:

 
text = "안녕하세요"
 

처럼 한 줄로 만들 수 있습니다.

하지만 여러 줄을 넣고 싶다면:

 
text = """
첫 번째 줄
두 번째 줄
세 번째 줄
"""
 

처럼 사용할 수 있습니다.

이를 triple quoted string, 즉 삼중 따옴표 문자열이라고 합니다.

AI에서는 특히 중요합니다.

왜냐하면 Prompt가 길어지기 때문입니다.

예를 들어:

당신은 검색 어시스턴트입니다.

사용자의 질문을 분석하세요.

필요하면 검색 도구를 사용하세요.

작업을 마치면 FINISH를 사용하세요.
 

같은 Prompt를 작성하기 편합니다.


10. 그런데 앞에 f가 붙었다

 
system_prompt = f"""
...
Available tools: {tools}
...
"""
 

앞에 f가 있으므로 f-string 기능도 동시에 사용합니다.

따라서:

 
tools = "search , calculator, read_file"
 

의 값이:

{tools}
 

자리에 들어갑니다.

최종 Prompt는 대략:

당신은 사려깊은 검색 어시스턴트입니다.

Available tools: search , calculator, read_file

Rules:
- 한번에 하나의 tool만 사용하세요.
- 작업을 마치면, FINISH를 사용해서 응답하세요.
 

가 됩니다.


11. 이것이 바로 Agent의 System Prompt

이 부분은 지금 공부하고 있는 Agent에서 상당히 중요합니다.

 
system_prompt
 

은 단순한 문자열이지만, LLM에게는 행동 규칙을 알려주는 지침이 됩니다.

예를 들어:

당신은 사려깊은 검색 어시스턴트입니다.
 

→ Agent의 역할

Available tools: search, calculator, read_file
 

→ Agent가 사용할 수 있는 도구

한번에 하나의 tool만 사용하세요.
 

→ 행동 규칙

작업을 마치면 FINISH를 사용하세요.
 

→ 종료 규칙

입니다.

즉 Agent를 아주 단순화하면:

System Prompt
      ↓
"너는 누구인가?"
"무슨 일을 하는가?"
"어떤 Tool을 사용할 수 있는가?"
"어떤 규칙을 지켜야 하는가?"
"언제 끝내야 하는가?"
 

를 알려주는 것입니다.


12. len(system_prompt)

 
print("시스템 프롬프트의 단어수: ", len(system_prompt))
 

여기서 주의할 점이 있습니다.

len()은 문자열의 길이, 즉 문자 개수를 반환합니다.

따라서 이 표현은 사실 엄밀하게 말하면:

시스템 프롬프트의 문자수
 

라고 하는 것이 맞습니다.

len(system_prompt)는 단어 수가 아닙니다.

예를 들어:

 
text = "hello world"

print(len(text))
 

결과는:

11
 

입니다.

단어는 2개지만 문자는 공백까지 포함해서 11개입니다.

따라서 이 코드의:

 
"시스템 프롬프트의 단어수"
 

라는 표현은 조금 부정확합니다.


13. 문자열 다루기

다음 코드입니다.

 
reply = " TOOL:Search \n"

clean = reply.strip()
 

여기서 AI Agent에서 상당히 중요한 문자열 처리 기술이 나옵니다.

LLM의 응답은 항상 우리가 원하는 형태로 딱 떨어지지 않을 수 있습니다.

예를 들어 모델이:

 TOOL:Search
 

처럼 앞뒤에 공백이나 줄바꿈을 붙일 수 있습니다.

그래서 정리하는 것입니다.


14. .strip()

 
clean = reply.strip()
 

strip()은 문자열 앞뒤의 공백이나 줄바꿈 등을 제거합니다.

원래:

" TOOL:Search \n"
 

였다면:

"TOOL:Search"
 

가 됩니다.

중요한 것은 문자열 중간의 공백은 제거하지 않는다는 것입니다.


15. repr()

 
print(repr(clean))
 

repr()은 문자열을 개발자가 확인하기 좋은 형태로 보여줍니다.

예를 들어:

 
text = "hello"
print(text)
print(repr(text))
 

결과는 대략:

hello
'hello'
 

입니다.

특히 공백이나 \n 같은 것이 있는지 확인할 때 매우 유용합니다.

AI Agent를 디버깅할 때 자주 사용합니다.


16. .lower()

 
print(clean.lower())
 

문자열을 모두 소문자로 바꿉니다.

TOOL:Search
 

tool:search
 

이렇게 됩니다.

왜 필요할까요?

LLM이:

TOOL:Search
 

라고 할 수도 있고:

tool:search
 

라고 할 수도 있기 때문입니다.

문자열 비교를 할 때 대소문자를 통일하면 편합니다.


17. .replace()

 
print(clean.replace("TOOL:",""))
 

replace()는 문자열의 특정 부분을 다른 문자열로 바꿉니다.

여기서는:

TOOL:Search
 

에서

TOOL:
 

을 빈 문자열 ""로 바꿉니다.

결과:

Search
 

입니다.

즉:

 
clean.replace("TOOL:", "")
 

는 사실상

"TOOL:"이라는 접두어를 제거해라.

입니다.


18. .split(":")

 
print(clean.split(":"))
 

:를 기준으로 문자열을 나눕니다.

TOOL:Search
 

를:

 
["TOOL", "Search"]
 

로 만듭니다.

이것은 Agent에서 굉장히 유용합니다.

예를 들어 LLM이:

TOOL:calculator
 

라고 응답했다고 하면:

 
parts = clean.split(":")
 

결과:

 
["TOOL", "calculator"]
 

가 됩니다.

그러면:

 
parts[0]
 

→ "TOOL"

 
parts[1]
 

→ "calculator"

를 얻을 수 있습니다.


19. .startswith()

 
print(clean.startswith("TOOL"))
 

뜻은:

이 문자열이 "TOOL"로 시작하는가?

입니다.

 
"TOOL:Search".startswith("TOOL")
 

→ True

반면:

 
"FINISH".startswith("TOOL")
 

→ False

입니다.

Agent에서는 이런 식으로 사용할 수 있습니다.

 
if response.startswith("TOOL"):
    # Tool 실행
 

즉 LLM의 응답을 보고:

TOOL:Search
 

인지

FINISH
 

인지 판단할 수 있습니다.


20. 빈 응답 검사

다음 코드입니다.

 
responses = ["", " ", "FINISH", None]

for r in responses:
    if r and r.strip():
        print(f"사용가능한 응답: {r.strip()}")
    else:
        print(f"비어있는 응답, 재시도(Value was {r!r})")
 

이 부분은 Agent의 안정성과 관련이 있습니다.

LLM이나 Tool의 결과가 항상 정상적인 문자열이라고 보장할 수 없기 때문입니다.

예를 들어:

 
""
 

빈 문자열

 
" "
 

공백만 있는 문자열

 
None
 

값 자체가 없는 경우

등이 있을 수 있습니다.


21. for r in responses

 
for r in responses:
 

리스트에 있는 값을 하나씩 꺼냅니다.

첫 번째:

 
r = ""
 

두 번째:

 
r = " "
 

세 번째:

 
r = "FINISH"
 

네 번째:

 
r = None
 

입니다.


22. if r and r.strip()

이 부분이 핵심입니다.

 
if r and r.strip():
 

두 가지를 확인합니다.

첫 번째

 
r
 

값 자체가 존재하는가?

두 번째

 
r.strip()
 

공백을 제거했을 때 실제 내용이 있는가?


예를 들어:

 
r = ""
 

이면:

 
r
 

→ False

입니다.


 
r = " "
 

이면:

 
r
 

→ True

하지만:

 
r.strip()
 

→ ""

이므로 False입니다.


 
r = "FINISH"
 

이면:

 
r
 

→ True

 
r.strip()
 

→ "FINISH"

→ True

입니다.


23. r!r은 무엇인가?

 
f"Value was {r!r}"
 

여기서:

 
!r
 

repr 방식으로 표시하라는 뜻입니다.

예를 들어:

 
r = " "
 

라면 일반적으로 출력하면:

Value was  
 

처럼 공백인지 잘 안 보입니다.

하지만:

 
f"{r!r}"
 

이면:

' '
 

라고 보여줍니다.

None이면:

None
 

이라고 명확하게 보여줍니다.

따라서 디버깅에 굉장히 좋습니다.


24. 문자열과 숫자

다음 코드입니다.

 
raw = "12"

print(raw + "3")
print(int(raw) + 1)
 

여기서 매우 중요한 Python 특징이 나옵니다.

raw는 숫자 12가 아닙니다.

 
raw = "12"
 

이므로 **문자열 "12"**입니다.


첫 번째:

 
raw + "3"
 

는:

"12" + "3"
 

입니다.

문자열끼리 더하면 문자열을 이어붙입니다.

결과:

123
 

하지만:

 
int(raw) + 1
 

에서는:

 
int("12")
 

를 통해 문자열 "12"를 정수 12로 바꿉니다.

따라서:

12 + 1
 

13
 

입니다.


25. int()와 float()

Python에서는 데이터를 숫자로 변환할 수 있습니다.

 
int("12")
 

→ 12

 
float("7.3")
 

→ 7.3

입니다.

즉:

문자열
   ↓
숫자 변환
   ↓
계산
 

입니다.

AI Agent에서는 Tool의 결과가 문자열로 돌아오는 경우가 많기 때문에 이런 변환이 중요합니다.


26. try / except

다음 코드가 아주 중요합니다.

 
for value in ["10", "7.3", "여섯"]:
    try:
        print(f"문자 {value!r}을/를  실수 {float(value)}(으)로 변환합니다.")
    except ValueError:
        print(f"{value!r}는 숫자가 아닙니다.")
 

여기서:

 
try:
 

"일단 이 작업을 시도해봐."

라는 뜻입니다.

그리고:

 
except ValueError:
 

"그런데 숫자 변환 과정에서 ValueError가 발생하면 이렇게 처리해."

라는 뜻입니다.


27. 첫 번째 "10"

 
float("10")
 

10.0
 

정상적으로 변환됩니다.


28. 두 번째 "7.3"

 
float("7.3")
 

7.3
 

역시 정상입니다.


29. 세 번째 "여섯"

 
float("여섯")
 

이것은 숫자로 변환할 수 없습니다.

따라서 Python이:

ValueError
 

라는 오류를 발생시킵니다.

하지만 프로그램이 죽는 대신:

 
except ValueError:
 

가 이 오류를 잡아서:

'여섯'는 숫자가 아닙니다.
 

라고 출력합니다.


30. 이것이 Agent에서 중요한 이유

실제 Agent에서는 외부 데이터가 들어옵니다.

예:

사용자 입력
API 결과
파일
DB
검색 결과
LLM 응답
 

그리고 그 데이터가 항상 우리가 원하는 형태라는 보장이 없습니다.

예를 들어:

"1500"
 

일 수도 있지만,

"약 1,500원"
 

일 수도 있습니다.

따라서:

 
try:
    ...
except:
    ...
 

와 같은 방어적인 프로그래밍이 중요합니다.


31. 마지막 함수 build_prompt

이제 가장 중요한 부분입니다.

 
def build_prompt(name, task, tools, tone="friendly"):
 

함수를 하나 만들었습니다.

함수 이름은:

build_prompt
 

입니다.

뜻 그대로:

Prompt를 만들어주는 함수

입니다.


32. 함수의 매개변수

 
def build_prompt(name, task, tools, tone="friendly"):
 

4개의 매개변수를 받습니다.

name
task
tools
tone
 

그런데 tone에는 기본값이 있습니다.

 
tone="friendly"
 

따라서 tone을 전달하지 않으면 자동으로:

friendly
 

가 들어갑니다.


33. ", ".join(tools)

 
tool_list = ", ".join(tools)
 

이것도 매우 중요한 Python 문법입니다.

tools가:

 
["검색", "계산기", "파일읽기"]
 

라면:

 
", ".join(tools)
 

결과는:

검색, 계산기, 파일읽기
 

가 됩니다.

즉 리스트를 하나의 문자열로 합치는 것입니다.


34. 주의할 점: tools가 set이다

실제 호출을 보면:

 
tools = {"검색", "계산기", "파일읽기"}
 

중괄호 {}를 사용했습니다.

이것은 set(집합)입니다.

리스트라면:

 
["검색", "계산기", "파일읽기"]
 

set은:

 
{"검색", "계산기", "파일읽기"}
 

입니다.

그리고 set은 순서를 보장하지 않습니다.

따라서 결과가 실행할 때마다:

검색, 계산기, 파일읽기
 

일 수도 있고

파일읽기, 검색, 계산기
 

일 수도 있습니다.

Prompt에서 Tool의 순서가 중요하다면:

 
tools = ["검색", "계산기", "파일읽기"]
 

처럼 list를 사용하는 것이 좋습니다.


35. Prompt 생성

함수 내부:

 
prompt = f"""
당신은 {name}을 도와주는 어시스턴트입니다.
tone: {tone}
task: {task}
Tools: {tool_list}
작업을 마치면, FINISH를 사용해서 응답하세요.
"""
 

앞에서 배운 개념이 모두 들어 있습니다.

{name}

호출할 때:

 
name="스티븐"
 

이므로:

당신은 스티븐을 도와주는 어시스턴트입니다.
 

가 됩니다.

{tone}

직접적이지만 친절한
 

이 들어갑니다.

{task}

지난달 최고 판매 제품 3개를 찾아라.
 

가 들어갑니다.

{tool_list}

검색, 계산기, 파일읽기
 

가 들어갑니다.


36. .strip()을 붙이는 이유

 
return prompt.strip()
 

Prompt 앞뒤에 불필요한 줄바꿈이나 공백이 생길 수 있기 때문에 제거합니다.

예를 들어:


당신은 스티븐을 도와주는 어시스턴트입니다.
...
 

에서 맨 앞의 불필요한 줄바꿈을 제거해줍니다.


37. return

 
return prompt.strip()
 

이것은

함수가 만들어낸 결과를 호출한 곳으로 돌려준다.

는 의미입니다.

따라서:

 
result = build_prompt(...)
 

라고 하면 함수가 만든 Prompt가:

 
result
 

에 들어갑니다.


38. 실제 함수 호출

 
result = build_prompt(
    name="스티븐",
    task="지난달 최고 판매 제품 3개를 찾아라.",
    tools={"검색", "계산기", "파일읽기"},
    tone="직접적이지만 친절한",
)
 

여기서 각각:

name
 ↓
스티븐

task
 ↓
지난달 최고 판매 제품 3개를 찾아라.

tools
 ↓
검색, 계산기, 파일읽기

tone
 ↓
직접적이지만 친절한
 

이 함수로 전달됩니다.

그러면 함수가 Prompt를 만들고:

 
return prompt.strip()
 

으로 반환합니다.

그 결과가:

 
result
 

에 들어갑니다.


39. 마지막 출력

 
print(result)
 

그러면 만들어진 Prompt가 출력됩니다.

대략:

당신은 스티븐을 도와주는 어시스턴트입니다.
tone: 직접적이지만 친절한
task: 지난달 최고 판매 제품 3개를 찾아라.
Tools: 검색, 계산기, 파일읽기
작업을 마치면, FINISH를 사용해서 응답하세요.
 

가 됩니다.


40. 전체 코드를 Agent 관점에서 보면

이 코드에서 가장 중요한 것은 각각의 Python 문법을 따로 외우는 것이 아닙니다.

전체 구조를 이렇게 이해하는 것이 중요합니다.

사용자
 ↓
name
task
tone
tools
 ↓
build_prompt()
 ↓
Prompt 생성
 ↓
LLM
 ↓
응답
 ↓
문자열 정리
 ↓
TOOL인가?
FINISH인가?
 ↓
Tool 실행 또는 종료
 

즉 지금 공부하고 계신 AI Agent의 기본 골격이 이미 들어 있습니다.


41. 이번 코드에서 특히 기억할 Python 문법

이번 코드는 앞으로 Agent 코드를 읽을 때 계속 만날 문법들을 상당히 잘 모아놓았습니다.

문법의미Agent에서의 용도
f"{x}" 변수 삽입 Prompt 생성
\n 줄바꿈 Prompt 구성
""" """ 여러 줄 문자열 System Prompt
:, 천 단위 콤마 토큰/금액 출력
:.4f 소수 4자리 비용 출력
.strip() 앞뒤 공백 제거 LLM 응답 정리
repr() / !r 문자열 원형 확인 디버깅
.lower() 소문자 변환 응답 비교
.replace() 문자열 교체 Tool prefix 제거
.split() 문자열 분리 Tool/명령 분석
.startswith() 시작 문자열 검사 TOOL: 확인
if r 값 존재 확인 빈 응답 처리
int() 정수 변환 숫자 계산
float() 실수 변환 숫자 계산
try/except 오류 처리 잘못된 LLM/외부 데이터 대응
def 함수 정의 Prompt 생성 함수
join() 여러 문자열 합치기 Tool 목록 생성
return 함수 결과 반환 Prompt 전달

🌟이번 코드에서 가장 중요한 3개

제가 지금 단계에서 특히 강조하고 싶은 것은 세 가지입니다.

① f-string

 
f"Task: {task}"
 

변수를 Prompt 안에 넣는다.


② 문자열 처리

 
strip()
lower()
replace()
split()
startswith()
 

LLM이 내놓은 문자열을 분석하고 정리한다.

이것은 Agent를 만들 때 정말 많이 사용합니다.


③ 함수로 Prompt를 만든다

 
def build_prompt(...):
 

→ Prompt를 매번 직접 작성하지 않고 함수로 자동 생성한다.

이 단계부터 단순한 Python 프로그램이 조금씩 Agent 프로그램의 구조로 발전하기 시작합니다.

 

 

반응형