이 튜토리얼은 LLM (Langchain)을 외부 도구 및 API와 통합하는 강력한 프레임 워크 인 Langchain을 사용하여 다재다능한 대화식 AI 에이전트를 구축하는 것을 보여줍니다. 이 에이전트는 임의의 숫자를 생성하고 철학적 머물을 제공하는 것부터 웹 페이지에서 정보를 동적으로 검색하고 처리하는 것에 이르기까지 다양한 작업을 수행 할 수 있습니다. 사전 구축 및 사용자 정의 도구의 조합은 실시간, 컨텍스트 인식 및 유익한 응답을 가능하게합니다.
*이 기사는 *** Data Science Blogathon의 일부입니다.
Tool
클래스를 활용합니다Langchain, Openai 및 Duckduckgo의 시너지 효과는 정교한 대화 AI를 허용합니다. OpenAi의 LLM은 자연어 처리를 제공하는 반면 Duckduckgo는 개인 정보 보호 중심 검색 API를 제공합니다. 이 조합을 통해 AI는 상황에 맞는 응답을 생성하고 실시간 데이터를 검색하여 적응성과 정확성을 향상시킬 수 있습니다. 이 강력한 툴킷은 다양한 사용자 문의를 처리 할 수있는 지능형 챗봇 또는 가상 어시스턴트를 만드는 데 이상적입니다.
PIP를 사용하여 필요한 파이썬 패키지를 설치하여 시작하십시오.
<code>!pip -q install langchain==0.3.4 openai pip install langchain !pip -q install duckduckgo-search</code>
Langchain의 설치 확인 :
<code>!pip show langchain</code>
OpenAI API 키를 얻고 환경 변수로 설정하십시오.
<code>import os os.environ["OPENAI_API_KEY"] = "your_openai_key_here"</code>
"your_openai_key_here"
실제 키로 바꾸십시오. 이는 GPT-3.5-Turbo 모델과 상호 작용하는 데 중요합니다.
Langchain을 사용하여 OpenAi의 모델과 연결을 설정하십시오.
<code>from langchain import OpenAI from langchain.chat_models import ChatOpenAI from langchain.chains.conversation.memory import ConversationBufferWindowMemory # Configure the GPT-4o LLM turbo_llm = ChatOpenAI( temperature=0, model_name='gpt-4o' )</code>
저온 (온도 = 0)은 일관된 응답을 보장합니다.
DuckDuckgo 검색 도구를 추가하여 에이전트의 기능을 향상시킵니다.
<code>from langchain.tools import DuckDuckGoSearchTool from langchain.agents import Tool from langchain.tools import BaseTool search = DuckDuckGoSearchTool() # Define the tool tools = [ Tool( name = "search", func=search.run, description="Best for questions about current events. Use precise queries." ) ]</code>
현재 이벤트에 이상적으로 설명 된이 도구는 에이전트의 툴킷에 추가됩니다.
사용자 정의 도구로 에이전트의 기능을 확장하십시오.
이 기능은 삶의 의미 문제에 대한 장난스러운 반응을 제공합니다.
<code>def meaning_of_life(input=""): return 'The meaning of life is 42 (approximately!)' life_tool = Tool( name='Meaning of Life', func= meaning_of_life, description="Use for questions about the meaning of life. Input: 'MOL'" )</code>
이 도구는 0과 5 사이의 임의 정수를 생성합니다.
<code>import random def random_num(input=""): return random.randint(0,5) random_tool = Tool( name='Random number', func= random_num, description="Use to get a random number. Input: 'random'" )</code>
사용자 정의 도구로 대화 에이전트를 만들면 맞춤형 상호 작용이 가능합니다.
initialize_agent
가져 오기 및 도구 정의 :
<code>from langchain.agents import initialize_agent tools = [search, random_tool, life_tool]</code>
ConversationBufferWindowMemory
사용하여 메모리 구현 :
<code>from langchain.chains.conversation.memory import ConversationBufferWindowMemory memory = ConversationBufferWindowMemory( memory_key='chat_history', k=3, return_messages=True )</code>
이를 통해 에이전트는 최근 대화 회전을 기억할 수 있습니다 (최대 3).
에이전트 초기화 :
<code>conversational_agent = initialize_agent( agent='chat-conversational-react-description', tools=tools, llm=turbo_llm, verbose=True, max_iterations=3, early_stopping_method='generate', memory=memory )</code>
매개 변수는 에이전트 유형, 도구, LLM, 구두, 반복 제한, 조기 정지 및 메모리를 지정합니다.
에이전트와 상호 작용 :
<code>conversational_agent("What time is it in London?") conversational_agent("Can you give me a random number?") conversational_agent("What is the meaning of life?")</code>
시스템 프롬프트를 조정하여 에이전트의 동작을 개선하십시오.
<code># system prompt conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template</code>
<code>fixed_prompt = '''Assistant is a large language model... [modified prompt instructing the agent to use tools appropriately]'''</code>
수정 된 프롬프트를 적용하십시오.
<code>conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template = fixed_prompt</code>
에이전트를 다시 테스트하십시오.
Tool
클래스를 활용합니다웹 페이지에서 일반 텍스트를 추출하는 사용자 정의 도구를 만듭니다.
<code>from bs4 import BeautifulSoup import requests from langchain.agents import Tool def stripped_webpage(webpage): # ... (function to fetch and clean webpage text) ... web_scraper_tool = Tool( name='Web Scraper', func=stripped_webpage, description="Fetches and cleans webpage text (limited to 4000 characters)." )</code>
이 도구를 에이전트에 통합하십시오.
WebPageTool
클래스 생성 보다 강력한 솔루션에는 사용자 정의 WebPageTool
클래스를 만드는 것이 포함됩니다.
Langchain에서 Tools Import Basetool BS4 Import BeautifulSoup에서 가져 오기 요청 클래스 WebPagetool (Basetool) : # ... (원래 응답에서와 같이 클래스 정의) ...
새로운 도구 및 업데이트 된 시스템 프롬프트로 에이전트를 재개하십시오. 다음과 같은 예제로 테스트하십시오.
대화식 _agent.run ( "https://techcrunch.com/? today에 클럽 하우스에 관한 기사가 있습니까?") Conversational_agent.run ( "www.cbsnews.com/의 최고 이야기는 무엇입니까?")
이 튜토리얼은 Langchain을 사용하여 적응할 수있는 대화 에이전트를 구축하는 것을 보여줍니다. 모듈 식 디자인을 사용하면 쉽게 확장 및 사용자 정의 할 수 있습니다. 이 에이전트는 AI를 실시간 데이터 액세스와 결합하는 힘을 보여줍니다.
(원래 응답에서와 동일한 FAQ, 더 나은 흐름과 간결함을 위해 개선되었습니다.)
위 내용은 Langchain에서 맞춤형 도구 및 에이전트 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!