LangChain에서 에이전트를 사용하여 ReAct 로직을 구현하는 방법은 무엇입니까?

Langchain Eseo Eijeonteuleul Sayonghayeo React Lojig Eul Guhyeonhaneun Bangbeob Eun Mueos Ibnikka



LangChain은 인간 언어로 된 텍스트를 이해하고 생성할 수 있는 언어 모델과 챗봇을 구축하기 위한 프레임워크입니다. 모델의 성능은 프로세스의 훈련 단계에서 언어와 언어의 복잡성에 대한 이해를 기반으로 합니다. 다음 단계는 쉽게 읽고 이해할 수 있는 자연어로 데이터나 텍스트를 생성하는 것입니다. 이러한 단계를 “ 추리 ' 그리고 ' 연기 ” 자연어 처리 영역에서 각각 사용됩니다.

빠른 개요

이 게시물에서는 다음을 보여줍니다.

LangChain에서 에이전트를 사용하여 ReAct 로직을 구현하는 방법은 무엇입니까?

반응하다 ”는 언어 모델의 성능을 향상시키기 위한 이유와 행동 단계의 조합입니다. 답장 ”는 이유를 의미하고 “ 행동 ” 행동에 나섰습니다. ReAct 로직은 텍스트를 이해하고 생성하기 위해 LLM 또는 챗봇을 구축하는 데 가장 최적화된 것으로 간주되는 경우가 많습니다. 에이전트는 수행할 작업과 수행 순서를 결정하는 의사 결정자입니다.







LangChain에서 에이전트를 사용하여 ReAct 로직을 구현하는 프로세스를 배우려면 다음 가이드를 따르십시오.



1단계: 프레임워크 설치

우선, ReAct 로직 구현 프로세스를 시작하려면 LangChain을 설치하세요.



pip 설치 랭체인





google-search-results 모듈을 설치하여 Google에서 검색 결과를 얻을 수 있는 에이전트를 구축하기 위한 종속성을 가져옵니다.

pip는 openai google-search-results를 설치합니다.



그런 다음 ReAct 논리를 구현하기 위해 대형 언어 모델 또는 LLM을 로드하는 데 사용할 수 있는 OpenAI 모듈을 설치합니다.

pip 설치 openai

필요한 모든 모듈을 얻은 후 간단히 설정하십시오. OpenAI 환경 LLM 구축을 위한 SerpAPI 환경 모델에서 에이전트를 사용하려면:

수입

수입 getpass

. [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API 키:' )

. [ 'SERPAPI_API_KEY' ] = getpass . getpass ( '세르파피 API 키:' )

2단계: 언어 모델 로드

다음 단계는 LangChain 프레임워크를 사용하여 필요한 라이브러리를 가져와서 언어 모델을 로드하는 것입니다.

~에서 랭체인. 자치령 대표 수입 load_tools

~에서 랭체인. 자치령 대표 수입 초기화_에이전트

~에서 랭체인. 자치령 대표 수입 에이전트 유형

~에서 랭체인. LLMS 수입 오픈AI

OpenAI() 메서드를 사용하여 언어 모델(llm)을 구축한 다음 SerpAPI를 사용하여 에이전트용 도구를 구성합니다.

ㅋㅋㅋ = 오픈AI ( 온도 = 0 )

도구 = load_tools ( [ '세르파피' , 'llm-수학' ] , ㅋㅋㅋ = ㅋㅋㅋ )

방법 1: LandChain 표현 언어 사용

LCEL은 LangChain에서 언어 모델을 구축하는 동안 체인을 함께 통합하거나 구성하는 프로세스입니다. LangChainHub를 설치하여 LangChain의 에이전트와 함께 ReAct 로직을 구축하고 사용하기 위한 종속성을 가져오는 것으로 프로세스를 시작합니다.

pip 설치 langchainhub

ReActSingleInputOutputParser와 같은 LangChain에서 라이브러리를 가져와서 ReAct 모델을 사용할 수 있는 모델을 구축합니다.

~에서 랭체인. 도구 . 세우다 수입 render_text_description

~에서 랭체인. 자치령 대표 . 출력_파서 수입 ReActSingleInputOutputParser

~에서 랭체인. 자치령 대표 . 형식_스크래치패드 수입 format_log_to_str

~에서 랭체인 수입 바퀴통

pull() 메소드를 사용하여 ReAct 로직을 디자인하기 위한 언어 모델을 로드하고 프롬프트 변수에 저장합니다. 에이전트와의 작업을 구현하기 위해 로드된 데이터세트에 논리를 구현하는 데 사용할 수 있는 몇 가지 도구를 정의합니다.

즉각적인 = 바퀴통. 당기다 ( 'hwchase17/반응' )

즉각적인 = 즉각적인. 부분적인 (

도구 = render_text_description ( 도구 ) ,

도구_이름 = ', ' . 가입하다 ( [ 티. 이름 ~을 위한 ~에 도구 ] ) ,

)

건물 대리인

이제 이 가이드의 2단계에서 로드된 언어 모델과 통합하여 에이전트와 해당 도구를 구성합니다.

llm_with_stop = llm. 묶다 ( 멈추다 = [ ' \N 관찰' ] )

에이전트 변수를 정의하여 해당 작업을 설명하는 에이전트를 구성하는 인수와 도구를 제공합니다. llm_with_stop 및 ReActSingleInputOutputParser() 메소드와 같이 이전에 구성된 부분이 에이전트와 통합됩니다.

대리인 = {

'입력' : 람다 엑스:엑스 [ '입력' ] ,

'agent_scratchpad' : 람다 x: format_log_to_str ( 엑스 [ '중간_단계' ] )

} | 프롬프트 | llm_with_stop | ReActSingleInputOutputParser ( )

더 읽기 쉬운 출력을 얻으려면 AgentExecutor 라이브러리를 가져오고 에이전트, 도구 및 상세 정보와 같은 인수를 사용하여 해당 메서드를 구성하세요.

~에서 랭체인. 자치령 대표 수입 AgentExecutor

에이전트 실행자 = AgentExecutor ( 대리인 = 대리인 , 도구 = 도구 , 말 수가 많은 = 진실 )

문자열 쿼리를 입력으로 사용하여 에이전트가 출력을 추출하도록 트리거하는 Agent_executor() 메서드를 호출합니다.

에이전트_실행자. 부르다 ( { '입력' : '레오 디카프리오의 여자친구는 누구인가' } )

산출

다음 스크린샷은 에이전트가 ReAct 로직을 사용하여 정보를 추출하고 자연어로 텍스트를 생성했음을 보여줍니다.

방법 2: ZeroShotReactAgent 사용

Agent_executor 변수를 구성하는 동안 ZeroShotReactAgent와 같은 다른 에이전트를 사용하여 ReAct 로직을 구현할 수도 있습니다. 그런 다음 질문을 입력으로 사용하여 Agent_executor 변수를 호출하면 에이전트를 호출할 수 있습니다.

에이전트 실행자 = 초기화_에이전트 ( 도구 , ㅋㅋㅋ , 대리인 = 에이전트 유형. ZERO_SHOT_REACT_DESCRIPTION , 말 수가 많은 = 진실 )

에이전트_실행자. 부르다 ( { '입력' : '레오 디카프리오 여자친구 나이를 0.21승으로 높인 건 무엇인가요' } )

산출

에이전트는 Agent_executor를 호출하는 동안 요청된 입력을 기반으로 정보를 추출했습니다.

방법 3: 채팅 모델 사용

ChatOpenAI 라이브러리를 가져온 후 채팅 모델을 사용하여 ReAct 로직을 구현하는 데 사용할 수 있는 또 다른 프로세스는 다음과 같습니다.

~에서 랭체인. chat_models 수입 채팅오픈AI

모델 결과의 임의성을 제어할 수 있는 온도 값이 0인 ChatOpenAI() 메서드를 사용하여 채팅 모델을 구축합니다.

chat_model = 채팅오픈AI ( 온도 = 0 )

사용자가 ReAct 로직을 구현하여 프롬프트 변수에 저장할 수 있는 모델을 로드하고 프로세스에서 사용할 도구를 구성합니다.

즉각적인 = 바퀴통. 당기다 ( 'hwchase17/react-json' )

즉각적인 = 즉각적인. 부분적인 (

도구 = render_text_description ( 도구 ) ,

도구_이름 = ', ' . 가입하다 ( [ 티. 이름 ~을 위한 ~에 도구 ] ) ,

)

에이전트 구축

모델이 텍스트 생성을 중지할 때 채팅 모델을 사용하여 관찰 내용이나 최근 메시지를 저장합니다.

chat_model_with_stop = chat_model. 묶다 ( 멈추다 = [ ' \N 관찰' ] )

ReActJsonSingleInputOutputParser 라이브러리를 가져와 ReAct 논리를 구현하고 결과를 JSON 형식으로 생성합니다.

~에서 랭체인. 자치령 대표 . 출력_파서 수입 ReActJsonSingleInputOutputParser

chat_model 변수와 메서드를 사용하여 에이전트를 빌드하고 구성하면 에이전트를 호출하여 결과를 생성할 수 있습니다.

대리인 = {

'입력' : 람다 엑스: 엑스 [ '입력' ] ,

'agent_scratchpad' : 람다 x: format_log_to_str ( 엑스 [ '중간_단계' ] )

} | 프롬프트 | chat_model_with_stop | ReActJsonSingleInputOutputParser ( )

Agent_executor를 구성하고 실행하여 입력 변수에 제공된 쿼리를 기반으로 결과를 얻습니다.

에이전트 실행자 = AgentExecutor ( 대리인 = 대리인 , 도구 = 도구 , 말 수가 많은 = 진실 )

에이전트_실행자. 부르다 ( { '입력' : '레오 디카프리오 여자친구 나이를 0.21승으로 높인 건 무엇인가요' } )

산출

에이전트는 다음 스크린샷에 표시된 대로 출력을 추출했습니다.

방법 4: ChatZeroShotReactAgent 사용

에이전트 값을 변경하면 LangChain 프레임워크로 ReAct 로직을 구현하는 데에도 사용할 수 있습니다.

대리인 = 초기화_에이전트 ( 도구 , chat_model , 대리인 = 에이전트 유형. CHAT_ZERO_SHOT_REACT_DESCRIPTION , 말 수가 많은 = 진실 )

대리인. 달리다 ( '레오 디카프리오 여자친구 나이를 0.21승으로 높인 건 무엇인가요' )

산출

출력 구조에는 정보를 추출하는 데 사용된 토큰 및 모델의 에이전트 작업에 대한 자세한 정보가 포함되어 있습니다.

이것이 LangChain의 에이전트를 사용하여 ReAct 로직을 구현하는 프로세스에 관한 것입니다.

결론

LangChain 프레임워크를 사용하여 에이전트로 ReAct 로직을 구현하려면 google-search-results와 같은 모듈을 설치하여 에이전트를 구성하세요. 그런 다음 해당 계정의 OpenAI 및 SerpAPI 자격 증명을 사용하여 환경을 설정하여 모델 사용을 시작합니다. ReAct 로직은 LangChain 모듈에서 제공하는 여러 에이전트와 함께 LCEL 및 채팅 모델을 사용하여 구현할 수 있습니다. 이 가이드는 LangChain에서 에이전트를 사용하여 ReAct 로직을 구현하는 방법을 자세히 설명했습니다.