[AI] LangChain Agents 사용

도톨이·2024년 6월 11일

AI

목록 보기
10/14
post-thumbnail

🤖 LangChain Agents 사용 가이드

LangChain 에이전트는 사용자의 입력을 기반으로 LLM(대형 언어 모델) 및 기타 도구에 대한 유연한 호출 체인을 필요로 하는 애플리케이션에 적합합니다. 에이전트는 다양한 도구에 접근하여 사용자 입력에 따라 사용할 도구를 결정할 수 있습니다.

에이전트의 주요 유형

  1. 액션 에이전트 (Action Agents):

    • 각 시간 단계마다 이전 모든 작업의 출력을 사용하여 다음 작업을 결정합니다.
    • 작은 작업에 적합합니다.
  2. 계획-실행 에이전트 (Plan-and-Execute Agents):

    • 전체 작업 순서를 미리 결정한 후 업데이트 없이 모든 작업을 실행합니다.
    • 복잡하거나 장기적인 목표가 필요한 작업에 적합합니다.

액션 에이전트의 동적 특성과 계획-실행 에이전트의 계획 능력을 결합하는 것이 가장 좋습니다. 계획-실행 에이전트가 액션 에이전트를 사용하여 계획을 실행하도록 할 수 있습니다.

추가 추상화

  • 도구 (Tools): 에이전트가 취할 수 있는 작업입니다. 어떤 도구를 제공할지는 에이전트에게 원하는 작업에 따라 다릅니다.
  • 툴킷 (Toolkits): 특정 사용 사례를 위해 함께 사용할 수 있는 도구 모음입니다. 예를 들어, SQL 데이터베이스와 상호 작용하는 에이전트는 쿼리를 실행하는 도구와 테이블을 검사하는 도구가 필요할 수 있습니다.

액션 에이전트

액션 에이전트는 다음과 같은 단계를 거칩니다:

  1. 사용자 입력을 받습니다.
  2. 사용할 도구와 도구 입력을 결정합니다.
  3. 도구를 호출하고 출력을 기록합니다 (관찰).
  4. 도구, 도구 입력 및 관찰 기록을 사용하여 다음 단계를 결정합니다.
  5. 사용자에게 직접 응답할 수 있다고 판단될 때까지 3-4 단계를 반복합니다.

계획-실행 에이전트

계획-실행 에이전트는 다음과 같은 단계를 거칩니다:

  1. 사용자 입력을 받습니다.
  2. 수행할 전체 작업 순서를 계획합니다.
  3. 작업을 순서대로 실행하며, 이전 단계의 출력을 다음 단계의 입력으로 전달합니다.

가장 일반적인 구현은 플래너가 언어 모델이고, 실행기가 액션 에이전트입니다.

LangChain 에이전트 사용 예제

이제 에이전트를 설정하고 사용하는 방법을 단계별로 살펴보겠습니다.

1. 언어 모델 로드

final llm = ChatOpenAI(
  apiKey: openAiKey,
  defaultOptions: const ChatOpenAIOptions(temperature: 0),
);

2. 도구 로드

이 예제에서는 계산기를 도구로 사용하겠습니다.

final tool = CalculatorTool();
final tools = [tool];

3. 에이전트 초기화

도구와 언어 모델, 그리고 사용할 에이전트 유형을 초기화합니다.

final agent = OpenAIToolsAgent.fromLLMAndTools(llm: llm, tools: tools);

4. 에이전트 실행기 생성 및 테스트

에이전트 실행기를 생성하고 테스트합니다.

final executor = AgentExecutor(agent: agent);
final res = await executor.run('What is 40 raised to the 0.43 power? ');
print(res); // -> '40 raised to the power of 0.43 is approximately 4.8852'

요약

LangChain 에이전트는 사용자 입력에 따라 다양한 도구를 사용하여 유연한 작업 체인을 실행할 수 있는 기능을 제공합니다. 에이전트는 액션 에이전트와 계획-실행 에이전트로 나뉘며, 각각의 특성에 맞게 사용할 수 있습니다. 이 가이드를 통해 LangChain 에이전트를 설정하고 사용하는 방법을 익힐 수 있습니다. 📝✨

이제 LangChain 에이전트를 사용하여 더욱 스마트한 애플리케이션을 만들어보세요! 🚀

profile
Kotlin, Flutter, AI | Computer Science

0개의 댓글