PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2025/05/14 21:04:58
Name 모찌피치모찌피치
Subject [일반] AI Agent와 MCP (수정됨)
작년에 AI 쪽에서 이야기가 많이 나왔던 AI Agent, 그리고 올해의 화두였던 MCP와 A2A 중 A2A를 제외한 나머지 2가지에 대해 짤막한 실습을 해보고자 합니다.


AI Agent란 특정 환경 하에서 주어진 목표를 달성하기 위해 독자적으로 추론, 이해, 행동하는 시스템으로 챗봇보다는 보다 상위 개념입니다.

한 가지 예시로는 자판기 재고 관리를 위한 AI Agent를 만들고, 각 LLM 별 성능을 비교한 시뮬레이션이 있죠. (이 경우 실물 재고 입/출고는 명령을 전달할 시 완료된 것으로 처리) 해당 시뮬레이션 상에서는 Agent가 재고를 확인하고, 부족분에 대해 인터넷에서 최저가를 검색 후 구매, 이메일 문의 등을 독자적으로 처리했습니다.

예시 :[오픈AI API]
를 넣고 저장합니다.

그 후 아래 명령어를 실행하면


from agents import Agent, Runner, WebSearchTool, ModelSettings
from dotenv import load_dotenv
import asyncio

load_dotenv()

research_assistant = Agent(
    name="Research Assistant",
    instructions="""You are a research assistant that helps users find and summarize information.
       When asked about a topic:
       1. Search the web for relevant, up-to-date information
       2. Synthesize the information into a clear, concise summary
       3. Structure your response with headings and bullet points when appropriate
       4. Always cite your sources at the end of your response
    
       If the information might be time-sensitive or rapidly changing, mention when the search was performed.
       """,
   model="gpt-4o",
   model_settings=ModelSettings(
       temperature=0.3,
       max_tokens=256,
   ),
    tools=[WebSearchTool()]
)

async def run_agent_example():
   result = await Runner.run(research_assistant, "Could you please explain about the recent US-China tariff developments?")
   print(result.final_output)

if __name__ == "__main__":
   asyncio.run(run_agent_example())

에이전트가 최근 미-중 관세 정책에 대해 요약해줄 겁니다.

instructions 안에는 Agent가 해야할 일과 방식에 대한 상세한 지시가 들어가고,
model은 그냥 어떤 모델을 쓸지 넣으면 되고(고사양 모델일수록 크레딧을 많이 잡아먹습니다)
mmodel_settings는 모델의 설정값을 변경하는 패러미터로, temperature는 답변의 랜덤성, max_token은 최대 길이를 나타냅니다.

위 변수들에 대해서는 구글에서 발간한 Prompting에 관련한 가이드가 있으니 한 번 살펴보시면 되겠습니다.

https://drive.google.com/file/d/1AbaBYbEa_EbPelsT40-vj64L-2IwUJHy/view

tools 안에는 이 Agent가 활용할 수 있는 도구들을 담아주는 도구상자인데, WebSearchTool은 말그대로 웹을 검색할 수 있게 해주는 툴이고, 그 외에도 커스텀 함수를 만들어서 tool에 담아두거나 (e.g. 다른 API를 호출하는 함수), 다른 Agent를 만들어서 tool에 담아줄 수도 있습니다.

다른 Agent를 호출하는 tool이 필요할 수도 있는데, 그 이유는 기본적으로 현재까지의 LLM이 작업량이 길어질 수록 정확도가 많이 떨어지는 현상이 있기 때문에 하나의 긴 task를 여러 가지로 파편화해서 할당하는 게 결과물이 좋기 때문입니다. 이는 위의 자판기 재고관리 예시에도 나와있습니다.

그리고 이 Agents 간의 상호작용 프로토콜 중 하나가 구글이 만든 A2A인데, 이건 아직 써보지 않아서 모르겠습니다.

Agent에 대한 튜토리얼은 여기서 마치고 MCP로 넘어가보죠.



MCP란?

Agent의 기본은 이미 학습되어있는 LLM 안에서 토큰을 내뱉는 구조로, 위의 예제에서처럼 WebSearchTool 등의 도구를 쥐어줄 수는 있지만, 기본적으로는 외부세계의 데이터를 받아올 수는 없는 구조입니다.

이런 폐쇄적인 Agent에게 외부 데이터를 받아오는 API를 Agent가 이해하기 쉬운 구조로 서플라이하는 규격을 Anthropic에서 제시했는데, 그게 바로 MCP입니다.

MCP를 쉽게 테스트해볼 수 있는 방법은 우선 Claude Desktop을 설치하고, PyCharm으로 가서 터미널을 열고 다음 명령어를 실행합니다.

npx -y @chaindead/telegram-mcp


만약 도중에 에러가 뜬다면 Claude에 에러를 복붙하면 잘 해결해줍니다.

그 후 Claude Desktop이 설치된 폴더로 가서

claude_desktop_config.json

파일을 생성하고, 그 안에 아래 내용을 추가해줍니다.

{
    "mcpServers": {
        "telegram-mcp": {
            "command": "uv 패키지를 설치한 주소uv",
            "args": [
                "--directory",
                "위에서 telegram-mcp를 설치한 주소telegram-mcp",
                "run",
                "main.py"
            ]
        }
    }
}

그리고 Claude를 열면 아래 버튼에 telegram-mcp가 추가된 것을 볼 수 있고, 저는 Saved Messages에 "Hi"라고 보낼 것을 요청했습니다.
nhvcDYU.png
그 결과는?

0uxNRaq.png
깔끔하게 잘 들어왔네요.

이외에도 안읽은 메시지를 요약해달라던가 하는 등 다양하게 활용 가능합니다.




앞의 Agent와 뒤의 MCP를 잘 합쳐서 버무려보면 아래처럼 특정 블로그의 글을 요약해서 텔레그램 채널로 보내주는 것도 제작 가능합니다.
ND12nyd.png'>

저도 AI 산업쪽에서 일을 하거나 프로그래머가 아니다보니 1차원적인 작업 위주로 작성했습니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
공지 [일반] [공지]자게 운영위 현황 및 정치카테고리 관련 안내 드립니다. [28] jjohny=쿠마 25/03/16 18826 18
공지 [정치] [공지] 정치카테고리 운영 규칙을 변경합니다. [허들 적용 완료] [126] 오호 20/12/30 302373 0
공지 [일반] 자유게시판 글 작성시의 표현 사용에 대해 다시 공지드립니다. [16] empty 19/02/25 356522 10
공지 [일반] 통합 규정(2019.11.8. 개정) [2] jjohny=쿠마 19/11/08 359308 4
104185 [일반] AI Agent와 MCP 모찌피치모찌피치886 25/05/14 886 2
104184 [일반] 일본 여행중 지갑 잃어버렸다 찾은 썰.ssul [14] 오징어개임1963 25/05/14 1963 7
104183 [일반] 본조비... [35] a-ha6332 25/05/13 6332 5
104182 [일반] 걸레빤 물.. 평양냉면을 먹고 오다. [92] 김삼관7863 25/05/13 7863 3
104181 [일반] 고양국제꽃박람회에 다녀왔습니다 [11] 及時雨3921 25/05/13 3921 4
104179 [일반]  '주호민 아들 아동학대 혐의' 특수교사 항소심서 무죄 [188] 퍼그16398 25/05/13 16398 11
104178 [일반] 도재욱선수의 결승진출을 보면서... [36] 이영수`9210 25/05/13 9210 19
104174 [일반] 광무제를 낳은 용릉후 가문 (6) - 미완의 꿈, 제무왕 유연 5 [6] 계층방정2715 25/05/12 2715 3
104173 [일반] 이제와서 데스노트(애니) 정주행을? [20] 김삼관3668 25/05/12 3668 1
104172 [일반] 미국이 대중 관세를 90일 간 연기하였습니다. [81] 김유라10285 25/05/12 10285 4
104171 [일반] 중드 추천 [오복임문] 소개 글 (스포 최소화) [15] 마음속의빛3612 25/05/12 3612 0
104170 [일반] [번역] 무역 포커에서 이기는 패: 미-영 경제 번영 협정 검토 [3] Q-tip7472 25/05/10 7472 2
104169 [일반] 당분간 skt 이용자는 각종 인증 문자서비스 이용을 하지 않으시는게 좋겠습니다. [34] 키토13620 25/05/10 13620 10
104168 [일반] [창작] 논픽션적 픽션 (습작..?) [2] aDayInTheLife4398 25/05/10 4398 0
104167 [일반] 1달넘게 무한 폭락만 하는 미스테리한 나스닥 종목 [12] 독서상품권8452 25/05/10 8452 0
104166 [일반] 백종원의 프랜차이즈 계약은 다른 프랜차이즈보다 왜 더 문제인가 [68] 홍검12504 25/05/10 12504 38
104165 [일반] 도파민. [2] 일월마가2836 25/05/10 2836 3
104164 [일반] 해외 장기 체류자의 건강보험 자격 정지 및 해제 조건이 변경 되네요. [107] 삭제됨10160 25/05/09 10160 3
104163 [일반] 새 교황에 미국 프레보스트 추기경…교황명은 레오 14세 [44] Davi4ever13428 25/05/09 13428 2
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로