1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPT retrieval plugin + LangChainを試すメモ

Last updated at Posted at 2024-02-03

はじめに

前回までにConohaVPSに構築したPostgreSQL+pgvector+ChatGPT retrieval pluginをローカルPCからLangChainで試します。
社内文書の検索やQAの無人化などに使えればと考えて検証をしました。

環境について

ConohaVPSのretrieval pluginには自宅のNASを経由してSSHトンネルで接続しています。
Anaconda上にPython 3.11環境を構築し、その上でJupyterNotebookを利用しています。
このあたりの導入については、他のブログなどを参考にしてください。

LangChainを試す

まずは必要になるパッケージを導入します。

!pip install langchain
!pip install langchain-openai
!pip install openai

次にOpenAIのAPIキー、retrieval pluginのBearerトークンを設定します。

import os
os.environ["OPENAI_API_KEY"] = "sk-...(OpenAIのAPIキー)"
from langchain.retrievers import ChatGPTPluginRetriever
retriever = ChatGPTPluginRetriever(
    url="http://192.168.0.xxx:8000(retrieval pluginのIP及びポート)", 
    bearer_token="ey...(Bearerトークン)"
)

RetrivalQAのキーチェーンの作成
langchain.chat_modelsを利用することで使う大規模言語モデルを指定することができます。
利用可能なモデルやパラメータなどは下記URLに記載されています。
https://platform.openai.com/docs/models
https://platform.openai.com/docs/api-reference/chat/create

from langchain_openai import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
qa = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model_name="gpt-3.5-turbo-0125", temperature=0),
    #llm=ChatOpenAI(model_name="gpt-4", temperature=0),
    chain_type="stuff", 
    retriever=retriever
)

検証

簡単なQAを試す

qa.run("SiriLでは天体写真のどのような画像処理が可能ですか?日本語で教えてください。")

image.png
上記のような回答が返ってきました。
この結果がドキュメントのどの個所を参照されたかを確認するためにはreturn_source_documents=Trueを指定してキーを作成します。

from langchain_openai import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
qa = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model_name="gpt-3.5-turbo-0125", temperature=0),
    #llm=ChatOpenAI(model_name="gpt-4", temperature=0),
    chain_type="stuff", 
    retriever=retriever,
    input_key="question", return_source_documents=True
)

再度質問をします。上記設定をするとrunが使えなくなるので下記のような形で問い合わせと結果を確認します。

result=qa("SiriLでは天体写真のどのような画像処理が可能ですか?日本語で教えてください。")
print(result)

image.png

参照されたドキュメントの箇所などを確認することができます。

API使用量など

  • PDFファイルをインポートしたときのリクエストアクティビティは下記のグラフを参照してください。
    image.png

  • 数回質問した後のGPT-3.5TurboとGPT-4のリクエストアクティビティは下記のグラフを参照してください。
    image.png

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?