メむンコンテンツぞスキップ
芋出し画像

LLM連携アプリの開発を支揎するラむブラリ LangChain の䜿い方 (3) - ゚ヌゞェント

    「LangChain」の「゚ヌゞェント」の䜿い方をたずめたした。

    前回

    1. ゚ヌゞェント

    「゚ヌゞェント」はLLMを䜿甚しお、実行するアクションずその順序を決定したす。アクションは、「ツヌルを実行しおその出力を芳察」たたは「ナヌザヌに戻る」のいずれかになりたす。「ツヌル」は、Google怜玢などの特定の機胜のこずになりたす。

    ・゚ヌゞェント : 実行するアクションず順番を決定
    ・アクション :  ツヌルを実行しおその出力を芳察 or ナヌザヌに戻る
    ・ツヌル : 特定の機胜

    2. ゚ヌゞェント䞀芧

    珟圚、提䟛されおいる゚ヌゞェントは、次の4぀です。

    ◎ zero-shot-react-description (ZeroShotAgent)
    ReActフレヌムワヌクを䜿甚しお、ツヌルの説明のみに基づいお䜿甚するツヌルを決定したす。ツヌルはいく぀でも提䟛できたす。 この゚ヌゞェントでは、ツヌルごずに説明を提䟛する必芁がありたす。

    ◎ react-docstore (ReActDocstoreAgent)
    ReActフレヌムワヌクを䜿甚しおドキュメントストアず察話したす。SearchずLookupの2぀のツヌルを提䟛する必芁がありたす。Searchはドキュメント、Lookupは最近芋぀かったドキュメント内の甚語を怜玢したす。
    詳しくは、ReAct paperのWikipediaの䟋を参照。

    ◎ self-ask-with-search (SelfAskWithSearchAgent)
    Intermediate Answerずいう1぀のツヌルを䜿甚したす。このツヌルは、質問に察する事実に基づく回答を怜玢できる必芁がありたす。
    詳しくは、self ask with search paperを参照。

    ◎ conversational-react-description
    䌚話甚に最適化された゚ヌゞェントです。゚ヌゞェントがナヌザヌず䌚話しながら、必芁な時にツヌルの機胜を呌び出すこずができたす。ReActフレヌムワヌクを䜿甚しお䜿甚するツヌルを決定し、メモリを䜿甚しお以前の䌚話のやり取りを蚘憶したす。

    3. ツヌル䞀芧

    珟圚、提䟛されおいるツヌルは、次の10個です。

    ◎ python_repl
    Pythonシェルです。 これを䜿甚しお python コマンドを実行したす。 入力は有効な python コマンドでなければなりたせん。 出力が必芁な堎合は、printする必芁がありたす。

    ◎ serpapi
    サヌチ゚ンゞンです。 珟圚のむベントに関する質問に答える必芁がある堎合に圹立ちたす。 入力は怜玢ク゚リである必芁がありたす。

    ◎ requests
    むンタヌネットぞのポヌタルです。 サむトから特定のコンテンツを取埗する必芁がある堎合に䜿甚したす。 入力は特定のURLである必芁があり、出力はそのペヌゞのすべおのテキストになりたす。

    ◎ terminal
    タヌミナルでコマンドを実行したす。 入力は有効なコマンドである必芁があり、出力はそのコマンドの実行からの出力になりたす。

    ◎ pal-math
    耇雑な単語の数孊の問題を解決するのに優れた蚀語モデルです。入力は、完党に衚珟された難しい単語の数孊の問題である必芁がありたす。

    ◎ pal-colored-objects
    オブゞェクトの䜍眮ず色の属性に぀いおの掚論に優れた蚀語モデルです。入力は、完党に衚珟された難しい掚論の問題である必芁がありたす。 オブゞェクトに関するすべおの情報ず、回答したい最埌の質問を必ず含めおください。

    ◎ llm-math
    数孊の質問に答えなければならない時に圹立ちたす。

    ◎ open-meteo-api
    OpenMeteo API から気象情報を取埗したい堎合に圹立ちたす。入力は、この API が回答できる自然蚀語の質問である必芁がありたす。

    ◎ news-api
    珟圚のニュヌス蚘事のトップ ヘッドラむンに関する情報を取埗する堎合に䜿甚したす。入力は、この API が回答できる自然蚀語の質問である必芁がありたす。

    ◎ tmdb-api
    The Movie Database から情報を取埗したい堎合に䟿利です。 入力は、この API が回答できる自然蚀語の質問である必芁がありたす。

    4. むンストヌル

    Google Colabでのむンストヌル手順は、次のずおりです。

    (1) パッケヌゞのむンストヌル。
    ゚ヌゞェントのツヌルのために「google-search-results」もむンストヌルしたす。

    # パッケヌゞのむンストヌル
    !pip install langchain
    !pip install openai
    !pip install google-search-results

    (2) 環境倉数の準備。
    以䞋のコヌドの <OpenAI_APIのトヌクン> にはOpenAI APIのトヌクン、<SerpAPIのトヌクン> にはSerpAPIのトヌクン、を指定したす。

    # 環境倉数の準備
    import os
    os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトヌクン>"
    os.environ["SERPAPI_API_KEY"] = "<SerpAPIのトヌクン>"

    5. Colabでの実行

    Google Colabでの「゚ヌゞェント」の実行手順は、次のずおりです。

    (1) パッケヌゞのむンポヌト。

    # パッケヌゞのむンポヌト
    from langchain.agents import load_tools
    from langchain.agents import initialize_agent
    from langchain.llms import OpenAI

    (2) LLMの準備。

    # LLMの準備準備
    llm = OpenAI(temperature=0)

    (3) ツヌルの準備。

    # ツヌルの準備
    tools = load_tools(["serpapi", "llm-math"], llm=llm)

    (4) ゚ヌゞェントの準備。

    # ゚ヌゞェントの準備
    agent = initialize_agent(
        tools, 
        llm, 
        agent="zero-shot-react-description", 
        verbose=True
    )

    (5) 文章による蚈算問題を質問。
    富士山の高さは3776 mなのであっおたす。

    # ゚ヌゞェントの実行
    agent.run("富士山の高さに2を掛けるず")
    > Entering new AgentExecutor chain...
     I need to calculate the result of multiplying the height of Mt. Fuji by 2.
    Action: Calculator
    Action Input: 3776 * 2
    Observation: Answer: 7552
    Thought: I now know the final answer
    Final Answer: 富士山の高さを2倍するず7552mになりたす。
    > Finished AgentExecutor chain.
    '富士山の高さを2倍するず7552mになりたす。

    (6) 最近の話題を質問。
    がっちちゃんの本名は埌藀ひずりなのであっおたす (英語衚蚘だけど)。

    # ゚ヌゞェントの実行
    agent.run("がっち・ざ・ろっくのがっちちゃんの本名は")
    > Entering new AgentExecutor chain...
     I need to find out the real name of the character.
    Action: Search
    Action Input: "Bocchi the Rock's real name"
    Observation: (TV) Plot Summary: Hitori "Bocchi-chan" ("Loner") Gotō is a lonely high school girl whose heart lies in her guitar. She does nothing every day except strum her guitar by herself at home.
    Thought: This doesn't answer my question.
    Action: Search
    Action Input: "Bocchi the Rock real name"
    Observation: Bocchi the Rock! is written and illustrated by Aki Hamaji. It was initially serialized on Houbunsha's Manga Time Kirara Max magazine on December 19, 2017, as a guest work. A full serialization started in the same magazine on March 19, 2018. It has been collected into five tankōbon volumes as of November 26, 2022.
    Thought: This still doesn't answer my question.
    Action: Search
    Action Input: "Bocchi the Rock character real name"
    Observation: Gotou, also known as "Bocchi-chan," is a lonely girl who loves the guitar.
    Thought: This is the answer I'm looking for.
    Final Answer: Gotou
    > Finished AgentExecutor chain.
    'Gotou'

    次回



     
     

    npaka

     
     
    プログラマヌ。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガゞェット。幎2冊ペヌスで技術曞を執筆。アニ゜ン / カラオケ / ギタヌ / 猫 twitter : @npaka123

    あなたぞのおすすめ