このチュートリアルでは、Langchainを使用して、大規模な言語モデル(LLM)と外部ツールとAPIを統合する強力なフレームワークを使用して、多用途の会話型AIエージェントを構築することを示しています。このエージェントは、乱数の生成や哲学的な黙想の提供から、Webページから情報を動的に取得および処理することまで、多様なタスクを実行できます。事前に構築されたカスタムツールとカスタムツールの組み合わせにより、リアルタイム、コンテキスト対応、有益な応答が可能になります。
*この記事は、***データサイエンスブログソンの一部です。
Tool
クラスを利用しますLangchain、Openai、およびDuckduckgoの相乗効果により、洗練された会話型AIが可能になります。 OpenaiのLLMは自然言語処理を提供し、Duckduckgoはプライバシー中心の検索APIを提供します。この組み合わせにより、AIはコンテキストに関連する応答を生成し、リアルタイムデータを取得し、適応性と精度を向上させることができます。この強力なツールキットは、多様なユーザーの問い合わせを処理できるインテリジェントなチャットボットまたは仮想アシスタントを作成するのに理想的です。
PIPを使用して、必要なPythonパッケージをインストールすることから始めます。
<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ターボモデルと相互作用するために重要です。
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
クラスを利用しますWebページからプレーンテキストを抽出するカスタムツールを作成します。
<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からBasetoolをインポートします BS4からBeautifulSoupをインポートします リクエストをインポートします クラスWebPageTool(Basetool): #...(元の応答のようなクラスの定義)...
新しいツールと更新されたシステムプロンプトでエージェントを再活性化します。次のような例でテストしてください:
conversational_agent.run( "https://techcrunch.com/?todayにクラブハウスに関する記事がありますか」) conversational_agent.run( "www.cbsnews.com/?"のトップストーリーは何ですか?」)
このチュートリアルでは、Langchainを使用して非常に適応性のある会話エージェントの構築を示しています。モジュラー設計により、拡大とカスタマイズが簡単になります。このエージェントは、AIとリアルタイムデータアクセスを組み合わせる力を示しています。
(元の応答と同じFAQ、より良い流れと簡潔さのために言い換えられます。)
以上がLangchainでカスタムツールとエージェントをセットアップしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。