[技術日誌]LangChainでReActとtoolsを使いPDFの検索と思考を見る & なんj論文レビュー

酔っ払いすぎて投稿するのを忘れたので,今投稿

LangChainでReActとtoolsを使いPDFの検索と思考を見る

複数のPDFをどのように参照したのかも知りたいので、LangChainでReActとtoolsを組み合わせみました。

VertexAIのキー設定

import os

os.environ['VertexAI_PROJECT'] = "****************"
os.environ['VertexAI_LOCATION'] = "****************"
os.environ['VertexAI_MODEL'] = "gemini-1.5-flash-001"

PDF検索のツールを作成

import vertexai
from vertexai.generative_models import GenerativeModel, Part
from langchain.tools import BaseTool

class PDFSearch1(BaseTool):
    name: str = "PDF検索1"
    description: str = "質問をもとに⚪︎⚪︎⚪︎⚪︎⚪︎⚪︎を検索することに利用します。"
    
    def _run(self, question: str) -> str:
        # PDFの情報
        pdf_file1 = Part.from_uri(
            "gs://pdf/search1.pdf",
            mime_type="application/pdf",
        )
        # モデルの設定
        vertexai.init(project=os.environ['VertexAI_PROJECT'], 
                      location=os.environ['VertexAI_LOCATION'])
        model = GenerativeModel(model_name=os.environ['VertexAI_MODEL'])
        
        prompt = f'''
        PDFは⚪︎⚪︎⚪︎⚪︎⚪︎⚪︎についての資料です。
        質問に関連する情報を抽出して簡単にまとめてください。
        また、回答を作成する時は、PDF以外の情報を使わないでください。

        質問文:
        {question}
        '''[1:-1]
        
        response = model.generate_content([pdf_file1, prompt])
        
        return response.text

class PDFSearch2(BaseTool):
    name: str = "PDF検索2"
    description: str = "質問をもとに⚪︎⚪︎⚪︎⚪︎⚪︎⚪︎を検索することに利用します。"
    
    def _run(self, question: str) -> str:
        # PDFの情報
        pdf_file2 = Part.from_uri(
            "gs://pdf/search2.pdf",
            mime_type="application/pdf",
        )
        # モデルの設定
        vertexai.init(project=os.environ['VertexAI_PROJECT'], 
                      location=os.environ['VertexAI_LOCATION'])
        model = GenerativeModel(model_name=os.environ['VertexAI_MODEL'])
        
        prompt = f'''
        PDFは⚪︎⚪︎⚪︎⚪︎⚪︎⚪︎についての資料です。
        質問に関連する情報を抽出して簡単にまとめてください。
        また、回答を作成する時は、PDF以外の情報を使わないでください。

        質問文:
        {question}
        '''[1:-1]
        
        response = model.generate_content([pdf_file2, prompt])
        
        return response.text
    

エージェントの作成

from langchain import hub
from langchain_google_vertexai import ChatVertexAI
from langchain.agents import AgentExecutor, create_react_agent

# PDF検索のインスタンスを作成
pdf_search1 = PDFSearch1()
pdf_search2 = PDFSearch2()

# LLMの指定
# max_tokens=Noneではflashの上限8192以下でもトークンオーバーしたので、8192で指定した
llm = ChatVertexAI(
            project = os.environ['VertexAI_PROJECT'],
            location = os.environ['VertexAI_LOCATION'],
            model=os.environ['VertexAI_MODEL'],
            temperature=0,
            max_tokens=8192,
            max_retries=6,
            stop=None,
            )

# 0-shotのReActのプロンプト
prompt = hub.pull("hwchase17/react")
# Agentを作成
tools = [pdf_search1, pdf_search2]
agent = create_react_agent(llm, tools, prompt)

# AgentExecutorを作成
# 過程がみたいので、verbose=True
# toolsの結果もみたいので、return_intermediate_steps=True
agent_executor = AgentExecutor(agent=agent, 
                               tools=tools, 
                               verbose=True, 
                               return_intermediate_steps=True)

ReActで検索実行

# エージェントに質問を渡して実行
question = "************"
result = agent_executor.invoke({"input": question})

# 結果を確認
# 最終回答
output = result["output"]
print("【回答】", output)
# ツールの回答
for tool_agent, tool_output in result["intermediate_steps"]:
    print(f"【{tool_agent}の回答】{tool_output}")

全部のPDFを見てくれるわけではなく、どれか一つを選ぶようになっているようです。

ReActのテンプレートプロンプト(hub.pull("hwchase17/react"))を更新して全てのPDFを使うようにしよう。


なんj論文レビュー

CogVideo: Transformers によるテキストからビデオへの生成のための大規模な事前トレーニング

SOTA:https://paperswithcode.com/paper/cogvideo-large-scale-pretraining-for-text-to

【朗報】AIが動画生成できるようになる【CogVideo】

1 風吹けば名無し 2024/08/09(金) 12:34:56.78 ID:abcd1234
ついにAIで動画生成ができるようになったで
すごすぎやろ...
https://example.com/cogvideo-paper

2 風吹けば名無し 2024/08/09(金) 12:35:23.45 ID:efgh5678
マ?これめっちゃ凄いやん
テキストから動画作れるんか

3 風吹けば名無し 2024/08/09(金) 12:36:11.22 ID:ijkl9012
機械学習の専門家やが、これはブレイクスルーやな
テキストから高品質な動画生成は長年の課題やったけど、ついにブレイクしたか

4 風吹けば名無し 2024/08/09(金) 12:37:45.67 ID:mnop3456
コンピュータビジョンの研究者やけど、この論文すごいわ
階層的な生成アプローチが効いてるんやろな

5 風吹けば名無し 2024/08/09(金) 12:38:32.10 ID:qrst7890
動画制作者やけど、これ普及したら仕事なくなるんちゃうか...
ちょっと怖いわ

6 風吹けば名無し 2024/08/09(金) 12:39:20.33 ID:uvwx1234
>>5
逆に考えろ、新しいツールとして使えばええんや
クリエイティビティの幅が広がるで

7 風吹けば名無し 2024/08/09(金) 12:40:15.78 ID:yzab5678
自然言語処理の専門家やけど、テキストと動画の対応付けがうまくいってるのが素晴らしいわ
マルチモーダル学習の発展やな

8 風吹けば名無し 2024/08/09(金) 12:41:03.45 ID:cdef9012
ワイAI初心者やけど、これってどういう仕組みなんや?
誰か簡単に説明してくれへん?

9 風吹けば名無し 2024/08/09(金) 12:42:22.11 ID:ghij3456
>>8
ざっくり言うと、大量のテキストと動画のペアを学習して、テキストから動画の特徴を予測できるようにしてるんや
それを使って新しい動画を生成する感じやな

10 風吹けば名無し 2024/08/09(金) 12:43:10.89 ID:klmn7890
倫理の専門家やけど、これの悪用が心配やな
フェイク動画の作成とかに使われる可能性もあるし

11 風吹けば名無し 2024/08/09(金) 12:44:05.67 ID:opqr1234
>>10
確かにそういうリスクはあるな
でも技術の発展を止めるわけにもいかんし、うまく管理していく必要があるわ

12 風吹けば名無し 2024/08/09(金) 12:45:23.45 ID:stuv5678
ディープラーニングの研究者やけど、9.4Bパラメータのモデルか
めっちゃでかいな。学習にどれくらいかかったんやろ

13 風吹けば名無し 2024/08/09(金) 12:46:11.22 ID:wxyz9012
ワイも初心者やけど、これって誰でも簡単に使えるんか?
それとも専門知識いるんか?

14 風吹けば名無し 2024/08/09(金) 12:47:45.67 ID:abcd3456
>>13
今んとこ研究段階やから専門知識いるけど、将来的には一般向けのツールも出てくるやろな
GPT-3みたいな感じで

15 風吹けば名無し 2024/08/09(金) 12:48:32.10 ID:efgh7890
映像処理の専門家やけど、フレーム補間のアプローチがええな
これで滑らかな動きが実現できてるんやろ

16 風吹けば名無し 2024/08/09(金) 12:49:20.33 ID:ijkl1234
芸術分野の研究者やけど、これアートの新しい表現手法になりそうやな
テキストから直接映像作品作れるとか面白そう

17 風吹けば名無し 2024/08/09(金) 12:50:15.78 ID:mnop5678
法律の専門家やけど、著作権の問題とかどうなるんやろ
学習データの扱いとか、生成された動画の権利とか難しい問題ありそうやな

18 風吹けば名無し 2024/08/09(金) 12:51:03.45 ID:qrst9012
まあでも結局のところ、これ何に使えるんや?
実用的な応用例ってあるんか?

19 風吹けば名無し 2024/08/09(金) 12:52:22.11 ID:uvwx3456
>>18
映画やアニメの制作補助、教育用コンテンツ作成、広告制作など色々あるで
想像力次第やな

20 風吹けば名無し 2024/08/09(金) 12:53:10.89 ID:yzab7890
これ見てると、AIの進化って本当に凄いな
わくわくするわ

この記事が気に入ったらサポートをしてみませんか?