AI Agent

AI 에이전트는 사람의 개입 없이 특정 작업을 수행하는 자율 지능형 시스템

 


TOOL

AI Agent가 사용하게 되는 도구 Ex) 날씨 API, google 캘린더 API 등


Python을 사용한 AI Agent

 

1. 툴 작성

2. 툴 선택을 위한 prompt 작성

3. 툴 선택 prompt를 사용 llm 결과 반환

4. 툴의 사용

5. 4번의 결과로 답변 llm 생성

 

1. 툴 작성

# 입력 받는 타입으 str, 그 외 값을 받는가면 str로 casting
def add_too(input_str : str) -> str:
    try:
        arr = list(input_str.split())
        return str(sum(arr))
    except Exception as e:
        return f"에러: {str(e)}"

 

2. 툴 선택을 위한 Prompt 작성

# 일반대화와 두 수를 더하는 2가지의 TOOL 정의
TOOL_PROMPT_DISC="""
당신은 다음 도구를 사용할 수 있습니다:

도구 이름: AddTool
기능: 두 숫자를 더합니다.
입력 예시: "3 5"


도구 이름: ChatTool
기능: 일반적인 질문이나 대화에 답변합니다. 계산, 검색, 도구 실행이 필요하지 않은 경우 사용하세요.
입력 예시: "오늘 기분이 어때?" 또는 "AI는 어떻게 작동해?"

사용자가 질문하면, 어떤 도구를 사용할지 판단하고 다음 형식으로 대답하세요:

사용할 도구: <도구 이름>
입력값: <도구에 줄 입력값>

사용자의 질문: "{question}"
"""

 

3. 툴 선택 Prompt를 사용한 LLM 결과 출력

from langchain_community.chat_models import ChatOpenAI

api_key = 'api_key'
model = 'gpt-4o-mini'
llm = ChatOpenAI(api_key=api_key, model=model)
query = "3더하기 5의 값은 뭐지?"

TOOL_PROMPT = TOOL_PROMPT_DISC.format(question=query)
TOOL_RESULT = llm.invoke(TOOL_PROMPT)

 

4. 툴의 사용

import re
match = re.search(r"사용할 도구:\s*(\w+)\s*입력값:\s*[\"']?(.+?)[\"']?$", TOOL_RESULT.content.strip(), re.DOTALL)

tool = match.group(1)
tool_input = match.group(2)
print(tool)
print(tool_input)

if tool == 'AddTool':
    tool_result = add_tool(tool_input)
    print(tool_result)
elif tool == 'ChatTool':
    llm.invoke(tool_input)

 

 

5. 툴의 결과로 답변생성

import re
match = re.search(r"사용할 도구:\s*(\w+)\s*입력값:\s*[\"']?(.+?)[\"']?$", TOOL_RESULT.content.strip(), re.DOTALL)

tool = match.group(1)
tool_input = match.group(2)
print(tool)
print(tool_input)

if tool == 'AddTool':
    tool_result = add_tool(tool_input)
    print(tool_result)
    FINAL_PROMPT_DISC = """
        사용자의 질문: "{question}"
        도구 실행 결과: {result}
        이제 사용자에게 자연어로 대답하세요.
    """
    FINAL_PROMPT = FINAL_PROMPT_DISC.format(question = query, result=tool_result)
    print(llm.invoke(FINAL_PROMPT))
elif tool == 'ChatTool':
    llm.invoke(tool_input)

 

 

 

 

.py로 만든 파일

from langchain_community.chat_models import ChatOpenAI
import re

api_key = ''
model = 'gpt-4o-mini'
llm = ChatOpenAI(api_key=api_key, model=model)



######## prompt
# 도구 선택 프롬프트
tool_prompt_disc="""
당신은 다음 도구를 사용할 수 있습니다:

도구 이름: AddTool
기능: 두 숫자를 더합니다.
입력 예시: "3 5"


도구 이름: ChatTool
기능: 일반적인 질문이나 대화에 답변합니다. 계산, 검색, 도구 실행이 필요하지 않은 경우 사용하세요.
입력 예시: "오늘 기분이 어때?" 또는 "AI는 어떻게 작동해?"

사용자가 질문하면, 어떤 도구를 사용할지 판단하고 다음 형식으로 대답하세요:

사용할 도구: <도구 이름>
입력값: <도구에 줄 입력값>

사용자의 질문: "{question}"
"""

final_prompt_disc="""
사용자의 질문: "{question}"
도구 실행 결과: {result}
이제 사용자에게 자연어로 대답하세요.
"""

########

def add_tool(input_str : str) -> str:
    try:
        arr = list(map(int, input_str.split()))
        return str(sum(arr))
    except Exception as e:
        return f"에러: {str(e)}"
    
def run_agent(query: str):
    tool_prompt = tool_prompt_disc.format(question=query)
    tool_result = llm.invoke(tool_prompt)

    match = re.search(r"사용할 도구:\s*(\w+)\s*입력값:\s*[\"']?(.+?)[\"']?$", tool_result.content.strip(), re.DOTALL)
    tool = match.group(1)
    tool_input = match.group(2)
    print(tool_result.content)
    if tool == "AddTool":
        add_result = add_tool(tool_input)
        final_prompt = final_prompt_disc.format(question = query, result=add_result)
        return llm.invoke(final_prompt).content
    elif tool == "ChatTool":
        final_prompt = final_prompt_disc.format(question = query, result=tool_input)
        return llm.invoke(final_prompt).content
    
if __name__ == '__main__':
    query="3 더하기 5는 ?"
    # query="오늘 저녁메뉴는 뭘 먹는게 좋을까?
    print("사용자 질문 :", query)
    result = run_agent(query)
    print("llm 답변: ",result)

 

addTool을 사용할만한 질문
chatTool을 사용할만한 질문

 

https://github.com/Kmmanki/RAG_inflearn/blob/main/Codes/2-1AI_Agent_python.ipynb

 

RAG_inflearn/Codes/2-1AI_Agent_python.ipynb at main · Kmmanki/RAG_inflearn

인프런 RAG를 활용한 LLM Application. Contribute to Kmmanki/RAG_inflearn development by creating an account on GitHub.

github.com

 

'AI????, LLM???' 카테고리의 다른 글

Langchain의 AgentType  (2) 2025.05.09
AI Agent와 Tool 2 (langchain을 사용한)  (0) 2025.04.15
LangChain을 사용한 RAG 구성 1  (0) 2025.04.15

+ Recent posts