ホームページ > テクノロジー周辺機器 > AI > Langchainでカスタムツールとエージェントをセットアップします

Langchainでカスタムツールとエージェントをセットアップします

William Shakespeare
リリース: 2025-03-20 10:19:12
オリジナル
919 人が閲覧しました

このチュートリアルでは、Langchainを使用して、大規模な言語モデル(LLM)と外部ツールとAPIを統合する強力なフレームワークを使用して、多用途の会話型AIエージェントを構築することを示しています。このエージェントは、乱数の生成や哲学的な黙想の提供から、Webページから情報を動的に取得および処理することまで、多様なタスクを実行できます。事前に構築されたカスタムツールとカスタムツールの組み合わせにより、リアルタイム、コンテキスト対応、有益な応答が可能になります。

主要な学習成果

  • LANGCHAINとLLMSおよび外部リソースとの統合をマスターします。
  • 会話エージェント内の特殊な機能のカスタムツールを開発および実装します。
  • 正確な応答のためにライブWebデータを効率的にフェッチおよび処理します。
  • コヒーレントな相互作用のコンテキストを保持する会話エージェントを構築します。

*この記事は、***データサイエンスブログソンの一部です。

目次

  • なぜLangchain、Openai、Duckduckgoを組み合わせるのですか?
  • 必要なパッケージのインストール
  • APIアクセスの構成
  • LangchainをOpenaiモデルに接続します
  • Web検索ツールの統合
  • カスタム関数の作成
  • カスタムツールで会話エージェントを構築します
  • WebスクレイピングのためにToolクラスを利用します
  • 結論
  • よくある質問

なぜLangchain、Openai、Duckduckgoを組み合わせるのですか?

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>
ログイン後にコピー

Langchainでカスタムツールとエージェントをセットアップします

APIアクセスの構成

OpenAI APIキーを取得し、環境変数として設定します。

 <code>import os os.environ["OPENAI_API_KEY"] = "your_openai_key_here"</code>
ログイン後にコピー

"your_openai_key_here"を実際のキーに置き換えます。これは、GPT-3.5ターボモデルと相互作用するために重要です。

LangchainをOpenaiモデルに接続します

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)は、一貫した応答を保証します。

Web検索ツールの統合

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>
ログイン後にコピー

LangchainでカスタムツールとエージェントをセットアップしますLangchainでカスタムツールとエージェントをセットアップしますLangchainでカスタムツールとエージェントをセットアップします

システムプロンプトのカスタマイズ

システムプロンプトを調整してエージェントの動作を改良します。

 <code># system prompt conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template</code>
ログイン後にコピー

Langchainでカスタムツールとエージェントをセットアップします

 <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>
ログイン後にコピー

エージェントを再テストします。

LangchainでカスタムツールとエージェントをセットアップしますLangchainでカスタムツールとエージェントをセットアップします

Webスクレイピングのために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でカスタムツールとエージェントをセットアップしますLangchainでカスタムツールとエージェントをセットアップしますLangchainでカスタムツールとエージェントをセットアップします

結論

このチュートリアルでは、Langchainを使用して非常に適応性のある会話エージェントの構築を示しています。モジュラー設計により、拡大とカスタマイズが簡単になります。このエージェントは、AIとリアルタイムデータアクセスを組み合わせる力を示しています。

キーテイクアウト

  • LangChainは、モジュラーエージェントの構築を可能にします。
  • Webスクレイピングおよび検索ツールは、最新の情報を提供します。
  • カスタムツールは、特定のニーズに合わせてエージェントを調整します。
  • メモリ機能は会話のコンテキストを維持します。

よくある質問

(元の応答と同じFAQ、より良い流れと簡潔さのために言い換えられます。)

以上がLangchainでカスタムツールとエージェントをセットアップしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート