[00:00]
지금쯤이면 여러분들도
[00:01]
Gemini 2.5 Pro에 대한 모든 관심과 기대를 보셨을 것 같습니다.
[00:05]
벤치마크 결과와
[00:07]
사람들이 공유한 결과들을 보면
[00:10]
이제 독립적인 벤치마크 결과들이
[00:12]
나오기 시작했는데, 특히 실시간 벤치마크에서
[00:15]
이 모델이 다른 모델들을 크게 앞서며
[00:18]
최고의 성능을 보여주고 있습니다.
[00:21]
거의 6포인트 차이가 나면서
[00:24]
코딩 측면에서도
[00:26]
이전 세대 모델들보다 훨씬 뛰어난
[00:29]
성능을 보여주고 있습니다.
[00:32]
폴리글랏 ADER 벤치마크에서도
[00:36]
독립적인 테스트 결과가 구글의 발표를
[00:39]
확인해주고 있죠.
[00:42]
코딩 능력이 정말 뛰어나서, 이 모델을
[00:44]
테스트해보고 싶었습니다. 하지만
[00:46]
게임을 만들거나 단발성 작업을 요청하는 대신
[00:50]
저는 많은 에이전트를 만들어봤고
[00:52]
에이전트 시스템의 핵심 요소 중 하나는
[00:55]
LLM이 함수를 정확하게 호출하는
[00:59]
능력입니다.
[01:00]
이 새로운 모델의 함수 호출 능력이
[01:03]
얼마나 좋은지 테스트해보겠습니다.
[01:06]
기본적인 함수 호출부터 시작해서
[01:07]
병렬 함수 호출 능력도 살펴볼 건데,
[01:10]
이는 실제 응용 프로그램 개발에
[01:12]
매우 유용합니다.
[01:15]
그 다음으로는
[01:18]
텍스트를 SQL로 변환하는 어시스턴트를
[01:21]
이 모델로 만들어보겠습니다. 기본적인
[01:23]
예제가 될 텐데,
[01:25]
제가 정말 기대하는 부분은
[01:27]
이 텍스트-SQL 시스템과
[01:31]
비정형 데이터에 대한 병렬 함수 호출을
[01:34]
결합했을 때입니다. 이것이야말로
[01:38]
우수한 코딩 LLM의 진정한 힘을 보여줄 것입니다.
[01:42]
코드를 보여드리기 전에
[01:44]
함수 호출에 대해 간단히 복습해보겠습니다.
[01:47]
제 이전 영상들을 보셨다면
[01:50]
아시겠지만,
[01:52]
기본적으로 에이전트는
[01:55]
실제 세계와 상호작용할 수 있는 도구 세트를 가지고 있습니다.
[01:58]
수학 계산이나
[02:00]
웹 검색, 날씨 확인 등이
[02:02]
여기에 포함됩니다.
[02:04]
사용자 질문이 들어오면
[02:07]
LLM이나 에이전트는 외부 도구가 필요한지
[02:09]
아니면 자체 학습 데이터로
[02:13]
답변할 수 있는지 판단해야 합니다.
[02:16]
외부 도구가 필요 없다면
[02:19]
LLM이 응답을 생성하여
[02:21]
사용자에게 보여주지만
[02:23]
도구가 필요한 경우에는 적절한 도구를
[02:26]
선택하고 해당 도구나 함수에
[02:29]
적절한 입력값을 생성합니다.
[02:33]
그리고 응답을 받아
[02:36]
최종 사용자 응답을 생성하는 데 활용합니다.
[02:39]
이것이 일반적인
[02:42]
함수 호출의 흐름입니다.
[02:44]
보통은 사용자가 실행을 제어해야 하는데
[02:48]
함수를 호출하고
[02:50]
그 응답을 다시
[02:52]
LLM에 전달해야 합니다. 하지만 Gemini
[02:56]
파이썬 SDK는 이 모든 것을
[02:59]
자동으로 처리할 수 있으면서도
[03:01]
필요한 경우 수동으로
[03:03]
함수를 호출할 수 있는
[03:05]
유연성도 제공합니다.
[03:07]
이 영상에서는
[03:09]
Google SDK에 내장된 자동화된
[03:12]
함수 호출을 사용할 것입니다.
[03:14]
먼저 Google SDK를 설치하고 API 키를 설정해야 합니다.
[03:18]
Vortex AI를 사용하고 싶다면
[03:20]
Vortex 버전을 사용할 수도 있지만, 저는
[03:23]
AI 스튜디오에만 집중해서
[03:25]
AI 스튜디오에 가서
[03:28]
Gemini 2.5를 선택하면 이 모델을
[03:31]
무료로 사용할 수 있습니다. 지식 기준일은
[03:34]
2025년 1월입니다.
[03:36]
따라서 최신 지식을 학습한
[03:39]
최신 모델이라고
[03:41]
할 수 있죠.
[03:43]
한 가지 주의할 점은
[03:45]
사용량 제한입니다. 현재 무료 API로는
[03:48]
분당 5개의 요청 또는
[03:51]
하루 총 50개의 요청만 가능합니다. 하지만
[03:55]
많은 사람들이 주목하지 않는
[03:57]
큰 특징은 거대한 컨텍스트 윈도우입니다.
[04:00]
입력으로 100만 토큰을 처리할 수 있을 뿐만 아니라
[04:03]
출력으로 최대 65,000 토큰을 생성할 수 있어서
[04:07]
정말 훌륭합니다.
[04:10]
특히 대규모
[04:12]
코드베이스 작업에 적합하죠. 자, 이제 우리 코드에서는
[04:16]
Gemini 2.5 Pro
[04:18]
Experimental
[04:20]
0325를 사용할 겁니다. 간단한
[04:23]
LLM 호출을 해보겠습니다. 예를 들어
[04:25]
'샌프란시스코의 날씨는 어떤가요?'라고 물으면
[04:28]
JSON 딕셔너리로 응답이 오는데
[04:30]
text라는 키를 포함합니다. 여기
[04:34]
응답을 보면
[04:36]
실시간으로 최신 정보를
[04:38]
전용 날씨 앱이나 웹사이트처럼
[04:41]
제공할 수 없다고 합니다. 즉, 자신의
[04:44]
한계를 알고 있는 거죠. API는 또한
[04:47]
모델 번호와 사용된 총 토큰 수,
[04:50]
입력 토큰의 총 개수와
[04:52]
출력 토큰의 총 개수를
[04:55]
알려줍니다. 한 가지 더 중요한 점은
[04:59]
API가 사고 과정을 보여주지 않는다는 건데,
[05:02]
이는 아쉽습니다. 볼 수 있으면
[05:05]
좋겠지만
[05:07]
이해할 만한 이유가 있습니다. 만약
[05:10]
API가 사고 과정을 공개하면
[05:13]
다른 사람들이 그 사고 과정을 이용해
[05:15]
모델을 학습시킬 수 있기 때문에
[05:17]
이런 결정을 한 것 같습니다. 또한
[05:20]
도구 사용에 대한 정보와
[05:22]
프롬프트 토큰 수도 받을 수 있습니다.
[05:25]
이를 통해 구조화된 출력을
[05:27]
생성하고 도구 호출이
[05:29]
가능하다는 것을 알 수 있습니다. 이제 아주
[05:32]
기본적이고 간단한 함수 호출을 해보겠습니다.
[05:34]
다른 사람들처럼 저도
[05:37]
get_current_weather라는 함수를 만들었는데,
[05:40]
API 호출은 하지 않고 단순히
[05:42]
더미 데이터만 반환합니다. 누군가
[05:45]
샌프란시스코를 언급하면
[05:47]
안개 끼고 15도라고 합니다.
[05:50]
뉴욕이면 맑음에
[05:53]
22도를 반환하고, 다른 지역을 입력하면
[05:57]
구름 조금에
[06:00]
20도를 반환합니다. 이게 바로 간단한
[06:03]
함수의 구현입니다. 그리고
[06:06]
함수 설명에는 독스트링을 추가해서
[06:09]
모델에게 이 함수가
[06:12]
정확히 무엇을 하는지와
[06:15]
예상되는 입력이 무엇인지 알려줍니다. 이것을
[06:18]
도구로 사용하는 건 매우 간단합니다.
[06:21]
같은 구조를 가지고
[06:23]
도구 리스트가 있는 설정만 추가하면 됩니다.
[06:26]
현재는 하나의 도구만 사용하므로
[06:29]
여기에 그 도구만 제공합니다.
[06:31]
'샌프란시스코 날씨는 어떤가요?'라고 물으면
[06:33]
'샌프란시스코의 현재 날씨는 안개가 끼었고
[06:36]
기온은 15도입니다'라고
[06:38]
답변합니다.
[06:41]
실제 애플리케이션에서는
[06:42]
API를 호출하고
[06:45]
API 데이터를 반환하게 됩니다. 출력을 보면
[06:48]
정확히 어떤 일이 일어났는지
[06:50]
여기서 실제로 어떤 일이 일어났는지
[06:52]
각각의 후보들, 또는 다르게 말하면
[06:54]
각각의 역할들을 살펴보겠습니다.
[06:57]
여기 사용자의 질문이 있고, 실제로 볼 수 있는 것은
[07:01]
입력 토큰과 출력 토큰의 수,
[07:03]
그리고 추가된 자동 함수 호출 기록입니다.
[07:06]
자동 함수 호출 기록을 보면
[07:08]
사용자 입력을 받았을 때, 사용 가능한 함수들을 살펴보고
[07:11]
get_weather 함수를 호출하기로 결정했습니다.
[07:13]
입력값은 위치 정보인 샌프란시스코이고,
[07:16]
이 응답을 받아서
[07:18]
최종 사용자 출력을 생성하는 데
[07:20]
활용했습니다.
[07:23]
여기 함수 호출의 또 다른 예시가 있습니다.
[07:26]
지금까지 본 것은
[07:28]
LLM이 단일 도구에만 접근할 수 있는 간단한 함수 호출이었습니다.
[07:31]
하지만 여러 도구가 있고
[07:33]
LLM이 여러 함수를 병렬로 호출하고 싶다면 어떨까요?
[07:36]
여기 기존의 get_current_weather 함수와
[07:38]
LLM이 여러 함수를 병렬로
[07:41]
호출하게 하고 싶습니다. 여기 동일한
[07:44]
get_current_weather 함수가 있고
[07:46]
이제 get_population이라는 새로운 함수도 있어서
[07:48]
이 두 함수를 도구 세트에 추가했습니다.
[07:52]
이 경우 우리의 프롬프트는
[07:57]
뉴욕과 샌프란시스코의
[07:59]
날씨와 인구를 비교하는 것입니다. 먼저 두 도시의
[08:02]
날씨 정보를 가져오고
[08:05]
두 도시의 인구 정보도 가져옵니다.
[08:07]
그리고 뉴욕이 현재
[08:09]
샌프란시스코보다 따뜻하고
[08:11]
인구가 훨씬 더 많다고 알려줍니다.
[08:13]
이처럼 두 가지 함수 호출을
[08:16]
두 개의 쿼리에 대해 실행할 수 있고
[08:18]
상대적으로 복잡한 쿼리에도
[08:20]
문제가 없어 보입니다.
[08:22]
여기서 볼 수 있듯이
[08:24]
병렬 함수 호출이 실제로
[08:26]
일어나고 있습니다. 두 개의 함수 대신
[08:29]
더 많은 함수를 사용할 수 있는데,
[08:31]
나중에 예시를 보여드리겠습니다.
[08:33]
지금까지는 전혀 어려움을
[08:35]
보이지 않았는데, 이는 정말 좋은 소식입니다.
[08:38]
특히 Gemini 2.5 Pro 기반으로
[08:40]
에이전트를 구축하려는 경우에 더욱 그렇습니다.
[08:44]
다음으로는
[08:45]
SQL 어시스턴트를 만들어보겠습니다.
[08:48]
이것은 기본적으로 LLM이나 에이전트가
[08:51]
데이터베이스와 상호작용하는 예시입니다.
[08:54]
현재는 매우 간단한 예시지만
[08:56]
나중에 영상에서 확장해보겠습니다.
[08:58]
기본 아이디어는 사용자가
[09:00]
자연어로 쿼리를 하면
[09:03]
LLM이 이러한 자연어 쿼리를
[09:05]
SQL 쿼리로 변환해서
[09:08]
SQL 데이터베이스에서 실행할 수 있게 하는 것입니다.
[09:12]
우리는 SQLite를
[09:14]
사용할 것입니다. 여기 샘플 데이터베이스
[09:17]
설명이 있고, 데이터베이스에 넣을
[09:20]
데이터가 있습니다. 이 데이터는
[09:24]
네 개의 열로 구성되어 있습니다.
[09:26]
첫 번째는 직원 번호, 이름,
[09:28]
부서,
[09:30]
그리고 각각의 급여입니다. 이제 모델이
[09:33]
자연어 쿼리를 받아서
[09:35]
SQL 쿼리를 생성하길 기대합니다.
[09:38]
execute_SQL_query라는 함수가 있는데
[09:40]
LLM으로부터 SQL 쿼리를 받아
[09:43]
실행하고 결과를 반환하면, 그 결과를
[09:46]
LLM이 사용해서
[09:48]
최종 응답을 생성합니다. 앞서 본
[09:51]
날씨 예제와 매우 유사하게
[09:53]
이 execute_SQL_query 함수를 도구로 전달합니다.
[09:58]
이 경우에는
[10:00]
이 경우에는 시스템 프롬프트가 있어서
[10:02]
항상 데이터베이스 스키마를 먼저 확인하도록 되어 있습니다.
[10:04]
데이터베이스에는 다음과 같은 컬럼이 있는 employees 테이블이 있죠.
[10:07]
나중에 테이블에서 스키마를 자동으로
[10:09]
추출하는 방법을 보여드리겠습니다.
[10:11]
우리의 쿼리는 '부서별 평균 급여가 얼마인가?' 입니다.
[10:14]
그리고 이 쿼리를 실행할 수 있습니다.
[10:16]
쿼리는 부서별 평균 급여를 반환하는데,
[10:20]
재무 부서는 88,000달러,
[10:22]
HR은 65,000달러입니다.
[10:25]
엔지니어링 부서는 두 개의 항목이 있어서
[10:28]
이 둘의 평균값을 반환합니다.
[10:31]
여기서 정확히 어떤 일이 일어났는지 보면,
[10:33]
사용자 입력을 기반으로 생성된
[10:36]
중간 SQL 쿼리가 바로 이것입니다.
[10:40]
이제 영상이 진행되면서 이런 간단한 예제들을
[10:43]
더 복잡한 상황으로 발전시켜 나갈 텐데요.
[10:46]
여기 한 가지 예시가 있습니다.
[10:48]
기업들의 최근 뉴스를 살펴보고
[10:51]
해당 기업에 투자할지 말지를 결정하는 상황입니다.
[10:55]
여기서는 서로 다른 기업들의
[10:58]
뉴스를 가져오는 함수가 있습니다.
[11:01]
간단한 예시로,
[11:03]
여기 딕셔너리를 만들었는데
[11:05]
애플, 마이크로소프트, 구글에 대한
[11:07]
여러 뉴스 기사들이 있습니다.
[11:10]
또 다른 함수는 뉴스를 가져와서
[11:12]
실제 감성 분석을 수행합니다.
[11:15]
여기서 감성은 긍정적인 단어나
[11:19]
부정적인 단어의 존재 여부로 판단됩니다.
[11:21]
이 두 도구를 에이전트에 전달하고,
[11:24]
사용자는 '애플에 대한 최근 뉴스와
[11:26]
전반적인 감성이 어떤지' 물어봅니다.
[11:28]
먼저 get_company_news 함수를 사용해
[11:31]
뉴스 기사들을 가져오고,
[11:35]
그 다음 sentiment_analyzer 함수로
[11:37]
감성을 분석합니다.
[11:39]
최종 응답을 받아서
[11:41]
LLM에 전달하면,
[11:44]
출력으로 '애플에 대한 두 개의 뉴스 기사를 찾았다'고 하면서
[11:47]
해당 뉴스 기사들을 보여주고
[11:50]
이 두 기사를 바탕으로
[11:52]
전반적인 감성이 중립적이라고 알려줍니다.
[11:55]
이제 실제 사용 사례에
[11:58]
더 가까운 복잡한 예제들을
[12:00]
살펴보도록 하겠습니다.
[12:03]
첫 번째는 복잡한 함수 호출을 사용한
[12:05]
여행 계획입니다.
[12:07]
여러 단계가 필요한
[12:09]
실제 사용 사례를 대표하는 예시죠.
[12:12]
복잡한 함수 호출이 포함된 여행 계획을 보겠습니다.
[12:15]
여러 단계가 필요한
[12:18]
여행을 계획한다고 할 때
[12:20]
에이전트의 도움을 받고 싶다고 합시다.
[12:22]
여기에는 여러 가지 함수들이 있는데,
[12:24]
예를 들어 첫 번째는 날씨 정보를 가져오는 함수입니다.
[12:27]
외부 API를 사용하는 대신
[12:29]
하드코딩된 정보를 사용합니다.
[12:32]
그 다음은 목적지, 출발지, 날짜에 따라
[12:35]
항공편을 검색하는 함수가 있고,
[12:37]
호텔 검색 함수도 있습니다.
[12:39]
이러한 함수들은 각각 별도의 API 호출로
[12:41]
특정 입력을 받아 API를 호출하고
[12:44]
API가 데이터를 반환하면
[12:48]
LLM이 그 데이터를 사용해
[12:50]
최종 응답을 생성하게 됩니다.
[12:53]
환율 변환을 위한 함수도 있고
[12:56]
여행 계획을 위한 함수도 있습니다.
[12:58]
총 6개의 서로 다른 함수가 있고
[13:01]
각각은 하나의 도구로 취급됩니다.
[13:03]
여행 계획을 위해서는
[13:06]
지금 총 6개의 함수가 있고
[13:09]
각각은 도구로 사용될 것입니다.
[13:11]
이제 이것들이 어떻게 작동하는지 보겠습니다.
[13:15]
제가 질문할 내용은 2025년 4월 10일부터 13일까지 뉴욕에서 파리로 여행을 계획하고 있는데,
[13:18]
4월 10일 뉴욕에서 파리행 항공편을 찾고,
[13:24]
체류 기간 동안의 날씨를 확인하고,
[13:27]
2인용 호텔을 추천받고,
[13:30]
일정 계획을 세우는 것에 대한 도움이 필요합니다.
[13:32]
이것이 제가 가진 총 예산입니다.
[13:35]
일반적으로는 이러한 요청들에 대해
[13:38]
개별적인 API 호출을 사용하게 되는데,
[13:41]
이들을 순차적으로 실행하여
[13:45]
첫 번째 API의 출력이 두 번째 API의 입력으로 전달되도록 해야 합니다.
[13:48]
따라서 에이전트나 LLM은
[13:51]
이러한 함수들을 순차적으로 실행할 수 있어야 하죠.
[13:55]
시스템 지시사항에서는 '당신은 여행 계획 도우미이며,
[13:59]
사용 가능한 도구들을 활용하여
[14:01]
정보를 수집하고 사용자의 여행 계획을 도와주세요'라고 명시합니다.
[14:04]
이것들이 도움을 줄 수 있는 항목들입니다.
[14:06]
자, 이제 우리의 복잡한 쿼리를 바탕으로
[14:08]
다음과 같은 계획이 나왔습니다.
[14:10]
목적지는 파리, 출발지는 뉴욕이고
[14:12]
이러한 날짜들로 계획이 잡혔습니다.
[14:15]
다양한 항공편을 제안했고,
[14:18]
날씨 정보도 알려주었습니다.
[14:20]
여기 몇 가지 호텔 추천 사항이 있고,
[14:24]
주어진 예산을 기준으로
[14:27]
총 예상 지출이 어떻게 될지 계산했습니다.
[14:31]
유로로 환전할 경우,
[14:33]
환율 변환 기능을 사용했고,
[14:36]
또한 이용 가능한 모든 관광지를 살펴보고
[14:39]
그것을 바탕으로 일일 활동 목록도 생성했습니다.
[14:41]
정확히 어떤 일이 일어났는지
[14:44]
그리고 총 토큰 수가 얼마나 되는지 볼 수 있는데,
[14:46]
약 3,400개의 토큰이 사용되었습니다.
[14:49]
여기 사용자의 초기 질문이 있고,
[14:51]
모델의 첫 응답은 '네, 뉴욕에서 파리로 가는 여행 계획을 도와드리겠습니다.
[14:54]
항공편 옵션, 날씨 예보, 호텔 제안을 수집하고
[14:57]
가능한 일정을 만들어 예산도 환산해드리겠습니다'입니다.
[14:59]
이것이 LLM이 생성하는 첫 번째 응답입니다.
[15:01]
하지만 아직 사용자에게 보여주지 않습니다.
[15:04]
모든 함수 호출을 실행해야 하기 때문이죠.
[15:07]
실제로 모든 함수 호출을 실행하고
[15:09]
각각에서 정보를 수집한 다음
[15:11]
순차적으로 다음 단계로 전달하고
[15:13]
최종 응답을 형성할 수 있습니다.
[15:16]
이 경우에는 순차적 함수 호출과
[15:19]
병렬 함수 호출을 모두 수행하고 있습니다.
[15:22]
하나 아쉬운 점은
[15:25]
내부적인 사고 과정이 보이지 않는다는 것입니다.
[15:27]
정확히 어떤 순서로 실행할지를 어떻게 결정했는지
[15:30]
Google이 API를 통해
[15:32]
이러한 기능을 제공했으면 좋겠습니다.
[15:34]
개발자들에게 매우 유용할 것 같네요.
[15:37]
마지막 예제에서는 지금까지 본 모든 것을 결합할 것입니다.
[15:39]
이 경우에는 비즈니스 인텔리전스 대시보드를 구축하려고 하는데,
[15:42]
사용자가 자연어로 질문할 수 있고,
[15:45]
텍스트를 SQL로 변환하여 접근해야 하는 데이터베이스가 있으며,
[15:47]
비정형 출력을 생성하는 도구들도 있을 것입니다.
[15:50]
이것이 어떻게 작동하는지
[15:52]
자세히 설명해드리겠습니다.
[15:54]
한 가지 아쉬운 점은 정확한 순서를 어떻게 결정했는지
[15:57]
내부적인 사고 과정이 보이지 않는다는 것입니다.
[16:00]
Google이 API를 통해 이를 제공한다면
[16:03]
개발자들에게 매우 유용할 것 같네요.
[16:04]
자, 이 마지막 예제는 지금까지 본 모든 것을 통합합니다.
[16:07]
이 경우에는 비즈니스 인텔리전스 대시보드를 만드는데,
[16:09]
사용자가 자연어로 질문할 수 있고,
[16:12]
텍스트를 SQL로 변환하여 데이터베이스에 접근해야 하며,
[16:15]
비정형 출력을 생성하는 도구들도 있습니다.
[16:17]
이것이 실제로 어떻게 작동하는지
[16:19]
함수 관점에서 어떻게 보이는지
[16:21]
설명해드리도록 하겠습니다.
[16:24]
비정형 출력을 생성하는 도구들이 있을 것이고,
[16:26]
이것이 어떻게 구성되는지 보여드리겠습니다.
[16:29]
함수 관점에서 이것이 어떻게 보이는지 살펴보겠습니다.
[16:31]
이제 함수들에 대해 말씀드리겠는데요,
[16:34]
단일 테이블이 아닌 여러 개의
[16:36]
테이블이 있고, 각각의 테이블에는
[16:39]
서로 다른 정보가 담겨 있습니다.
[16:41]
예를 들어, 매출 테이블, 제품 테이블,
[16:43]
지역 테이블, 직원 테이블이 있고
[16:46]
무작위로 생성된 데이터가 있습니다.
[16:49]
이게 실제 현장에서 마주할 수 있는
[16:52]
데이터를 더 잘 반영하고 있죠.
[16:54]
실제 환경과 비슷하게 만들기 위해
[16:57]
테이블을 기반으로 샘플을 무작위로 생성하고
[16:59]
데이터베이스에 넣었습니다.
[17:02]
이전과 비슷한 SQL 쿼리 실행기가 있고,
[17:05]
또한 회사 데이터베이스의
[17:07]
스키마를 가져오는 함수가 있습니다.
[17:10]
이 함수는 자동으로 테이블 이름과
[17:13]
해당 스키마를 가져옵니다.
[17:14]
그리고 또 다른 데이터 소스가 있는데,
[17:18]
이것은 시장 데이터를 가져오는 것입니다.
[17:20]
회사가 자사의 판매 실적을 기반으로
[17:24]
시장 데이터에 접근할 수 있다고 가정하면,
[17:27]
여기에 그 데이터가 채워져 있습니다.
[17:30]
또한 판매 동향을 분석하는
[17:33]
함수도 있습니다. 이것도 SQL 쿼리로
[17:36]
데이터의 다양한 트렌드를
[17:38]
분석하는 데 도움을 줍니다.
[17:40]
그리고 여기 경쟁사
[17:42]
분석을 제공하는
[17:44]
함수가 있습니다. 입력값을 생성하고
[17:46]
이것은 더미 데이터인데,
[17:49]
경쟁사 분석을 제공합니다. 우리는 6개의
[17:52]
서로 다른 도구를 가지고 있고,
[17:54]
각각 매우 특정한 작업을 수행합니다.
[17:58]
여기 사용자 쿼리가 있는데,
[18:01]
비즈니스 임원의 입장에서
[18:03]
이런 종류의 질문을 할 수 있습니다.
[18:06]
'전자제품 카테고리에 대한
[18:08]
종합적인 분석이 필요합니다.'
[18:11]
에이전트는 사용자가 어떤 카테고리에 대해
[18:13]
이야기하는지 파악해야 합니다.
[18:15]
에이전트가 해야 할 일이 여러 가지인데,
[18:17]
우리 전자제품 매출이 다른 카테고리와
[18:20]
비교해서 어떤지, 전자제품 시장의
[18:23]
전망은 어떤지, 그리고
[18:25]
이 분야의 주요 경쟁사는 누구인지입니다.
[18:28]
이것이 사용자 입력 또는
[18:30]
사용자 요청입니다. 이제 시스템 프롬프트를 보면,
[18:34]
시스템 프롬프트에 매우 주의를
[18:36]
기울여야 하고, 많은 시간을 들여
[18:38]
작성해야 합니다. 왜냐하면 이것이
[18:40]
에이전트의 행동을 제어하기 때문입니다.
[18:43]
이 경우 프롬프트는 '당신은
[18:46]
회사 데이터와 시장 정보에 접근할 수 있는
[18:48]
비즈니스 인텔리전스 어시스턴트입니다.
[18:50]
사용자가 회사 성과와 시장 상황에 대해 물으면
[18:53]
먼저 SQL을 사용해 데이터베이스를 조회하여
[18:56]
내부 회사 데이터를 검색하고,
[18:58]
함수 호출을 통해 관련된 외부 시장과
[19:00]
경쟁사 데이터를 가져온 다음,
[19:03]
데이터에 기반한 통찰력을 잘 구조화된
[19:06]
분석으로 제시하세요.'입니다.
[19:08]
제가 강력히 추천하는 것은
[19:11]
시스템이 어떻게 동작해야 하는지
[19:14]
단계별 지침을 제공하는 것입니다.
[19:16]
LLM의 확률적 특성에 의존하여
[19:20]
자체적으로 결정을 내리게 하지 마세요.
[19:23]
계획을 제공하고 그 계획을
[19:26]
따르기를 기대해야 합니다.
[19:29]
특히 대규모 추론 모델의 경우
[19:30]
잘 작성된 계획이라면
[19:33]
그 계획을 잘 따를 수 있습니다.
[19:37]
우리는 그것을 제공했고,
[19:39]
각 데이터베이스에 대한 통찰력도 제공했습니다.
[19:42]
지금 여기 출력 결과를 보시죠.
[19:44]
전자제품 카테고리에 대한 경쟁 분석이 나왔습니다.
[19:46]
먼저 이 분야의 주요 경쟁사들을 파악했고,
[19:49]
그 다음 경쟁 우위가
[19:52]
높은 진입 장벽과 빠른 혁신 주기로
[19:54]
특징지어진다는 것을 분석했습니다.
[19:56]
이는 시장 분석에서
[19:58]
도출된 정보입니다.
[20:00]
그리고 지금까지 수집한 정보를 바탕으로
[20:03]
요약과 분석을 생성했습니다.
[20:06]
내부 단계별 실행 과정을 보면,
[20:08]
우선 사용자 입력이 있고,
[20:11]
AI가 도움을 줄 수 있다고 판단하여
[20:13]
내부 판매 데이터, 외부 시장 전망,
[20:16]
그리고 경쟁사 정보를 수집하기로 했습니다.
[20:18]
전자제품 카테고리에 대한
[20:21]
정보를 수집하기로 결정했죠.
[20:23]
그 다음 전자제품 카테고리에 대한
[20:27]
SQL 쿼리를 생성해서
[20:30]
정보를 수집했습니다.
[20:31]
받은 결과를 보실 수 있죠.
[20:33]
이 결과를 다른 함수로 전달했습니다.
[20:36]
내부 판매 데이터를 가지고
[20:39]
다른 카테고리와 전자제품을 비교했는데,
[20:41]
이는 사용자 쿼리나
[20:43]
데이터베이스 쿼리를 기반으로 했습니다.
[20:45]
생성된 데이터베이스 쿼리를 보시면,
[20:48]
이 정보를 가져와서
[20:50]
기본적으로 그 정보를 활용해
[20:53]
두 번째 단계로 전달했습니다.
[20:56]
단계별 접근 방식을 사용하여
[20:59]
수집한 모든 정보를 바탕으로
[21:01]
꽤 포괄적인 응답을 생성할 수 있었습니다.
[21:04]
하지만 이것은 단순한 예시일 뿐이며,
[21:06]
실제 기업 데이터는
[21:08]
훨씬 더 복잡하고 지저분합니다.
[21:11]
따라서 먼저 데이터를 이해하는 데
[21:14]
시간을 투자해야 하고,
[21:15]
그 다음 데이터에 맞춰
[21:18]
에이전트의 동작을 설계해야 합니다.
[21:20]
에이전트가 적절한 계획을 수립하고
[21:24]
실행하는 능력에 너무 의존해서는 안 됩니다.
[21:26]
제 추천은 단계별 지침을
[21:29]
명확하게 제공하는 것입니다.
[21:31]
즉, 에이전트가
[21:34]
정확히 어떻게 실행할 수 있는지
[21:36]
단계별 지침을 제공하는 것이죠.
[21:39]
기본적으로 에이전트가 즉흥적인 계획을
[21:41]
세우는 것보다는 정해진 워크플로우를
[21:44]
따르도록 하는 것이 좋습니다.
[21:47]
만약 비즈니스에서 이와 유사한 문제를 해결하려고
[21:49]
하시고 조언이나 도움이 필요하시다면,
[21:53]
제가 다시 컨설팅과 자문 서비스를
[21:56]
시작했으니 연락 주시기 바랍니다.
[21:59]
자세한 내용은 영상 설명란에 있습니다.
[22:01]
어쨌든, Gemini 2.5 Pro는 정말 강력한 모델이며,
[22:05]
특히 추론 능력과
[22:08]
코딩 능력을 결합한
[22:10]
복잡한 워크플로우에 매우 적합한 모델입니다.
[22:13]
한번 사용해보시길 추천드립니다.
[22:16]
이 영상이 도움이 되었길 바랍니다.
[22:18]
시청해주셔서 감사하고,
[22:21]
다음 영상에서 만나요.