셀프 액션 AI 가이드: AI 에이전트 구축 여정 시작

AI 에이전트를 만드는 기본 방법을 배우고, 이러한 지능형 시스템을 설계하고 구현하는 데 필요한 도구와 기술을 알아보세요.

인공지능 산업은 급속도로 발전하고 있습니다. 흥미진진하면서도 때로는 혼란스럽기도 합니다.

저는 데이터 과학의 미래가 생성적 AI의 발전과 밀접하게 연관되어 있다고 믿기 때문에 데이터 과학 분야에서 공부하고 학습하며 기초를 다져왔습니다.

내가 처음으로 만든 것이 어제인 것 같습니다. AI 에이전트그리고 2주 후에는 선택할 수 있는 많은 Python 패키지가 생겼고, 성능이 매우 좋은 무코드 옵션도 생겼습니다. n8n.

우리와 대화할 수 있는 단순한 모델부터 인터넷을 검색하고, 파일을 처리하고, 프로젝트를 실행하는, 도처에 있는 AI 에이전트의 쓰나미까지. 데이터 과학 전체 프로세스(최초 데이터 탐색부터 모델링 및 평가까지)가 단 몇 년 만에 이루어졌습니다.

무엇?

이 모든 것을 보고 내 생각은 이렇습니다. "가능한 한 빨리 참여해야 해요."결국, 파도에 휩쓸리는 것보다 파도를 타는 것이 낫습니다.

이러한 이유로 저는 기본 사항부터 첫 번째 AI 에이전트를 구축하는 방법, 그리고 보다 복잡한 개념까지 다루는 일련의 게시물을 시작하기로 결정했습니다.

이제 이야기는 그만하고 시작하겠습니다.

AI 에이전트 기본 사항

AI 에이전트는 대규모 언어 모델(LLM)에 도구와 상호작용하고 우리에게 유용한 작업을 수행할 수 있는 기능을 부여할 때 생성됩니다. 단순한 챗봇이 아니라, 이제 약속을 예약하고, 일정을 관리하고, 인터넷을 검색하고, 소셜 미디어 게시물을 작성하는 등 다양한 작업을 수행할 수 있습니다. 이러한 변화를 통해 AI 에이전트는 완전한 디지털 비서로 거듭납니다.

AI 기반 에이전트는 채팅뿐만 아니라 유용한 일도 할 수 있습니다.

하지만 어떻게 하면 대규모 언어 모델(LLM)에 이런 기능을 부여할 수 있을까요?

간단한 답은 API를 사용하여 대규모 언어 모델과 상호 작용하는 것입니다. 요즘에는 이를 위한 여러 Python 패키지가 있습니다. 제 블로그를 팔로우하시면 제가 이미 Langchain, Agno(이전 Phidata), CrewAI 등 에이전트 생성을 위한 두 가지 패키지를 사용해 본 것을 보실 수 있습니다. 이 시리즈에서는 Agno [1]를 계속 사용하겠습니다.

먼저 다음을 사용하여 가상 환경을 설정합니다. uv 또는 Anaconda나 선호하는 환경 마법사를 사용하세요. 그런 다음 패키지를 설치하세요.

# Agno AI
pip install agno

# module to interact with Gemini
pip install google-generativeai

# Install these other packages that will be needed throughout the tutorial
 pip install agno groq lancedb sentence-transformers tantivy youtube-transcript-api

계속하기 전에 간단히 알려드리겠습니다. Google Gemini API 키[2]를 받는 것을 잊지 마세요.

간단한 프록시를 만드는 것은 매우 쉽습니다. 모든 패키지는 매우 유사하며 클래스가 있습니다. Agent 또는 모델을 정의하고 원하는 대규모 언어 모델과 상호 작용할 수 있도록 하는 유사한 기능입니다. 이 클래스의 주요 구성 요소는 다음과 같습니다.

  • model대규모 언어 모델에 연결합니다. 여기서는 OpenAI, Gemini, Llama, Deepseek 등을 선택하겠습니다.
  • description이 매개변수를 사용하면 에이전트의 동작을 설명할 수 있습니다. 이것은 다음에 추가됩니다. system_message, 이는 유사한 매체입니다.
  • instructions저는 에이전트를 우리가 관리하는 직원이나 보조원이라고 생각합니다. 업무를 완수하려면 무엇을 해야 하는지에 대한 지침을 제공해야 합니다. 다음은 그 지침이 될 수 있는 부분입니다.
  • expected_output여기서는 예상 출력에 대한 지침을 제공할 수 있습니다.
  • tools이것이 대규모 언어 모델을 에이전트로 만들어 이러한 도구를 사용하여 실제 세계와 상호 작용할 수 있게 하는 것입니다.

이제 도구는 없지만 코드 구조에 대한 직관을 구축하는 데 도움이 되는 간단한 에이전트를 만들어 보겠습니다.

# Imports
from agno.agent import Agent
from agno.models.google import Gemini
import os

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
    description= "An assistant agent",
    instructions= ["Be sucint. Answer in a maximum of 2 sentences."],
    markdown= True
    )

# Run agent
response = agent.run("What's the weather like in NYC in May?")

# Print response
print(response.content)

## ...

5월 뉴욕의 기온은 대체로 화씨 50도 초반에서 70도 중반 사이로 적당할 것으로 예상됩니다. 비가 올 가능성이 있으므로 옷을 겹겹이 입고 우산을 쓰는 것이 좋습니다.

훌륭합니다. Gemini 1.5 모델을 사용하고 있습니다. 학습된 데이터에 따라 어떻게 반응하는지 살펴보세요. 오늘 날씨를 알려달라고 요청하면 인터넷에 접속할 수 없다는 응답이 표시됩니다.

중재자에 대해 살펴보겠습니다. instructions 그리고 expected_output이제 우리는 뉴욕시(NYC)의 월, 계절, 평균 기온이 담긴 표를 원합니다.

# Imports
from agno.agent import Agent
from agno.models.google import Gemini
import os

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
    description= "An assistant agent",
    instructions= ["Be sucint. Return a markdown table"],
    expected_output= "A table with month, season and average temperature",	
    markdown= True
    )

# Run agent
response = agent.run("What's the weather like in NYC for each month of the year?")

# Print response
print(response.content)

그리고 그 결과는 다음과 같습니다.

계절 평균 기온(°F)
일월 겨울 32
2월 겨울 35
3월 44
4월 54
5월 63
6월 여름 72
7월 여름 77
XNUMX 월 여름 76
XNUMX 월 가을 70
XNUMX 월 가을 58
XNUMX 월 가을 48
12월 겨울 37

도구

위의 답변은 좋지만, 물론 우리는 강력한 대규모 언어 모델(LLM)을 사용하여 챗봇을 다루거나 오래된 소식을 알려주고 싶지는 않을 것입니다. 맞나요?

우리는 이것이 자동화, 생산성, 그리고 지식으로 가는 다리가 되기를 바랍니다. 따라서 도구 AI 에이전트는 다양한 작업을 수행하여 현실 세계와의 연결 고리를 구축할 수 있습니다. 에이전트 도구의 일반적인 예로는 웹 검색, SQL 실행, 이메일 전송, API 호출 등이 있습니다.

하지만 그보다 더 중요한 점은 Python 함수를 도구로 사용하여 에이전트에 대한 사용자 정의 기능을 만들 수 있다는 것입니다. 이를 통해 다양한 시스템 및 프로세스와 통합할 수 있는 엄청난 가능성이 열립니다.

도구 이는 에이전트가 작업을 완료하기 위해 실행할 수 있는 기능입니다.

코드 측면에서 에이전트에 위젯을 추가하는 것은 단순히 미들웨어를 사용하는 문제입니다. tools 카테고리에서 Agent.

건강 및 웰빙 분야의 1인 기업이 콘텐츠 제작을 자동화하고 싶어 한다고 상상해 보세요. 이 기업은 매일 건강한 습관에 대한 팁을 게시합니다. 콘텐츠 제작이 보기처럼 간단하지 않다는 것을 저는 잘 알고 있습니다. 창의력, 조사, 그리고 카피라이팅 기술이 필요합니다. 따라서 콘텐츠 제작 과정이나 적어도 일부만이라도 자동화할 수 있다면 시간을 절약할 수 있습니다.

그래서 간단한 인스타그램 게시물을 작성하고 검토를 위해 마크다운 파일로 저장할 수 있는 아주 간단한 에이전트를 만드는 코드를 작성하고 있습니다. 기존 '생각하기 > 조사하기 > 쓰기 > 검토하기 > 게시하기'에서 '검토하기 > 게시하기'로 프로세스를 단축했습니다.

# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.file import FileTools

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
                  description= "You are a social media marketer specialized in creating engaging content.",
                  tools=[FileTools(
                      read_files=True, 
                      save_files=True
                      )],
                  show_tool_calls=True)

# Writing and saving a file
agent.print_response("""Write a short post for instagram with tips and tricks
                        that positions me as an authority in healthy eating 
                        and save it to a file named 'post.txt'.""",
                     markdown=True)

결과적으로 우리는 다음과 같은 결과를 얻었습니다.

건강한 식습관을 통해 긍정적인 에너지를 발산하세요.

1. 통곡물을 우선시하세요: 과일, 채소, 살코기 단백질, 통곡물을 많이 섭취하세요. 이러한 식품은 영양소가 풍부하여 배부르고 활력이 넘치는 느낌을 줍니다.

2. 주의 깊게 식사하세요: 신체의 배고픔과 포만감 신호에 주의를 기울이세요. 식사 중에는 방해 요소를 피하세요.

3. 물을 많이 마시세요. 물은 소화, 에너지 수준, 전반적인 건강에 필수적입니다..

4. 자신을 억압하지 마세요: 가끔은 달콤한 것을 먹도록 하세요. 결핍은 나중에 과식으로 이어질 수 있습니다. 모든 것을 적당히 즐기세요!

5. 미리 계획하세요: 건강에 해로운 결정을 내리지 않으려면 식사나 간식을 미리 준비하세요.

#건강한식단 #건강한라이프스타일 #영양 #음식사랑 #건강과웰빙 #건강팁 #클린이팅 #체중감량 #건강한레시피 #영양팁 #즉석건강 #건강식품 #마음챙김식단 #건강여정 #건강코치

물론, 웹사이트 목록에서 콘텐츠를 검색하는 다른 요원들과 콘텐츠 검사 및 검토자, 그리고 게시물 이미지를 제작하는 또 다른 요원들로 구성된 팀을 구성하면 더 복잡하게 만들 수 있습니다. 하지만 추가 방법에 대한 전반적인 아이디어는 이해하셨을 거라고 생각합니다. tool 나에게 Agent.

추가할 수 있는 또 다른 유형의 도구는 다음과 같습니다. 도구 기능 도구Python 함수를 사용하여 대규모 언어 모델(LLM)을 위한 도구 역할을 할 수 있습니다. 다음과 같은 유형 힌트를 추가하는 것을 잊지 마세요. video_id:str, 그러면 모델이 함수의 입력으로 무엇을 사용해야 할지 알 수 있습니다. 그렇지 않으면 오류가 발생할 수 있습니다.

이것이 어떻게 작동하는지 간략하게 살펴보겠습니다.

이제 에이전트가 특정 YouTube 동영상을 검색하여 요약할 수 있도록 하려고 합니다. 이를 위해 YouTube에서 동영상 버전을 다운로드하고 요약을 위해 모델에 전달하는 함수를 만듭니다.

# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from youtube_transcript_api import YouTubeTranscriptApi

# Get YT transcript
def get_yt_transcript(video_id:str) -> str:
      
    """
    Use this function to get the transcript from a YouTube video using the video id.

    Parameters
    ----------
    video_id : str
        The id of the YouTube video.
    Returns
    -------
    str
        The transcript of the video.
    """

    # Instantiate
    ytt_api = YouTubeTranscriptApi()
    # Fetch
    yt = ytt_api.fetch(video_id)
    # Return
    return ''.join([line.text for line in yt])

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
                  description= "You are an assistant that summarizes YouTube videos.",
                  tools=[get_yt_transcript],
                  expected_output= "A summary of the video with the 5 main points and 2 questions for me to test my understanding.",
                  markdown=True,
                  show_tool_calls=True)

# Run agent
agent.print_response("""Summarize the text of the video with the id 'hrZSfMly_Ck' """,
                     markdown=True)

그러면 결과가 나옵니다.

추론 능력이 있는 에이전트

Agno 패키지가 제공하는 또 다른 훌륭한 기능은 질문에 답하기 전에 상황을 분석할 수 있는 에이전트를 만드는 기능입니다. 바로 추론 도구입니다. 확인해 보세요. AI 에이전트의 유형 및 용도: 자세한 설명.

Alibaba의 Qwen-qwq-32b 모델을 사용하여 추론 에이전트를 만들어 보겠습니다. 여기서 유일한 차이점은 모델 외에 도구를 추가한다는 것입니다. ReasoningTools()이 도구를 사용하면 상담원이 답변을 제공하기 전에 논리적으로 생각할 수 있습니다.

재산이란 adding_instructions=True 상담원에게 자세한 지침을 제공하여 도구 사용의 신뢰성과 정확성을 향상시킵니다. 이 기능을 설정하는 동안 False 이로 인해 에이전트는 자체 추론에 의존하게 되며, 이는 오류 발생 가능성을 높입니다. 이를 통해 모델의 성능을 독립적으로 평가할 수 있습니다.

# Imports
import os
from agno.agent import Agent
from agno.models.groq import Groq
from agno.tools.reasoning import ReasoningTools

# Create agent with reasoning
agent = Agent(
    model= Groq(id="qwen-qwq-32b",
                  api_key = os.environ.get("GROQ_API_KEY")),
                  description= "You are an experienced math teacher.",
                  tools=[ReasoningTools(add_instructions=True)],
                  show_tool_calls=True)

# Writing and saving a file
agent.print_response("""Explain the concept of sin and cosine in simple terms.""",
                     stream=True,
                     show_full_reasoning=True,
                     markdown=True)

출력 결과는 아래와 같습니다.

지식 제공 에이전트

이 도구는 검색 증강 생성(RAG) 시스템을 구축하는 가장 쉬운 방법입니다. 이 기능을 사용하면 상담원을 특정 웹사이트 또는 웹사이트 목록으로 안내할 수 있으며, 상담원은 해당 콘텐츠를 벡터 데이터베이스에 추가합니다. 그러면 해당 콘텐츠를 검색할 수 있습니다. 요청이 있을 경우, 상담원은 해당 콘텐츠를 답변의 일부로 사용할 수 있습니다. 이 기술은 AI 답변의 정확성과 신뢰성을 향상시킵니다.

이 간단한 예시에서는 웹사이트에 페이지 하나를 추가하고 담당자에게 해당 페이지에 게재된 책에 대해 문의했습니다. 이는 담당자가 정보에 어떻게 접근하고 활용할 수 있는지 보여줍니다.

# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from agno.knowledge.url import UrlKnowledge
from agno.vectordb.lancedb import LanceDb, SearchType
from agno.embedder.sentence_transformer import SentenceTransformerEmbedder

# Load webpage to the knowledge base
agent_knowledge = UrlKnowledge(
    urls=["https://gustavorsantos.me/?page_id=47"],
    vector_db=LanceDb(
        uri="tmp/lancedb",
        table_name="projects",
        search_type=SearchType.hybrid,
        # Use Sentence Transformer for embeddings
        embedder=SentenceTransformerEmbedder(),
    ),
)

# Create agent
agent = Agent(
    model=Gemini(id="gemini-2.0-flash", api_key=os.environ.get("GEMINI_API_KEY")),
    instructions=[
        "Use tables to display data.",
        "Search your knowledge before answering the question.",
        "Only inlcude the content from the agent_knowledge base table 'projects'",
        "Only include the output in your response. No other text.",
    ],
    knowledge=agent_knowledge,
    add_datetime_to_instructions=True,
    markdown=True,
)

if __name__ == "__main__":
    # Load the knowledge base, you can comment out after first run
    # Set recreate to True to recreate the knowledge base if needed
    agent.knowledge.load(recreate=False)
    agent.print_response(
        "What are the two books listed in the 'agent_knowledge'",
        stream=True,
        show_full_reasoning=True,
        stream_intermediate_steps=True,
    )

메모리 지원 에이전트

이 글에서 다룰 마지막 유형은 AI 에이전트 분야의 기본 개념인 메모리 기반 에이전트입니다.

이 유형의 에이전트는 이전 상호작용에서 사용자에 대한 정보를 저장하고 검색하여 사용자 선호도를 파악하고 맞춤형 응답을 제공할 수 있습니다. 이러한 기억은 에이전트가 후속 상호작용에서 더욱 효과적으로 작동하도록 합니다.

에이전트에게 몇 가지 정보를 알려주고 그 상호작용을 기반으로 추천을 요청하는 예시를 살펴보겠습니다. 이는 메모리 기반 에이전트가 사용자 경험을 어떻게 향상시킬 수 있는지 보여줍니다.

# imports
import os
from agno.agent import Agent
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.memory import Memory
from agno.models.google import Gemini
from rich.pretty import pprint

# User Name
user_id = "data_scientist"

# Creating a memory database
memory = Memory(
    db=SqliteMemoryDb(table_name="memory", 
                      db_file="tmp/memory.db"),
    model=Gemini(id="gemini-2.0-flash", 
                 api_key=os.environ.get("GEMINI_API_KEY"))
                 )

# Clear the memory before start
memory.clear()

# Create the agent
agent = Agent(
    model=Gemini(id="gemini-2.0-flash", api_key=os.environ.get("GEMINI_API_KEY")),
    user_id=user_id,
    memory=memory,
    # Enable the Agent to dynamically create and manage user memories
    enable_agentic_memory=True,
    add_datetime_to_instructions=True,
    markdown=True,
)

# Run the code
if __name__ == "__main__":
    agent.print_response("My name is Gustavo and I am a Data Scientist learning about AI Agents.")
    memories = memory.get_user_memories(user_id=user_id)
    print(f"Memories about {user_id}:")
    pprint(memories)
    agent.print_response("What topic should I study about?")
    agent.print_response("I write articles for Towards Data Science.")
    print(f"Memories about {user_id}:")
    pprint(memories)
    agent.print_response("Where should I post my next article?")

이로써 우리는 이 첫 번째 기사를 마칩니다. 인공지능 에이전트이 글이 다양한 유형의 AI 에이전트에 대한 유용한 개요를 제공하기를 바랍니다.

قبل المغادرة

이 글에는 많은 정보가 담겨 있습니다. AI 에이전트 학습의 첫걸음을 내디뎠습니다. 다소 혼란스러울 수 있다는 것을 알고 있습니다. 정보가 너무 많아서 어디서부터 시작해야 할지, 무엇을 공부해야 할지 알기 어려울 수 있습니다.

제가 제안하는 방법은 제가 밟고 있는 것과 같은 길을 따라가는 것입니다. 한 번에 한 단계씩, Agno나 CrewAI 같은 몇 가지 패키지를 선택하고 더 깊이 파고들면서 점점 더 복잡한 에이전트를 만드는 방법을 배우는 것입니다. 이처럼 점진적으로 접근하는 것이 복잡한 AI 개념을 이해하는 데 가장 좋습니다.

이 글에서는 처음부터 시작하여 대규모 언어 모델(LLM)과 간단히 상호작용하는 방법부터 메모리를 갖춘 에이전트를 만드는 방법, 심지어 AI 에이전트를 위한 단순 검색 증강(RAG) 시스템을 만드는 방법까지 살펴보았습니다. 이러한 기본 기술은 AI 에이전트의 작동 방식을 이해하는 데 필수적입니다.

분명히 하나의 에이전트로 할 수 있는 일이 많습니다. 고급 예제는 참고문헌 [4]에서 확인하세요.

이러한 간단한 기술만 있으면 분명 앞서 나갈 수 있고, 할 수 있는 일은 훨씬 더 많습니다. 창의력을 발휘해 보세요. 대규모 언어 모델을 활용하여 놀라운 것을 만들어 보세요! AI 도구를 활용하여 창의력을 향상시켜 보세요.

다음 글에서는 AI 에이전트와 그 평가에 대해 자세히 알아보겠습니다. 기대해 주세요!

GitHub 저장소

https://github.com/gurezende/agno-ai-labs

리뷰어

[1] https://docs.agno.com/introduction

[2] https://ai.google.dev/gemini-api/docs

[3] https://pypi.org/project/youtube-transcript-api/

[4] https://github.com/agno-agi/agno/tree/main/cookbook

[5] https://docs.agno.com/introduction/agents#agent-with-knowledge

댓글이 닫혔습니다.