동적 에이전트(Dynamic Agents)

동적 에이전트는 사용자 ID와 기타 중요한 매개변수와 같은 런타임 컨텍스트를 사용하여 실시간으로 설정을 조정합니다.

이는 사용하는 모델을 변경하고, 지침을 업데이트하며, 다른 도구를 선택하고, 필요에 따라 메모리를 구성할 수 있음을 의미합니다.

이 컨텍스트를 사용함으로써 에이전트는 각 사용자의 요구사항에 더 잘 응답할 수 있습니다. 또한 모든 API를 호출하여 더 많은 정보를 수집할 수 있어, 에이전트의 기능을 향상시키는 데 도움이 됩니다.

구성 예제

다음은 사용자의 구독 등급과 언어 선호도에 따라 동작을 조정하는 동적 고객지원 에이전트의 예제입니다:

const supportAgent = new Agent({
  name: "Dynamic Support Agent",
  
  instructions: async ({ runtimeContext }) => {
    const userTier = runtimeContext.get("user-tier");
    const language = runtimeContext.get("language");
    
    return `당신은 저희 SaaS 플랫폼의 고객 지원 에이전트입니다.
    현재 사용자는 ${userTier} 등급이며 ${language} 언어를 선호합니다.
    
    ${userTier} 등급 사용자를 위해:
    ${userTier === "free" ? "- 기본 지원과 문서 링크를 제공하세요" : ""}
    ${userTier === "pro" ? "- 상세한 기술 지원과 모범 사례를 제공하세요" : ""}
    ${userTier === "enterprise" ? "- 맞춤형 솔루션과 함께 우선 지원을 제공하세요" : ""}
    
    항상 ${language} 언어로 응답하세요.`;
  },
  
  model: ({ runtimeContext }) => {
    const userTier = runtimeContext.get("user-tier");
    return userTier === "enterprise"
      ? openai("gpt-4")
      : openai("gpt-3.5-turbo");
  },
  
  tools: ({ runtimeContext }) => {
    const userTier = runtimeContext.get("user-tier");
    const baseTools = [knowledgeBase, ticketSystem];
    
    if (userTier === "pro" || userTier === "enterprise") {
      baseTools.push(advancedAnalytics);
    }
    
    if (userTier === "enterprise") {
      baseTools.push(customIntegration);
    }
    
    return baseTools;
  },
  
  memory: ({ runtimeContext }) => {
    const userTier = runtimeContext.get("user-tier");
    
    if (userTier === "enterprise") {
      return new Memory({
        storage: new LibSQLStore({ url: "file:enterprise.db" }),
        options: {
          semanticRecall: { topK: 15, messageRange: 8 },
          workingMemory: { enabled: true },
        },
      });
    } else if (userTier === "pro") {
      return new Memory({
        storage: new LibSQLStore({ url: "file:pro.db" }),
        options: {
          semanticRecall: { topK: 8, messageRange: 4 },
          workingMemory: { enabled: true },
        },
      });
    }
    
    // 무료 등급을 위한 기본 메모리
    return new Memory({
      storage: new LibSQLStore({ url: "file:free.db" }),
      options: {
        semanticRecall: { topK: 3, messageRange: 2 },
        workingMemory: { enabled: false },
      },
    });
  },
});

이 예제에서 에이전트는:

  • 사용자의 구독 등급(무료, 프로, 또는 엔터프라이즈)에 따라 지침을 조정합니다

  • 엔터프라이즈 사용자에게는 더 강력한 모델(GPT-4)을 사용합니다

  • 사용자의 등급에 따라 다른 도구 세트를 제공합니다

  • 사용자의 등급에 따라 다른 기능을 가진 메모리를 구성합니다

  • 사용자가 선호하는 언어로 응답합니다

이는 런타임 컨텍스트를 활용하여 단일 에이전트가 다양한 유형의 사용자와 시나리오를 처리할 수 있음을 보여주며, 각 사용 사례별로 별도의 에이전트를 생성하는 것보다 더 유연하고 유지보수가 쉽습니다.

API 라우트, 미들웨어 설정 및 런타임 컨텍스트 처리를 포함한 완전한 구현 예제는 동적 에이전트 예제를 참조하세요.


2025년 7월 26일 기준 번역
by dongne.lab@gmail.com

Updated on