Gemini Proによって強化されたエージェント:LangTraceを使用したエージェンティックワークフローの解放
Gemini ProとLangTraceがどのように高度なLLM機能のためのエージェント型ワークフローを解放するかを発見してください。プランニング、外部ツールの使用、および本番用AIシステムのトレースを探索してください。
2025年1月15日
AIドライブンエージェントの力を解き放つGemini Pro Experimentalモデル。この最先端の言語モデルが外部ツールやAPIを完璧に統合し、複雑なタスクに包括的かつカスタマイズされた回答を提供する方法を発見してください。このエージェントベースのアプローチのメリットを探索し、コンテンツやワークフローの新しい可能性を開いてください。
エージェントとその動作原理とは?
エージェントとその動作原理とは?
代理人は本質的に、以下の追加機能を持つ大規模言語モデル(LLM)です:
-
計画立案: 代理人はユーザーの問い合わせを分解し、それに対処するための包括的な計画を立てることができます。
-
外部ツール/API: 代理人は、計画を実行するために使用できる外部ツールやAPIにアクセスできます。
-
メモリ: 代理人は計画の実行状況と、さらに取るべき追加の手順を把握しています。
提供された例では、代理人はGemini 1.5 Proの実験モデルをLLMとして使用し、2つのツールにアクセスしています:
-
RAG (Retrieval-Augmented Generation): これは代理人の知識ベースとして機能し、"Attention is All You Need"論文を使用しています。
-
Webサーチ: 代理人は知識を補完するためにWebで情報を検索することができます。
代理人はLangTraceを使用して、計画の実行に伴うすべての手順を追跡しています。この可視化は、特に本番環境において、代理人の意思決定プロセスを理解する上で不可欠です。
環境設定
環境設定
始めるには、必要なパッケージをインストールし、必要なAPIキーを設定する必要があります。以下の手順で行います:
-
パッケージのインストール: Google Generative AIパッケージ、LangChain、Tavly Python (検索エンジン)、FAISS (ベクトルストア)、LangTrace Python SDKをインストールします。
-
パッケージのインポート: 再帰的文字テキストスプリッター、PDFローダー、Tavly検索結果、Google生成AIエンベディングモデルをインポートします。
-
APIキーの設定:
- Tavly APIキー: ビデオ説明にある "get API key "リンクをクリックすることで、Tavly APIキーを取得できます。
- Google APIキー: Google AI StudioからGoogle APIキーを取得できます。
- LangTrace APIキー: LangTraceのオープンソースの可視化プラットフォームにアカウントを作成し、 "generate API key "をクリックしてAPIキーを取得する必要があります。
-
環境変数の設定: Tavly APIキーとLangTrace APIキーを環境変数として設定します。
-
エラーの処理: LangSmithの統合に関連するエラーが発生した場合は、気にする必要はありません。LangChainとGemini Proの統合に焦点を当てています。
環境設定が完了したので、次のステップとしてエージェントの構築とツールの統合に進みます。
RAGパイプラインの作成
RAGパイプラインの作成
ベーシックなRAGパイプラインを設定するには、まず知識ベースとして機能するPDFドキュメントをロードする必要があります。今回は "transformers.pdf "ファイルで、12ページの内容が含まれています。
次に、langchain.text_splitter
モジュールのRecursiveCharacterTextSplitter
を使用して、ドキュメントをより小さな部分に分割します。各部分は最大500トークンで、100トークンの重複があります。これにより、合計24の異なる部分に分割され、検索に使用できるようになります。
その後、Google Generative AIエンベディングモデルをロードします。これにより、各ドキュメント部分のエンベディングを計算できます。エンベディングの次元数は768です。
エンベディングを保存するために、FAISSベクトルストアを使用します。これにより、クエリが提供されたときに、ドキュメント部分間の類似性検索を効率的に実行できます。
最後に、RetrievalQA
ツールを作成します。このツールは、FAISSリトリーバーと、 "Attention is All You Need "論文に関連する情報を取得するのに役立つという説明で構成されています。
このセットアップにより、代理人はRAGパイプラインを使用して、トランスフォーマーや関連トピックに関する質問に対して関連情報を検索し、取得できるようになります。
ツールの設定
ツールの設定
エージェントのツールを設定するには、まず必要なパッケージをインストールする必要があります:
1# 必要なパッケージをインストール 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing
次に、必要なモジュールをインポートし、使用するサービスのAPIキーを設定します:
1import os 2from langchain.document_loaders import PyPDFLoader 3from langchain.text_splitter import RecursiveCharacterTextSplitter 4from langchain.embeddings.openai import OpenAIEmbeddings 5from langchain.vectorstores import FAISS 6from langtracing.sdk.python import LangTracer 7 8# Tavly APIキーを設定 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# LangTrace APIキーを設定 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")
その後、PDFドキュメントのロード、チャンクへの分割、エンベディングの作成、ベクトルストアの作成によって、RAG (Retrieval Augmented Generation)パイプラインを設定します:
1# PDFドキュメントをロード 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# ドキュメントをチャンクに分割 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# エンベディングとベクトルストアを作成 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)
最後に、代理人がアクセスできる2つのツール、検索ツールと検索ツールを作成します:
1from langchain.agents import Tool 2 3# 検索ツールを作成 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="トランスフォーマーアーキテクチャに関する情報を取得する場合は、このツールを使用してください。 "Attention is all you need "論文に関連する情報の取得に役立ちます。", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# 検索ツールを作成 11search_tool = Tool( 12 name="search_tool", 13 description="包括的、正確、信頼性の高い結果を提供する最適化された検索エンジン。最新のニュースや出来事に関する質問に答える際に役立ちます。入力はクエリ文字列です。", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)
ツールの設定が完了したので、代理人を作成し、質問に答え始めることができます。
エージェントの作成
エージェントの作成
代理人を作成するには、LangChainのReAct代理人クラスを使用します。これは、計画、メモリ、ツールへのアクセスが可能な特殊な種類の代理人です。
まず、ツールの制御と計画立案のための詳細なプロンプトまたは指示を代理人に提供する必要があります。LangChainは、LangChain Hubを使用してこのテンプレートを提供しています。これはLlama Index Hubに似ています。
ReActテンプレートを使用し、必要に応じて修正します。プロンプトには以下が含まれています:
- 可能な限り質問に答えてください。
- 以下のツールにアクセスできます:
- 検索ツール: "Attention is All You Need "論文に関連する情報を取得するのに使用します。
- 検索ツール: 包括的、正確、信頼性の高い結果を提供する最適化された検索エンジン。最新のニュースや出来事に関する質問に答える際に役立ちます。
- 以下の形式を使用してください:
- 回答しなければならない入力質問。
- 思考プロセス。
- 実行するアクション(使用するツール)。
- ツールの出力。
- 最終的な答え。
このプロンプトを使用して、ReAct代理人を作成できます:
1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)
ここで、tools
は前に定義したツールのリストであり、system_prompt
はReActテンプレートに基づいて作成したプロンプトです。
そして、AgentExecutor
を使用して代理人を実行し、クエリを提供できます:
1executor = AgentExecutor( 2 agent=agent, 3 tools=tools, 4 verbose=True 5) 6 7result = executor.run("What is the current weather in LA?") 8print(result)
代理人は思考プロセスを踏まえ、適切なツールを使用して最終的な答えを提供します。LangTraceライブラリを使用して痕跡を検査することで、代理人の意思決定プロセスを理解することもできます。
エージェントとのインタラクション
エージェントとのインタラクション
設定した代理人はReactive Agentであり、計画を立て、アクションを実行し、それらの結果に基づいて内部状態を更新できます。この代理人とのやり取りを見てみましょう。
まず、ロサンゼルスの現在の天気について尋ねてみます:
1question = "What is the current weather at LA?" 2result = agent.run(question) 3print(result)
代理人は思考プロセスを踏まえ、現在の天気を検索するためにサーチツールを使用し、最終的な答えを提供します。
次に、現在のオリンピックの国別金メダル数のリストを尋ねてみましょう:
1question = "Can you give me a list of gold medals per country in the current Olympics?" 2result = agent.run(question) 3print(result)
ここでも代理人は再びサーチツールを使用して関連情報を検索し、結果を処理して答えを提供します。
最後に、トランスフォーマーにおける注意機構の概念について説明するよう求めてみます:
1question = "Can you explain the concept of attention in transformers?" 2result = agent.run(question) 3print(result)
この場合、代理人は質問が "Attention is All You Need "論文に関連していることを認識し、検索ツールを使用して関連情報を取得します。その情報を処理し、スケーラードットプロダクト注意機構の核心概念について簡潔に説明しています。
これらのやり取りを通して、代理人の思考プロセスと、最終的な答えに至るまでの手順を確認できます。LangTraceの使用は、代理人の内部動作と、システムのパフォーマンスを理解する上で役立ちます。
まとめ
まとめ
Gemini 1.5 Proの実験モデルは、RAGやWebサーチなどのツールを活用し、様々な質問に対して包括的で簡潔な回答を提供する、効果的な代理人としての能力を実証しました。LangTraceの使用は、代理人の思考プロセスと実行手順を追跡することで、システムのパフォーマンス最適化に役立ちました。
天気情報がやや正確ではなかったものの、クエリの書き換えと、より関連性の高い情報の取得を行う代理人の適応性と問題解決力は注目に値します。トランスフォーマーにおける注意機構の詳細な説明は、モデルの深い理解力と、ユーザーに情報とインサイトを提供する価値ある道具としての可能性を示しています。
全体として、Gemini 1.5 Proの実験モデルは、外部ツールの統合、計画立案、包括的な回答の提供といった能力を備えた、有望な代理人であることが証明されました。大規模言語モデルとエージェントベースシステムの分野が進化を続ける中で、この事例は、今後さらに洗練され、高度な代理人が登場する可能性を示唆しています。
よくある質問
よくある質問