웹 검색이 가능한 Agent 구축
웹 검색 Agent를 구축할 때 고려해야 할 두 가지 주요 전략이 있습니다.
- LLM의 기본 검색 Tool: 특정 언어 Model은 즉시 사용 가능한 통합 웹 검색 기능을 제공합니다.
- 맞춤 검색 Tool 구현: 쿼리를 처리하고 결과를 검색하기 위해 검색 공급자의 API와 자체 통합을 개발합니다.
전제조건전제조건에 대한 직접 링크
- Node.js
v22.13.0or later installed - 지원되는 API 키Model Provider
- 기존 Mastra 프로젝트(다음을 따르세요.installation guide to set up a new project)
기본 검색 Tool 사용기본 검색 Tool 사용에 대한 직접 링크
일부 LLM Provider에는 추가 API 통합 없이 직접 사용할 수 있는 웹 검색 기능이 내장되어 있습니다. OpenAI와 Google의 Model은 모두 생성 중에 Model이 호출할 수 있는 기본 검색 Tool을 제공합니다.
종속성 설치
- OpenAI
- Gemini
- npm
- pnpm
- Yarn
- Bun
npm install @ai-sdk/openaipnpm add @ai-sdk/openaiyarn add @ai-sdk/openaibun add @ai-sdk/openai- npm
- pnpm
- Yarn
- Bun
npm install @ai-sdk/googlepnpm add @ai-sdk/googleyarn add @ai-sdk/googlebun add @ai-sdk/google새 파일 만들기
src/mastra/agents/searchAgent.tsand define your agent:- OpenAI
- Gemini
src/mastra/agents/searchAgent.tsimport { Agent } from '@mastra/core/agent'export const searchAgent = new Agent({id: 'search-agent',name: 'Search Agent',instructions: 'You are a search agent that can search the web for information.',model: 'openai/gpt-5.6-sol',})src/mastra/agents/searchAgent.tsimport { Agent } from '@mastra/core/agent'export const searchAgent = new Agent({id: 'search-agent',name: 'Search Agent',instructions: 'You are a search agent that can search the web for information.',model: 'google/gemini-2.5-flash',})Tool을 설정합니다:
- OpenAI
- Gemini
src/mastra/agents/searchAgent.tsimport { openai } from '@ai-sdk/openai'import { Agent } from '@mastra/core/agent'export const searchAgent = new Agent({id: 'search-agent',name: 'Search Agent',instructions: 'You are a search agent that can search the web for information.',model: 'openai/gpt-5.6-sol',tools: {webSearch: openai.tools.webSearch(),},})src/mastra/agents/searchAgent.tsimport { google } from '@ai-sdk/google'import { Agent } from '@mastra/core/agent'export const searchAgent = new Agent({id: 'search-agent',name: 'Search Agent',instructions: 'You are a search agent that can search the web for information.',model: 'google/gemini-2.5-flash',tools: {webSearch: google.tools.googleSearch({mode: 'MODE_DYNAMIC',}),},})당신의
src/mastra/index.tsfile, register the agent:src/mastra/index.tsimport { Mastra } from '@mastra/core'import { searchAgent } from './agents/searchAgent'export const mastra = new Mastra({agents: { searchAgent },})다음을 사용하여 Agent를 테스트할 수 있습니다.Studio using the
mastra devcommand:mastra devStudio 내부에서"Search Agent" 을 열고 "지난주 AI 뉴스에는 어떤 일이 있었나요?"라고 질문합니다.
검색 API 사용검색 API 사용에 대한 직접 링크
검색 동작을 더 효과적으로 제어하려면 외부 검색 API를 사용자 정의 Tool로 통합할 수 있습니다.Exa 는 AI 애플리케이션을 위해 특별히 구축된 검색 엔진으로, 의미론적 검색, 구성 가능한 필터(카테고리, 도메인, 날짜 범위), 전체 페이지 콘텐츠 검색 기능을 제공합니다. 검색 API는 입력 schema, 출력 형식 및 실행 로직을 정의하는 Mastra Tool로 래핑됩니다.
종속성 설치
- npm
- pnpm
- Yarn
- Bun
npm install exa-jspnpm add exa-jsyarn add exa-jsbun add exa-js새 파일 만들기
src/mastra/agents/searchAgent.tsand define your agent:src/mastra/agents/searchAgent.tsimport { Agent } from '@mastra/core/agent'export const searchAgent = new Agent({id: 'search-agent',name: 'Search Agent',instructions: 'You are a search agent that can search the web for information.',model: 'openai/gpt-5.6-sol',})Tool 설정
src/mastra/tools/searchTool.tsimport { createTool } from '@mastra/core/tools'import z from 'zod'import Exa from 'exa-js'export const exa = new Exa(process.env.EXA_API_KEY)export const webSearch = createTool({id: 'exa-web-search',description: 'Search the web',inputSchema: z.object({query: z.string().min(1).max(50).describe('The search query'),}),outputSchema: z.array(z.object({title: z.string().nullable(),url: z.string(),content: z.string(),publishedDate: z.string().optional(),}),),execute: async inputData => {const { results } = await exa.searchAndContents(inputData.query, {livecrawl: 'always',numResults: 2,})return results.map(result => ({title: result.title,url: result.url,content: result.text.slice(0, 500),publishedDate: result.publishedDate,}))},})Agent에 추가
src/mastra/agents/searchAgent.tsimport { webSearch } from './tools/searchTool'export const searchAgent = new Agent({id: 'search-agent',name: 'Search Agent',instructions: 'You are a search agent that can search the web for information.',model: 'openai/gpt-5.6-sol',tools: {webSearch,},})당신의
src/mastra/index.tsfile, register the agent:src/mastra/index.tsimport { Mastra } from '@mastra/core'import { searchAgent } from './agents/searchAgent'export const mastra = new Mastra({agents: { searchAgent },})다음을 사용하여 Agent를 테스트할 수 있습니다.Studio using the
mastra devcommand:mastra devStudio 내부에서"Search Agent" 을 열고 "지난주 AI 뉴스에는 어떤 일이 있었나요?"라고 질문합니다.